组装 (NASM)

Assembly (NASM)

提问人:Reii 提问时间:6/16/2023 更新时间:6/16/2023 访问量:11

问:

我不知道如何在我的代码中修复这个错误

jdoodle.asm:70:错误:标签输入'最初在此处定义 jdoodle.asm:71:错误:标签二进制文件'最初在此处定义 jdoodle.asm:73:错误:标签换行符'最初在此处定义 ld:找不到 *.o:没有这样的文件或目录input' inconsistently redefined jdoodle.asm:2: info: label binary' inconsistently redefined jdoodle.asm:3: info: label newline' inconsistently redefined jdoodle.asm:4: info: label

程序必须接受十进制格式的正或负输入字符串。 在程序执行期间,用户必须键入输入字符串。 程序必须将输入字符串转换为二进制形式。 二进制形式必须显示在下一行。 程序必须不断向用户请求输入字符串。 当用户键入 zero(0) 作为输入字符串时,程序必须停止执行。

section .data
    input db 16 DUP ('$')   ; Buffer to store input string
    binary db 16 DUP ('$')  ; Buffer to store binary form of input string
    newline db 0Ah, 0       ; Newline character for displaying binary

section .text
    global _start

_start:
    ; Display prompt message
    mov eax, 4
    mov ebx, 1
    mov ecx, prompt
    mov edx, prompt_len
    int 0x80

input_loop:
    ; Read input string
    mov eax, 3
    mov ebx, 0
    mov ecx, input
    mov edx, 16
    int 0x80

    ; Check if input is zero
    cmp byte [input], '0'
    je stop_execution

    xor ecx, ecx           ; Clear ECX register

convert_loop:
    mov al, byte [input+1+ecx]
    sub al, '0'
    mov bl, al
    mov al, 2
    mul bl
    add al, '0'
    mov byte [binary+ecx], al
    inc ecx
    cmp byte [input+1+ecx], 0
    jne convert_loop

    ; Display binary form of input string
    mov eax, 4
    mov ebx, 1
    mov ecx, binary
    mov edx, ecx_len
    int 0x80

    ; Display newline
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80

    jmp input_loop

stop_execution:
    ; Terminate program
    mov eax, 1
    xor ebx, ebx
    int 0x80

section .data
    prompt db 'Enter a decimal number (0 to exit): '
    prompt_len equ $-prompt

section .bss
    input resb 16
    binary resb 16
    ecx_len equ $-binary
    newline resb 2

字符串 输入 十进制

评论


答: 暂无答案