今天一个网友在一个汇编群里问了一个问题,内容差不多就是,如何在8086汇编中用int 16h号中断接收alt+方向键(用这个组 合键移动光标)。
然后我试了一下,发现,int 16h对这个组合键没反应。
然后我没找到原因,不过找了个替补方法,就是用一直循环用int al,60h读取当前按下的键,判断是不是我需要的键。
下面方向键都为扫描码:
alt键的通码是38h,断码是b8h。左方向键是4bh,右方向键是4dh,上方向键是48h,下方向键是50h。
代码:
assume cs:code,ds:data,ss:stack
stack segment
db 256 dup (0)
stack ends
data segment
var_x db 0
var_y db 0
db 256 dup (0)
data ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,256
mov ax,data
mov ds,ax
;置光标
mov ah,2
mov bh,0
mov dh,var_y
mov dl,var_x
int 10h
loopstart1:
in al,60h
cmp al,38h
je loopstart2
cmp al,01h
je finishloopstart1
jmp loopstart1end
loopstart2:
in al,60h
cmp al,0b8h
je finishloopstart2
cmp al,50h
je down
cmp al,48h
je up
cmp al,4bh