汇编 输出问题 按键盘 上下左右输出对应指令

5024 2018-06-28 02:55:45
最近学习汇编写的,不知道为什么。输出总是有错误,跳转也有毛病,望各位大神帮我指正,万分感谢
assume cs:code, ss:stack, ds:data
stack segment
db 256 dup (0)
stack ends

data segment
dw 0,0
run db 'Game is runing...',0dh,0ah,'$'
up db 'Jump up...',0dh,0ah,'$'
down db 'Jump down...',0dh,0ah,'$'
right db 'shoot...',0dh,0ah,'$'
left db 'get bullet...',0dh,0ah,'$'
over db 'Byebye...',0dh,0ah,'$'
data ends

code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,256
go:
lea dx,run
mov ah,9
int 21h
call input
jmp go
input:
mov ah,01
int 21h
cmp al,48h
je shang
cmp al,50h
je xia
cmp al,4Dh
je zuo
cmp al,4Bh
je you
cmp al,01h
je stop
shang:
lea dx,up
mov ah,09h
int 21h
jmp input
xia:
lea dx,down
mov ah,09h
int 21h
jmp input
zuo:
lea dx,left
mov ah,09h
int 21h
jmp input
you:
lea dx,right
mov ah,9
int 21h
jmp input
stop:
lea dx,over
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
...全文
316 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
5024 2018-06-28
  • 打赏
  • 举报
回复
大佬,发了三个帖子每次都是您回复我的信息,感激不尽
说的直指要害,我dos中断初学,很多不懂,拜谢!
zara 2018-06-28
  • 打赏
  • 举报
回复
1. 最好不要用 01功能读入按键,因为它是回显的,即会把按键字符显示出来的,可以用 07功能,这个是不回显字符的;
2. 对 <Esc> 的判断是不对的,这个键是普通 ascii 键,应判断 al 是否为 1bh 或 ah 是否为 01h;只能那些功能键才是第一次读入时 al 为 00,第二次读入扫描码,它们是没有 ascii 码的;
功能类按键,可能用 int16h 更好些,至少通常一次就读入了,ascii 在 al 扫描码在 ah;
3. 是否为 <Esc> 判断为否的话,应该转去 input: 而不是顺着就到了 shang: 处来显示 Jump up...

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧