我是新手,在 linux 中组装 NASM 有非常小的问题。我做了一个简单的练习程序,当你输入文字时,它会以星星的形式添加简单的装饰。预期的输出是:
*********EXAMPLE*********
反而:
*********EXAMPLE
*********
这是程序的完整代码(长),我使用 edb 检查代码并检查 EDX 寄存器是否与空字节检查的 len 匹配以打印正确的字符数。
section .data
prompt db "Please enter a word (MAX: 10 Characters) : ", 0xa, 0xd
plen equ $ - prompt
stars times 9 db "*"
section .bss
text resb 10
section .text
global _start
_start:
mov eax, 4
mov ebx, 1
mov ecx, prompt
mov edx, plen
int 0x80
mov eax, 3
mov ebx, 0
mov ecx, text
mov edx, 11
int 0x80
xor ecx, ecx
mov esi, text
mov ecx, 0
loop1:
inc ecx
cmp byte [esi + ecx], 0x00
jne loop1
push ecx
jmp printexit
printexit:
mov eax, 4
mov ebx, 1
mov ecx, stars
mov edx, 9
int 0x80
mov eax, 4
mov ebx, 1
mov ecx, text
pop edx
int 0x80
mov eax, 4
mov ebx, 1
mov ecx, stars
mov edx, 9
int 0x80
mov eax, 1
int 0x80