问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编程序求助 使用DOS中断接收和处理键盘输入

发布网友 发布时间:2022-05-30 20:18

我来回答

1个回答

热心网友 时间:2023-11-11 12:15

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Enter_Chr endp
; -----------------------------------------
; 功能:输出回车换行
Enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Enter_CTLF endp
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10?
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
push cx
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
Byte_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AL
; 出口:AX=转换后的ASCII码
ByteD_ASCII Proc Near
push dx
push ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
cmp al,'9'
jbe $+7
mov dl,'0'
call Enter_Chr ;显示一个字符
mov dl,al
call Enter_Chr ;显示一个字符
mov dl,ah
call Enter_Chr ;显示一个字符
mov dl,'H'
call Enter_Chr ;显示一个字符
pop ax
pop dx
ret
ByteD_ASCII EndP
; -----------------------------------------
Prompt_Chr db 'Please input a charactor: $' ;输入字符提示信息
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Input_Chr: Output Prompt_Chr ;提示输入字符
mov ah,1 ;从键盘接受一个字符
int 21h
cmp al,1bh ;Esc?
jz Exit_Proc
CALL Enter_CTLF ;输出一个回车、换行
call ByteD_ASCII ;将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示
CALL Enter_CTLF ;输出一个回车、换行
CALL Enter_CTLF ;输出一个回车、换行
jmp Input_Chr ;接受下一个字符
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人类如何才能悬浮在空中? - 知乎 人体悬浮术是真的存在吗 人体怎样才能真正的在空中悬浮 小孩c蛋白反应高是什么原因 (2014?南海区二模)如图所示,物重G为2000N,小红用800N的拉力花2s的时间... 苹果13系列升级iOS15.5好吗? 出生2o12年11月20日2点姓石光字辈取名 求龙凤胎名字:2012年6月21日(农历5月初3)凌晨0点40分出生,大的为龙,小... by和take有什么区别 takeby后面跟交通工具的区别 使用DOS 系统功能调用时,使用的软中断指令是 汇编21号中断DOS功能调用是做什么的? 汇编21号中断DOS功能调用是做什么的? 怎么中断正在执行 DOS命令行 的线程 dos中断调用和bios中断调用的关系怎样 dos第九号中断是什么? BLOS中断和DOS中断的区别 BLOS中断和DOS中断的区别 bios中断和dos中断的区别 bios中断和dos中断的区别 dos功能号和中断号有什么不同 dos功能号和中断号有什么不同 怎样在dos界面中断程序但是不退出界面 怎样在dos界面中断程序但是不退出界面 dos命令如何中断和推出? dos中断调用 DOS中断的作用 急!!! 好声音4个sb什么意思 什么叫DOS中断? 同一风景不同心情感受不一样诗句 创新内置SB声卡连接机架后监听有沙沙声音音量不小 为什么SB5.1声卡已安装驱动没有声音? 挑战麦克风男主持人咋那么SB声音往死贱,还总喊MR.麦,长得跟猪哥似的,为什么不淘汰掉? 为什么有些SB玩CF喜欢把声音开很大 voice of sb/animal和sound of sth各是什么意思 索爱手机主题要有哪里下载 怎么制作手机主题呀! 我要SONY ERICSSON的T707! 麻烦各位啦! sony官网怎样下载手机应用,主题,游戏啊?我的手机是sony lt25c,急。。。 成都猿莱码网络科技有限公司怎么样? 女主倾国倾城的小说 《知否》中,盛弘是个怎样的人? 为什么大家说《知否》中盛紘挑女婿眼光好? 找一本穿越小说,日久生情,女主一穿过去就是男主的王妃,男主叫宇文什么。好像是三王爷,后来当了皇帝。 《知否》中,盛紘为什么就是不肯给墨兰找个好亲事? 求一本小说,里面有个武神排行榜,*的是武术,都是xx武神之类的, 《知否知否》:盛紘并不是老太太所生,为何不敢忤逆盛老太太? 有个小说主角父母研究创造生命被人害死主角出去游历学会了特别的修真方法回到都市看爷爷奶奶。 知否中,盛紘的官职是什么? 男主手上有个纹身是风,有个娱乐会所叫风亭,女主后来差点死了,但是只是手不能再习武了 为什么在《知否知否》中盛紘会宠妾灭妻呢?