程序集不会打印空行

时间:2017-12-31 01:21:01

标签: linux assembly x86 nasm

我刚开始学习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

1 个答案:

答案 0 :(得分:1)

问题是在该系统调用中,ECX是一个指针,而不是您要打印的字符。或许可以这样修改它?

 MOV byte [curr], 10
 MOV ECX, curr
 MOV EAX, 4
 MOV EDX, 1
 INT 0x80