装配不打印空行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装配不打印空行相关的知识,希望对你有一定的参考价值。
我刚开始学习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
答案
问题是在该系统调用中,ECX
是一个指针,而不是您要打印的字符。也许这样修改它?
MOV byte [curr], 10
MOV ECX, curr
MOV EAX, 4
MOV EDX, 1
INT 0x80
以上是关于装配不打印空行的主要内容,如果未能解决你的问题,请参考以下文章