- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、设计任务
编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上 显示与它等值的二进制数和十进制数。
掌握接受键盘数据的方法,了解将键盘数据显示时须转换为 ASCII 码的原理。 二、设计方案
(1)实现十六进制数向二进制数的转换
第一步:实现十六进制数的输入和对应二进制数的转换。利用 DOS 系统功能中的
1 号输入字符的功能,接收输入的十六进制数,将其转换成对应的二进制数(若
是 0-9 之间的数直接屏蔽高 4 位,若是 A-F 之间的数在屏蔽高 4 位后还要加 9)。
BX 中存放的是二进制数的结果,利用算数左移指令使 BX 左移 4 位,然后与下一 次转换后的数相加。如此循环 4 次,得到对应的二进制数。
第二步:实现显示转化后的二进制数。利用 ROL 和 RCL 指令,从最高位起循环取
出每位二进制数,将其转换成对应的 ASSCII 码,调用 DOS 系统功能调用中 2 号 功能显示。
(2)实现十六进制数向十进制数的转换。
第一步:从十六进制向二进制转换,由于十六进制和二进制的特殊关系,它们之 间的转换非常简单。
第二步:从二进制转换为十进制,方法是将要转换的二进制预先放到 AX 寄存器
中,判断 AX 中数的符号,若为负数,则将负号送入输出缓冲区,并求AX 的绝对
值;若 AX 中的数为正数,则不做其他处理,此时 AX 中即为无符号二进制数。然
后将无符号二进制数转换为十进制,可采用将 AX 除以 10,得到第一个商和第一
个余数,第一个余数就是所求十进制的个位,将第一个余数除以 10,得到第二
个商和余数,第二个余数就是十进制的十位数,重复以上过程,一直循环到商为
零时,得到的余数就是所求十进制的最高位数,这就是数制转换中常用的“除模 留余倒排列”法则。
三、流程图
开始
段寄存器和堆栈初始化
显示“请输入十六进制数”
调用 GETNUM 子程序,接收键入数值,
保存在 BX 中
计数值 16 送 CX
BX 中内容循环左移 1 位
BL 送 DL,屏蔽掉 DL 高 7 位
DL 加 30H,变成二进制数位对应字符的 ASCII 码
显示
CX 减 1 为零
返回 DOS
主程序框图
保存寄存器
DX 清零
读键入字符的 ASCII 码送 AL 中
是回车键?
N
(AL)<30H?
N
是数字 0~9?
N
是字母 A~F?
N
是字母 a~f?
将本次键入的数字加进 DX 中
显示“输入出错”信息
回车换行
恢复寄存器
返回
GETNUM 子程序框图
四、程序运行结果截图
通过设计和编写程序代码,运行程序后,其结果先为显示开始界面几位菜单界面,而后 随意输入一个小于 4 位的十六进制数,打完字敲回车,马上出现所对应的十进制数。当 连续输入 4 位的十六进制数直接输出十进制数,同时,再打回车,可以再输入十六进制 数,并且可以循环运行。
五、附录(程序源代码,要求有必要的注释) (1)十六进制转换为二进制
CRLF MACRO
MOV AH,02H
MOV DL,ODH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS DB‘INPUT HEXNUMBER:$’
ERROR DB‘INPUT ERROR!’,0DH,0AH,‘$’
DATA ENDS
STACK SEGMENT
32 DUP(?)
?
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV SP,TOP
MOV AH,09H
MOV DX,OFFSET MESS
INT 21H ;显示提示输入的信息
CALL GETNUM ;接收键入数值送 DX
MOV CX,0010H ;16 位
MOV BX,DX
TTT: ROL BX,1 ;循环左移 1 位
MOV DL,BL
AND DL,01H ;屏蔽掉高 7 位
ADD DL,30H
MOV AH,02H
INT 21H ;显示二进制数位对应的 ASCII 字符 LOOP TTT
MOV AX,4C00H
INT 21H
GETNUM PROC NEAR ;子程序,接收键入数值送 DX
PUSH CX
XOR DX,DX
GGG: MOV AH,01H
INT 21H
CMP AL,0DH
JZ PPP
CMP AL,30H
JZ KKK
SUB AL,30H
CMP AL,0AH
JB GETS
CMP AL,11H
JB KKK
SUB AL,07H
CMP AL,0FH
JBE GETS
CMP AL,2AH
JB KKK
CMP AL,2FH
您可能关注的文档
- 微生物检验实验室生物安全柜标准操作规程.docx
- 微软亚洲研究院的管理方式.docx
- 德轩酒类贸易公司招聘管理制度.docx
- 心理咨询室管理员岗位职责.docx
- 心肌炎用药指南.docx
- 怎么骂醒一个快中考了还不好好学习的初三学生?初三该看,初一初二也该看看.docx
- 怎样做一个成功的演讲者(英汉对照).docx
- 快班冲100慢班保60 中考物理必杀技 首轮复习过关题 之6 浮力(答案).docx
- 怎样让员工留心留人.docx
- 思品品德课程工作教学计划.docx
- 2023年人教版初中物理知识点复习填空及答案.pdf
- 2023年高中学业水平合格性考试《历史》重点知识点总结.pdf
- 2023年人教版初中英语被动语态(知识点+练习题).pdf
- 2023年人教版新教材高一《英语》必修二全册课文翻译(英汉对照).pdf
- 2023年中考语文一轮复习:多音字 易错练习题精选汇编(含答案).pdf
- 2023年专升本自考《马克思主义基本原理概论》知识点整理.pdf
- ib文凭课程program du diplme bi physics paper 3 tz2 hl markscheme物理纸.pdf
- 2023年全国咨询工程师(投资)职业资格考试备考:工程项目组织与管理考点( 第二章).pdf
- 投资教父自豪盛大.pdf
- 内容毫米科学.pdf
文档评论(0)