我刚刚结束了我的代码,可以覆盖您的密码。就像这样(FASM):
org 100h
mov cx, 16
petla:
mov ah,08h
int 21h
cmp al,0dh
je OK
mov ah,02h
mov dl,42
int 21h
cmp cx,0
je Fail
loop petla
Fail:
mov dl, 0ah
int 21h
mov dx, pass2
mov ah,9
int 21h
jmp koniec
OK:
mov dl, 0ah
int 21h
mov dx, pass
mov ah,9
int 21h
jmp koniec
koniec:
mov ah,4ch
int 21h
pass db 'Password OK', 0Ah, 0Dh, '$'
pass2 db 'Password Fail', 0Ah, 0Dh, '$'
现在我需要打印正版密码。我知道字符串缓冲区是必须的,缓冲区的声明应该如何,但我真的不知道如何使用它并让它工作。 打电话求救:) 欢呼声。
答案 0 :(得分:2)
由于您的程序允许输入 15个字符的密码,您可以使用以下命令设置缓冲区:
Buffer db 16 dup ("$")
在 petla 循环之前初始化DI寄存器,并通过stosb
指令将DOS函数中的ASCII代码放入缓冲区:
mov di, Buffer
mov cx, 16
petla:
mov ah,08h
int 21h
cmp al,0dh
je OK
stosb
mov ah,02h
mov dl,42
int 21h
;;;cmp cx,0
;;;je Fail
loop petla
请注意,在代码中的loop
指令之前,对CX = 0的计算是没用的。