assembly - 在汇编语言中移动光标位置可能不起作用
问题描述
嗨,我正在尝试使用 emu8086 使用汇编语言构建迷宫游戏,该符号在迷宫中正确移动,但它的代码部分已从先前位置删除并且不在墙上移动,这可能不起作用,这可能是我的代码:
;current position
mov dh,r ;row
mov dl,c ;col
mov bh,0
mov ah,2
int 10h
read_input:
mov ah,7
int 21h
cmp al,120 ;x
je exit
cmp al,119 ;w
je movUp
cmp al,115 ;s
je movDown
cmp al,100 ;d
je movRight
cmp al,97 ;a
je movLeft
jmp read_input
;====================================================
;move player
movUp:
; delete symbol from current position
mov ah,2
mov dl,00
int 21h
;move cursor position upwards
dec r
mov dh,r
mov dl,c
mov bh,0
mov ah,2
int 10h
;read character at cursor position
mov ah,08h
mov bh,0
int 10h
;check if it's a wall block
cmp al,177
je back_wall
jmp p
;return cursor position downwards
back_wall:
inc r
mov dh,r
mov dl,c
mov bh,0
mov ah,2
int 10h
jmp read_input
;print symbol in the new position
p:
mov ah,2
mov dl,042
int 21h
inc score
jmp read_input
其他方向的逻辑相同
没有语法错误
它运行但好像没有中断 10h/08h
解决方案
学习使用调试器并一步一步地逐条执行程序。
也许您会在标签p:
上发现一个错误,您显然正在尝试使用WRITE CHARACTER TO STANDARD OUTPUT
在新位置打印符号,
但您忘记了设置。AH=02h
就输入键的处理而言,另请参阅此问题
推荐阅读
- c - GTK+3 大小分配事件不像 GTK+2 那样实时
- flutter - 如何使用 Streambuilder 和 firebase QuerySnapshot 使用 GroupedListView
- javascript - 如何在 CSS 中自动将 div 大小调整为其中的图像大小?
- javascript - 使用 Mongoose 从 MongoDB 中的对象中删除元素
- javascript - 如何创建阿拉伯键盘的脚本?
- azure - Azure 函数 - local.settings.json 与 launchSettings.json
- serenity-platform - 我在 Endpoint 中收到 system.string 值错误?
- php - PHPMailer 接受原始文件名作为附件,但不作为变量
- r - 嵌套类实例 (OOP) 上的 R 方法
- swift - Firestore - 如何将多个字段查询到单个数组