微机实验数码转换

上传人:n**** 文档编号:88930455 上传时间:2019-05-13 格式:PDF 页数:12 大小:1.27MB
返回 下载 相关 举报
微机实验数码转换_第1页
第1页 / 共12页
微机实验数码转换_第2页
第2页 / 共12页
微机实验数码转换_第3页
第3页 / 共12页
微机实验数码转换_第4页
第4页 / 共12页
微机实验数码转换_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《微机实验数码转换》由会员分享,可在线阅读,更多相关《微机实验数码转换(12页珍藏版)》请在金锄头文库上搜索。

1、 微机原理实验报告微机原理实验报告 实验九实验九:数码转换数码转换 电子信息工程电子信息工程 150210 班班 金峥金峥 15021005 一一、实验题目实验题目 实验九数码转换 二二、实验目的实验目的 1、掌握计算机常用数据编码之间的相互转换方法。 2、进一步熟悉 DEBUG 软件的使用方法。 三三、实验步骤实验步骤 1、编辑源文件,经汇编连接产生 EXE 文件。 2、用 DEBUG 调试、检查、修改程序。 四四、实验流程图实验流程图 实验实验 91 流程图流程图 实验实验 92 流程图流程图 实验实验 93 流程图流程图 五五、实验、实验源代码源代码 实验(一)ASC码转换为非压缩型BC

2、D码 编写并调试正确的汇编语言源程序, 使之实现: 设从键盘输入一串十进制数, 存入 DATA1 单元中, 按回车停止键盘输入。 将其转换成非压缩型 (非组合型) BCD 码后,再存入 DATA2 开始的单元中。若输入的不是十进制数,则相应单元中存放 FFH。调试程序,用 D 命令检查执行结果。 代码代码 DATA SEGMENT PARA DATA ;定义数据段 DATA1 DB 16 DUP(0) ;输入的 ACSII 码 DATA2 DB 16 DUP(0) ;转换后输出的 BCD 码 DATA ENDS STACK SEGMENT PARA STACK STACK ;定义堆栈段 STA

3、CK1 DB 256 DUP(0) ;为堆栈准备 256 字节 STACK ENDS CODE SEGMENT ;定义代码段 ASSUME SS:STACK,CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DATA1 ;DATA1 首地址存入 SI LEA DI,DATA2 ;DATA2 首地址存入 DI MOV CX,16 ;循环次数 STEP1: MOV AH,01H ;输入字符,AL=输入的 ASCII 码 INT 21H MOV SI,AL CMP AL,0DH ;与回车作比较 JE STEP3 ;若为回车则跳转到 STEP3 C

4、MP AL,0 ;比较 AL 与 0 的大小 JB STEP2 ;若 AL9,跳转到 STEP2 SUB AL,30H ;将输入字符的 ASCII 码转换为十进制数 MOV DI,AL ;将结果存入 DATA2 中 INC SI INC DI ;为下一次数码转换做准备 LOOP STEP1 ;跳转到 STEP1,进行循环 STEP2: MOV DI,0FFH ;若输入的不是十进制数,相应单元存入 0FFH INC SI INC DI LOOP STEP1 ;跳转到 STEP1,进行循环 STEP3: MOV AH,4CH ;带返回码的结束 INT 21H CODE ENDS END START

5、 代码截图代码截图 实验(二)BCD 码转换为二进制数 编写并调试正确的汇编语言源程序,使之将一个 16 位存储单元中存放的 4 位 BCD 码 DATA1,转换成二进制数存入 DATA2 字单元中调试程序,用 D 命令检查 执行结果。 代码代码 DATA SEGMENT PARA DATA ;定义数据段 DATA1 DW 2497H ;DATA1 中存放的 4 位 BCD 码 DATA2 DW 0 ;转换后输出的十六进制码 DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV

6、 CL,4 ;4 位 BCD 码 MOV CH,3 ;循环次数 3 次 MOV SI,0AH ;设置乘数 10 XOR BX,BX ;累加数 BX 清 0 MOV AX,DATA1 ;取 DATA1 中的十进制数 LP0: ROL AX,CL ;将 AX 左移 4 位,进行取数 MOV DI,AX ;保存当前 AX 数值 AND AX,0FH ;保留低位 ADD AX,BX ;进行累加 MUL SI ;AX 乘 10 MOV BX,AX ;将 AX 存入 BX,以便下次循环进行累加 MOV AX,DI ;将 AX 重置回之前的数值 DEC CH ;循环次数减 1 JNZ LP0 ROL AX,

7、CL ;此处开始为取个位数,但不用乘 10,所以直接累加 AND AX,0FH ADD AX,BX MOV DATA2,AX MOV AH,4CH INT 21H ENDS END START 代码截图代码截图 实验(三)十六进制数转换为 ASC码 编写并调试正确的汇编语言源程序,使之将内存 DATA1 字单元中存放的 4 位十六进制数,转换为 ASC码后分别存入 DATA2 为起始地址的 4 个单元中,低 位数存在低地址的字节中,并在屏幕上显示出来。 代码代码 DATA SEGMENT PARA DATA ;定义数据段 DATA1 DB 23H,0ADH ;存放的 4 位十六进制数 DATA

8、2 DB 4 DUP(0) ;存入 ASCII 码 DB $ DATA3 DB 4 DUP(0) ;DATA3 的四个字节分别存放每个十六进制数 DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DATA1 LEA DI,DATA3 MOV CL,2 ;循环 2 次,取两次 2 位十六进制数 STEP1: MOV AL,SI ;取 2 位 16 进制数 AND AL,0F0H ;低四位为 0 ROR AL,4 ;右移四位 MOV DI,AL ;高位数存放在高字节中 I

9、NC DI MOV AL,SI ;再取一次这个数 AND AL,0FH ;高四位为 0 MOV DI,AL ;低位数存放在低字节中 INC SI INC DI DEC CL JNZ STEP1 LEA SI,DATA3 ;将 DATA3 首地址偏移量存入 SI LEA DI,DATA2 ;将 DATA2 首地址偏移量存入 DI MOV CL,4 STEP2: MOV AL,SI ;取 DATA3 中的十六进制数 CMP AL,9 JG STEP3 ;若 AL9,跳转到 STEP3 ADD AL,30H ;0-9H+30H=ASCII JMP STEP4 STEP3: ADD AL,37H ;A

10、-FH+37H=ASCII STEP4: MOV DI,AL ;ASCII 码存入 DATA2 中 INC DI INC SI DEC CL ;依次存入 JNZ STEP2 ;循环存数 LEA DX,DATA2 MOV AH,09H INT 21H ;显示 DATA2 MOV AH,4CH INT 21H CODE ENDS END START 代码截图代码截图 六六、实验结果实验结果 实验实验 9-1 结果截图结果截图 地址地址:0711:0000 实验实验 9-2 结果截图结果截图 地址地址:0710:0002 结果结果:2497H=(09C1)16 实验实验 9-3 结果截图结果截图 地址地址:0710:0002

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号