您好我是Assembly的新手,我正在创建一个程序,可以使用箭头键将光标移动到屏幕上的任何位置,这是我的代码:
mov si, 0
mov dh, 0
mov dl, 0
menu:
mov ah, 00h
int 16h
cmp ah, 48h ;Up Arrow key
je up
cmp ah, 50h ;Down Arrow key
je down
cmp ah, 4Dh ;Right Arrow key
je right
cmp ah, 4Bh ;Left Arrow key
je left
jmp exit
up:
mov ah, 3 ;Get current position
int 10h
mov ah, 2 ;Move cursor Up
sub dh, 1
int 10h
jmp menu
down:
mov ah, 3 ;Get current position
int 10h
mov ah, 2 ;Move cursor Down
add dh, 1
int 10h
jmp menu
right:
mov ah, 3 ;Get current position
int 10h
mov ah, 2 ;Move cursor Right
add dl, 1
int 10h
jmp menu
left:
mov ah, 2 ;Get current position
int 10h
mov ah, 3 ;Move cursor Left
sub dl, 1
int 10h
jmp menu
exit:
int 020
向上,向下和向右箭头键工作正常,但左箭头键似乎不起作用。我希望你能告诉我为什么。谢谢!
答案 0 :(得分:1)
将评论移至答案,以便关闭:
对于所有其他情况,首先读取位置(ah = 3),然后设置位置(这是有意义的)。对于left
,您设置位置(ah = 2)然后读取位置。