打印时NASM意外输出

时间:2018-09-01 22:51:02

标签: linux assembly x86 nasm keyboard-input

我是新手,在Linux中组装NASM有一个很小的问题。我制作了一个简单的练习程序,当您输入文字时,它会以星状形式添加简单的装饰。预期的输出是:

*********EXAMPLE*********

相反:

*********EXAMPLE
*********

这是程序的完整代码(长),我已经使用edb来检查代码,并检查EDX寄存器是否与len take相匹配(通过空字节检查)以打印正确的字符数。

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    

0 个答案:

没有答案