首页 > 解决方案 > 在汇编语言中移动光标位置可能不起作用

问题描述

嗨,我正在尝试使用 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

标签: assemblypositioncursormazeemu8086

解决方案


学习使用调试器并一步一步地逐条执行程序。

也许您会在标签p:上发现一个错误,您显然正在尝试使用WRITE CHARACTER TO STANDARD OUTPUT
在新位置打印符号, 但您忘记了设置。
AH=02h

就输入键的处理而言,另请参阅此问题


推荐阅读