1

我是新手,在 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    
4

0 回答 0