




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 微机实验九 数码转换实验目的1. 掌握计算机常用数据编码之间的相互转换方法。2. 进一步熟悉DEBUG软件的使用方法1、 实验内容1. ACSII码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。将其转换成非压缩性(非组合型)BCD码后,再存入DATA2开始的单元中。若输入的不是十进制数,则相应单元中存放FFH。调试程序,用D命令检查执行结果。实验代码:1.DATA SEGMENT;定义数据段 DATA1 DB 21,?,21 DUP(?) ;建立一个内存区,第二个数存放最大字符数 DATA2 DB 21 D
2、UP(?) ;DATA2区定义DATA ENDSSTACK SEGMENT STACK ;定义堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;程序初始化 MOV DS,AX ;程序初始化 LEA DX,DATA1 ;DX存放DATA1的首地址 MOV AH,0AH ;从键盘中输入字符串 INT 21H ;调用INT21功能 LEA SI,DATA1 ;SI存放DATA1的首地址 INC SI ;指向LP1循环次数 MOV CL,SI ;存放LP1的循环次数 MOV
3、 CH,0 INC SI ;指向所输入的数 LEA DI,DATA2 ;DI存放DATA2的首地址LP1: MOV AL,SI ;将输入的数存放到AL中 CMP AL,30H ;AL与30H比较 JC LP2 ;AL<30H,则跳LP2 CMP AL,39H ;AL与39H比较 JA LP2 ;AL>39H,则跳LP2(JG与JA比较) SUB AL,30H ;将输入的字符转换成ASCII码 MOV BL,AL ;ALBLSAVE: MOV DI,BL ;BLDS:DI INC SI ;SI=SI+1 INC DI ;DI=DI+1 LOOP LP1 ;循环LP1 JMP EXIT
4、 ;跳转到EXITLP2: MOV BL,0FFH ;如果输入的不是十进制数,则在相应的单元中存放FFH JMP SAVE ;跳转到SAVEEXIT:MOV AH,4CH INT 21HCODE ENDSEND START 2. BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成2进制后存入DATA2字单元中。调试程序,用D命令检查执行结果。代码:STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW 1234HDATA2 DW ?DATA ENDS CODE SEGME
5、NT ASSUME SS:STACK,CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX XOR BX,BX ;累加单元清0(BX=0) MOV SI,0AH ;设置乘数10 MOV CL,4 MOV CH,3 ;设置循环次数3 MOV AX,DATA1 ;取十进制数 LP: ROL AX,CL ;取数字 MOV DI,AX ;保存当前AX值 AND AX,0FH ;屏蔽高位 ADD AX,BX ;累加 MUL SI MOV BX,AX MOV AX,DI DEC CH ;循环次数减1 JNZ LP ROL AX,CL ;取个位数字 AND AX,0FH ;屏
6、蔽高位 ADD AX,BX ;累加 MOV DATA2,AX MOV AH,4CH INT 21HCODE ENDSEND START 3. 十六进制数转换为ACSII码编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCII码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出。代码:STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 12H,02CH ;4位十六进制数DATA2 DB 5 DUP(?) ;存放ASC码DATA3 DB 4 DUP(?) ;
7、4位十六进制数分别存放在DATA3的4个字节中LFCR DB 0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,DATA3MOV CL,2 ;循环2次LP1: MOV AL,SI ;取2位十六进制数AND AL,0F0H ;屏蔽低四位ROR AL,4 ;右移4位MOV DI,AL ;高位数存放在高地址字节中INC DIMOV AL,SI ;取2位十六进制数AND AL,0FH ;屏蔽高四位MOV DI,AL ;低位
8、数存放在低地址字节中INC SIINC DIDEC CLJNZ LP1LEA SI,DATA3 ;将DATA3的首地址偏移量赋给SILEA DI,DATA2 ;将DATA2的首地址偏移量赋给DIMOV CL,4 ;循环4次LP2: MOV AL,SI ;取DATA3中的十六进制数CMP AL,9JG LP3 ;若AL>9,跳转到LP3ADD AL,30H ;十六进制数0-9->ASC码,要加30HJMP LP4LP3: ADD AL,37H ;十六进制数A-F->ASC码,要加37HLP4: MOV DI,AL ;将ASC码依次存入DATA2中INC DIINC SIDEC
9、CLJNZ LP2MOV AL,'$' ;设置显示结束标志MOV DI+1,AL ;存入DATA2中LEA DX,LFCRMOV AH,09HINT 21H ;回车换行MOV DX,OFFSET DATA2MOV AH,09HINT 21H ;显示ASC码MOV AH,4CHINT 21HCODE ENDSEND START 2、 实验步骤1. 编辑源文件,经汇编连接产生EXE文件。2. 用DEBUG调试、检查、修改程序。3.3、 实验习题与思考1. 编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。源代码: STACK SEGMENT DB 256 DUP(
10、?) STACK ENDS DATA SEGMENT DATA1 DB 5,?,2 DUP(?) DATA2 DB 2 DUP(?) DATA3 DB 2 DUP(?) DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX LEA DX,DATA1 MOV AH,0AH INT 21H ;输入字符串 LEA SI,DATA1+2 LEA DI,DATA2 MOV CL,2 ;将ASC码转换为十六进制数 LP1: MOV AL,SI SUB AL,30H CMP AL,9 JA LP2
11、 MOV DI,AL INC DI INC SI DEC CL JZ LP3 JNZ LP1 LP2: SUB AL,7 MOV DI,AL INC DI INC SI DEC CL JNZ LP1 ;将十六进制数转换成十进制数,并保存 LP3: LEA DI,DATA2 MOV AL,DI MOV BL,DI+1 MOV CL,4 SHL AL,CL ADD AL,BL MOV DI,AL LEA SI,DATA3 XOR AH,AH MOV CL,100 DIV CL ;AH=AX%100,AL=AX/100 MOV SI,AL ;保存百位数 MOV AL,AH XOR AH,AH MOV
12、 CL,10 DIV CL MOV SI+1,AL ;保存十位数 MOV SI+2,AH ;保存个位数 ;屏幕显示十进制数 LP4: MOV DL,SI ;取百位数送显 OR DL,30H MOV AH,02H INT 21H MOV DL,SI+1 ;取十位数送显 OR DL,30H MOV AH,02H INT 21H MOV DL,SI+2 ;取个位数送显 OR DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 运行图:输入:输出: 2. 十进制数转换为七段码。为了在七段显示器上显示十进制数,需要把十进制数转
13、换为七段代码。转换可采用查表法。设需要转换的十进制数已存放在起始地址为DATA1区域中,七段代码转换表存放在起始地址为TABLE表中,转换结果存放到起始地址为DATA2区域。若待转换的数不是十进制数,则相应结果单元内容为00H。 源代码: STACK SEGMENT DB 256 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'A','B','C','$' TABLE DB 00H,40H,01H,79H,02H,24H,
14、03H,30H,04H,19H,05H,12H,06H,02H, 07H,78H,08H,00H,09H,18H,0AH,08H,0BH,03H,0CH,46H,0DH,21H, 0EH,06H,0FH,0EH ;实际数据定义必须在同一行 DATA2 DB 16 DUP(0) COUNT EQU 2 DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX LEA SI,DATA1 LEA BX,DATA2 LEA DI,TABLE XOR AH,AH LP1: MOV AL,SI ;外循环DATA1指向下一个 INC SI MOV CX,16 ;内循环TABLE 16次 LP2: CMP DI,AL JE LP3 ADD DI,COUNT ;内循环TABLE指向下一组 DEC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效开发流程2025年考试试题及答案
- 现代社会中的编程语言选择与应用试题及答案
- 吉林省长春市第二实验学校2025年数学八下期末达标检测模拟试题含解析
- 社会实践活动在幼儿园的开展计划
- 教学资源共享与借用策略计划
- 湖北省黄冈市麻城市思源实验学校2025届八下数学期末综合测试模拟试题含解析
- 2024年宁夏开放大学辅导员考试真题
- 2025届福建省南安市柳城义务教育小片区八年级数学第二学期期末质量跟踪监视试题含解析
- 2024年黑龙江省体育局下属事业单位真题
- 黑龙江省七台河市名校2025届八下数学期末教学质量检测模拟试题含解析
- 储能产业研究白皮书2025摘要版
- 曲靖市社区工作者招聘真题2024
- 2024年新疆阿合奇县事业单位公开招聘村务工作者笔试题带答案
- 基层应急管理能力提升与建设
- 小学生脱口秀课件
- 混凝土配合比试验设计方案
- 抖音陪跑合同协议
- 高三尖子生、边缘生辅导方案2
- 湖北省武汉市2025届高中毕业生四月调研考试政治试题及答案(武汉四调)
- 海鲜门店管理制度
- 消化内镜操作技术
评论
0/150
提交评论