数码转换 实验报告材料微机原理
![数码转换 实验报告材料微机原理_第1页](https://file3.zhuangpeitu.com/fileroot3/2022-5/1/bce14599-dc89-4db2-ba3c-c5c92880fd33/bce14599-dc89-4db2-ba3c-c5c92880fd331.gif)
![数码转换 实验报告材料微机原理_第2页](/images/s.gif)
![数码转换 实验报告材料微机原理_第3页](/images/s.gif)
《数码转换 实验报告材料微机原理》由会员分享,可在线阅读,更多相关《数码转换 实验报告材料微机原理(16页珍藏版)》请在装配图网上搜索。
1、word 实验九 数码转换 一、实验目的 1、掌握计算机常用数据编码之间的相互转换方法。 2、进一步熟悉DEBUG软件的使用方法。 二、实验内容 1. ACSII码转换为非压缩型BCD码 编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。将其转换成非压缩型(非组合型) BCD码后,再存入DATA2开始的单元中。假如输入的不是十进制数,如此相应单元中存放FFH。调试程序,用D命令检查执行结果。 2. BCD码转换为二进制码 编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4
2、位BCD码DATA1,转换成二进制数存入DATA2字单元中。调试程序,用D命令检查执行结果。 3. 十六进制数转换为ASCII码 编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCⅡ码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出来。 三、 实验预习 1. 复习材料中有关计算机数据编码局部的内容。 2. 按要求编写程序。 四、 实验步骤 1. 编辑源文件,经汇编连接产生EXE文件。 2. 用DEBUG调试、检查、修改程序。 五、实验内容 1. ACSII码转换为非压缩型BC
3、D码 STACK SEGMENT PARA STACK 'STACK' DB 256 DUP(?) ; 为堆栈段留出256个字节单位 STACK ENDS DATA SEGMENT PARA 'DATA' ;定义数据段 DATA1 DB 32 ; 缓冲区最大长度 DB ? DB 32 DUP(?)
4、 DATA2 DB 32 DUP(?) DATA ENDS CODE SEGMENT ; 定义代码段 ASSUME SS:STACK ASSUME CS:CODE ASSUME DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,DATA1
5、 ; 规定:DX存放输入字符串的缓冲区首地址 MOV AH,0AH INT 21H ; 字符串输入 AL=键入的ASCII码 LEA SI,DATA1 LEA DI,DATA2 ; DI存放DATA2首地址 INC SI MOV
6、CL,[SI] ; 取输入字符串长度 INC SI ; 指向第一个输入字符 LP1: MOV AL,[SI] SUB AL,30H ; 输入的字符存为ASCII码,将其转换成十进制数 CMP AL,0
7、 ; 假如AL<0(AL-0<0),跳转到LP2 JL LP2 CMP AL,9 ; 假如AL>9〔AL-9>0〕,跳转到LP2 JG LP2 MOV BL,AL ; 将AL->BL MOV [DI],BL ; 将结果存到DATA2开始的单元中
8、 INC DI INC SI DEC CL JMP LP1 LP2: MOV AL,0FFH ; 假如输入的不是十进制数,在相应的单元存放FFH ; 以字母开头的十六进制数前面需加'0' MOV BL,AL ; 将AL->BL MOV [DI],BL INC DI
9、 INC SI DEC CL CL=CL-1 JNZ LP1 ; CL=0,执行LP3中的语句 LP3: MOV AH,4CH INT 21H CODE ENDS END START 2. BCD码转换为二进制码 DATA SEGMENT DATA1 DW 2497H
10、 DATA2 DW ? DATA ENDS CODE SEGMENT ASSUME SS:STACK,CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX XOR BX,BX ; 累加单元清0(BX=0) MOV SI,0AH ; 设置乘数10 MOV CL,4
11、 ; 指4位BCD码 MOV CH,3 ; 循环次数=3 MOV AX,DATA1 ; 取十进制数 LP: ROL AX,CL ; 取数字 MOV DI,AX ; 保存当前AX值 AND AX,0FH ; 屏蔽高位
12、 ADD AX,BX ; 累加 MUL SI MOV BX,AX MOV AX,DI DEC CH ; 循环次数减1 JNZ LP ; 以上完成循环三次 ROL AX,CL ; 取个位数字 AND AX,0
13、FH ; 屏蔽高位 ADD AX,BX ; 进展累加,直接将最后的累加结果放到AX中 MOV DATA2,AX MOV AH,4CH INT 21H CODE ENDS END START 3. 十六进制数转换为ACSII码 STACK SEGMENT DB 256 DUP(?) STACK ENDS
14、 DATA SEGMENT DATA1 DB 24H,06DH DATA2 DB 4 DUP(?) ; 存放ASCII码 JUMP DB 4 DUP(?) ; 4位十六进制数分别存放在DATA3的4个字节中 DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START: MOV AX,DATA
15、 MOV DS,AX LEA SI,DATA1 LEA DI,JUMP MOV CL,2 ; 循环2次,取两次两位十六进制数 LP0: MOV AL,[SI] ; 取2位十六进制数 AND AL,0F0H ; 低四位为零 ROR AL,4 ; 右移4位 相当于除以16
16、 MOV [DI],AL ; 高位数存放在高地址字节中 INC DI MOV AL,[SI] ; 取2位十六进制数 AND AL,0FH ; 高四位为零 MOV [DI],AL ; 低位数存放在低地址字节中 INC SI INC DI
17、 DEC CL JNZ LP0 LEA SI,JUMP ; SI=JUMP的首地址偏移量 LEA DI,DATA2 ; DI=DATA2的首地址偏移量 MOV CL,4 ; 因为是四位十六进制数,所以设置为循环4次 LP1: MOV AL,[SI]
18、 ; 取JUMP中的十六进制数 CMP AL,9 JG LP3 ; 假如AL>9(AL-9>0),跳转到LP3 ADD AL,30H ; 0~9H+30H=ASCII JMP LP3 LP2: ADD AL,37H ; A~FH+30H=ASCII LP3: MOV [DI],AL
19、 ; 将ASCII码依次存入DATA2中 INC DI INC SI DEC CL JNZ LP1 MOV AH,09H INT 21H MOV DX,OFFSET DATA2 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START
20、 六、实验习题与思考 1.编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。 STACK SEGMENT DB 256 DUP(?) 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:MO
21、V 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
22、 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,[D
23、I] 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
24、 AH,AH MOV 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
25、 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. 十进制数转换为七段码。 为了在七段显示器上显示十进制数,需要把十进制数转换为七段代码。转换可采用查表法。设需要转换的十进制数已存放在起始地址为DATA1区域中,七段代码转换
26、表存放在起始地址为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,03H,30H,04H,19H,05H,12H,06H,02H, 07H,78H,08H,0
27、0H,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
28、 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 CX JNZ LP2 MOV BYTE PTR
29、[BX],00H 假如不是十进制数,如此结果保存为00H INC BX CMP AL,'$' ;设置完毕标志 JNZ LP1 JZ LP4 LP3: MOV AL,[DI+1] MOV [BX],AL ;转换结果保存在DATA2中 INC BX LEA DI,TABLE CMP CL,0 JNZ LP1 LP4: MOV AH,4CH INT 21H CODE ENDS END START 16 / 16
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水电工程运行维护管理合同示范文本.docx
- 2025年工程勘测设计合同模板.docx
- 2025年区域产品销售代理合同.docx
- 2025年经销商授权合同样本.docx
- 2025年员工住房资金借贷合同.docx
- 2025年轻钢建筑施工合同示例.docx
- 2025年网络推广托管合同.docx
- 2025年简明个人借款正式合同范例.docx
- 2025年房产按揭贷款合同范例.docx
- 2025年技术合同争议调解.docx
- 2025年电子版城市住宅租赁合同范本.docx
- 2025年简易转让合同协议书样本.docx
- 2025年投资顾问服务合同实例.docx
- 2025年经销合同模板.docx
- 2025年工业项目设计合同样本.docx