提问人:Reii 提问时间:6/16/2023 更新时间:6/16/2023 访问量:11
组装 (NASM)
Assembly (NASM)
问:
我不知道如何在我的代码中修复这个错误
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
答: 暂无答案
评论