我需要在汇编中打印一个单词10次,但在以前版本的问题中,我的代码只打印了1次。
如何删除null bytes?
这是一个固定的版本,如果内置在静态可执行文件中,则可以打印10次,因此EAX的高字节在此代码运行之前为零。
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov si,10
l1:
mov dl, len ;message length
mov ecx, msg ;message to write
mov bl, 1 ;file descriptor (stdout)
mov al, 4 ;system call number (sys_write)
int 0x80 ;call kernel
dec si
JNZ l1
mov al, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'test',0xa ; string
len equ $ - msg ;length of string
1条答案
按热度按时间dfty9e191#
我不知道我的回答是否会很有帮助,但我确实创建了一个运行10次的循环,这与你的有点不同。这是Linux的64位代码,不像使用32位系统调用的问题。