我刚开始学习x86程序集,我试着编写一个简单的程序,打印所有的ascii字符和一个换行符到标准输出。 除了换行符之外,它按预期打印所有内容,我无法弄清楚原因。 我在64位ubuntu操作系统上使用nasm编译它。 这是代码:
section .data
curr db ' '
section .text
global _start
_start:
next:
;print current character
mov eax,4
mov ebx,1
mov ecx,curr
mov edx,1
int 0x80
;check condition and increment curr
inc byte [curr]
cmp byte [curr],126
jle next
;new line and exit <--- doesn't work ???
mov eax,4
mov ebx,1
mov ecx,10
mov edx,1
int 0x80
mov eax,1
mov ebx,1
int 0x80
答案 0 :(得分:1)
问题是在该系统调用中,ECX
是一个指针,而不是您要打印的字符。或许可以这样修改它?
MOV byte [curr], 10
MOV ECX, curr
MOV EAX, 4
MOV EDX, 1
INT 0x80