汇编程序 - 如何使用 ENTER 结束写入密码

Assembler - How to end writing a password with ENTER

我正在做一个汇编编程作业,我无法通过这个问题。 任务是编写一个程序,用户在其中键入密码,控制台显示“*”而不是键入的字母。输入上述密码后,用户按“设置”密码的 ENTER,并要求用户再次输入相同的密码以检查它是否与之前设置的相同。

我让这段代码工作,它读取击键,保存输入的密码,然后将其写入控制台。但我无法让它在按下 ENTER 时停止。 (现在设置为只注册12个字母)

section .text
org 100h

xor si, si  
mov dl, '*'     

loop:               
    mov ah, 7           
    int 21h
    mov [letters+si], al        
        
    mov ah, 2           
    int 21h             
    inc si
    cmp si, 12
    jnz loop
    
xor si, si
write:
    mov dl, [letters+si]    
    int 21h         
    inc si
    cmp si, 12
    jnz write

end:
    mov ax, 4c00h 
    int 21h
    
section .bss
    letters resb 12

(从书架上拿了一本很旧的满是灰尘的书...)

mov ah, 7           
int 21h

这会从控制台读取一封信(没有回声)到 al.之后你将它存储在你的字符串中。这两行之后,在存储al之前,你必须检查它是否是回车键。在 DOS 中,回车键由两个字符表示,一个回车 return 和一个换行符。您只对其中一个感兴趣,(但您不想存储它们)。回车return为0xd,换行为0xa。所以你需要像

这样的东西
cmp al, 0dh
je endOfLoop; // place label before xor si, si