我正在Windows 64kb的Tetris游戏的Emu8086上对Assembly x86进行编程。我正在实现一个用于跌落零件的循环和一个用于移动零件的proc。我的问题是在移动中,如果我使用此代码来识别按键,则该部件将停止识别该命令:
TECLADO proc
xor ax,ax
mov AH,00h ; LE TECLADO
int 16h ; INT 16H FAZ RECONHECIMENTO DA TECLA DIGITADA
ret
endp
COMPTEC proc
call TECLADO
cmp ah,50H ;BAIXO
jz BAIX
cmp al,20h ; ESPACO
jz ESPACOW
cmp ah,4DH ; DIREITA
jz DIREITA
cmp ah,4BH ;ESQUERDA
jz ESQUERDA
DIREITA: .;IR PARA DIREITA
cmp dl,16h
jz FIMPC
mov bx,0
call ESC_STR_VIDEO
mov bx,2
inc dl
JMP FIMPC
ESQUERDA: ;IR PARA ESQUERDA
cmp dl,0fh
jz FIMPC
mov bx,0
call ESC_STR_VIDEO
mov bx,2
dec dl
JMP FIMPC
BAIX: ; IR PARA BAIXO
mov bx,0
call ESC_STR_VIDEO
mov bx,2
inc dh
cmp dh,15h
jz ESPACOW
JMP FIMPC
;;apagar:
;;call LIMPA_CAIXA
;;JMP FIMPC
ESPACOW:
xor dx,dx
mov dl,18 ; espacamento
mov dh,3 ;linha
mov bx,2
JMP FIMPC
FIMPC:
ret
endp
我也尝试在中断16h使用ah = 01h。但是我没有得到很好的结果。