You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汇编中如何为按键控制的屏幕移动元素设置边界?

汇编控制点移动:禁止第一行的点向上移动

我写了一段用wasd键控制字符点在ES(extra seg)段中移动的汇编代码,现在要实现:判断点是否处于第一行,若是则禁止向上移动。我问过老师是否需要用cmp指令,老师说不需要。

在实现向上移动的up过程时,我试过把BX设为0,循环检查SI是否和BX相等,直到BX超出第一行范围,但运行后按w键完全没反应。

最初的up过程代码:

proc up
    mov ah, 0
    mov al, ' '
    mov [es:si], ax
    
    sub si, 80*2
    mov ah, 156
    mov al, '*'
    mov [es:si], ax
  ret
endp up

尝试使用cmp的代码:

proc up
    mov ah, 0
    mov al, ' '
    mov [es:si], ax
    
        mov bx, 0
check:
    cmp bx, 80*2
    jz move
    cmp si, bx
    jz not_move
    inc bx
    jmp check
move:
    sub si, 80*2
    mov ah, 156
    mov al, '*'
    mov [es:si], ax
not_move:
  ret
endp up

内容的提问来源于stack exchange,提问作者yarden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:27:06