【发布时间】:2017-10-01 10:24:03
【问题描述】:
我已经编写了一个汇编代码来打印从 1 到 9 的数字,但是代码只打印 1,并且没有打印除 1 以外的其他元素,并且只接收到一个输出。这意味着循环也没有运行。我无法弄清楚我的代码有什么问题。
section .bss
lena equ 1024
outbuff resb lena
section .data
section .text
global _start
_start:
nop
mov cx,0
incre:
inc cx
add cx,30h
mov [outbuff],cx
cmp cx,39h
jg done
cmp cx,39h
jl print
print:
mov rax,1 ;sys_write
mov rdi,1
mov rsi,outbuff
mov rdx,lena
syscall
jmp incre
done:
mov rax,60 ;sys_exit
mov rdi,0
syscall
我的操作系统是 64 位 Linux。此代码是使用 nasm 和以下命令构建的:nasm -f elf64 -g -o num.o num.asm 和 ld -o num num.asm
【问题讨论】:
-
您可以在此处获取此信息stackoverflow.com/questions/31143237/…
-
学习使用调试器(
gdb应该可用,然后你可以尝试一些 GUI 扩展,或者我个人更喜欢edb-debugger,但你必须从源代码构建它,可能是如果你不习惯那会很棘手)。 -
您在收到答案后不应更改问题中的代码。这使问题变得不可见并使答案无效!