在装配中使用箭头键移动光标

时间:2017-09-24 08:12:25

标签: assembly

您好我是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

向上,向下和向右箭头键工作正常,但左箭头键似乎不起作用。我希望你能告诉我为什么。谢谢!

1 个答案:

答案 0 :(得分:1)

将评论移至答案,以便关闭:

对于所有其他情况,首先读取位置(ah = 3),然后设置位置(这是有意义的)。对于left,您设置位置(ah = 2)然后读取位置。