这是汇编中的一个函数,用于以2个字符串“size”和“per”,
来取自用户的输入
但它只需要1个输入然后开始崩溃。
我需要帮助。提前谢谢。
input:
mov si,0
lb :
mov ah,0
int 16h
cmp al,0x0d
je 2nd
mov [size + si],al
inc si
loop lb
2nd:
mov si,0
lb1:
mov ah,0
int 16h
mov [per + si],al
cmp al,0x0d
je 3rd
inc si
loop lb1
3rd:
ret
答案 0 :(得分:1)
要创建循环,不必使用loop
指令!
在第一个循环中,将字符存储在 size 中并在SI
中递增指针后,您需要始终跳回到循环的顶部。正确的指令是jmp lb
,无条件跳转到标签 lb 。
input:
mov si, 0
lb :
mov ah, 0
int 16h
cmp al, 0x0d
je 2nd
mov [size + si], al
inc si
jmp lb ; The unconditional jump
2nd:
在第二个循环中,在SI
中递增指针后,您需要始终跳回到此循环的顶部。然后正确的指令是jmp lb1
,无条件跳转到标签 lb1 。
mov si, 0
lb1:
mov ah, 0
int 16h
mov [per + si], al
cmp al, 0x0d
je 3rd
inc si
jmp lb1 ; The unconditional jump
3rd:
ret
您应该注意的一件事是检查 ENTER 键(ASCII 13):
这种差异可能不是你所期望的。