装配不打印空行

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

以上是关于装配不打印空行的主要内容,如果未能解决你的问题,请参考以下文章

Python中如何打印空行

装配:用不同颜色打印一条线

装配启动加载程序在虚拟PC上工作,而不是在真正的PC上

装配内联 AT&T 类型不匹配

Perl脚本在空行之间打印行

argparse 代码片段只打印部分日志