使用16号中断码
;控制上下左右方向 a61表示向左 w77表示向上 s73表示向下 d64表示向右
code segment
start:
mov ax,0B800H
mov es,ax
mov bx,0
scan:
mov ah,0H
int 16H
cmp al,61H
jne scan2 ;jne jump not equal
call left
jmp scan ;jump
scan2:
cmp al,77H
jne scan3
call top
jmp scan
scan3:
cmp al,73H
jne scan4
call down
jmp scan
scan4:
cmp al,64H
jne scan
call right
jmp scan
left:
mov es:[bx], ' '
mov es:[bx-2],'a'
sub bx,2
ret
top:
mov es:[bx], ' '
mov es:[bx-160],'a'
sub bx,160
ret
down:
mov es:[bx], ' '
mov es:[bx+160],'a'
add bx,160
ret
right:
mov es:[bx], ' '
mov es:[bx+2],'a'
add bx,2
ret
code ends
end start