微机实验报告4 数码转换程序实验 您所在的位置:网站首页 编写查表程序程序 微机实验报告4 数码转换程序实验

微机实验报告4 数码转换程序实验

2023-06-18 07:17| 来源: 网络整理| 查看: 265

桂 林 理 工 大 学

实  验  报  告

班级  软件工程16-1班  学号  3162052051116  姓名  张识虔  同组实验者              

实验名称             数码转换程序实验                     日期 2018年 11 月14 日

一、实验目的:

掌握不同进制数及编码相互转换的程序设计方法

二、实验环境:

PC 微机一台、TD-PITD 实验系统一套。

三、实验内容:

 

计算机输入设备输入的信息一般是由 ASCII 码或 BCD 码表示的数据或字 符,CPU 一般均用二进制数进行计算或其他信息处理,处理结果的输出又必须 依照外设的要求变为 ASCII 码、BCD 码或七段显示码等。因此,在应用软件中, 各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码对应关系如 表 2-3-1 所示。数码转换关系如图 2-3-1 所示。

 

图 2-3-1  计算机与外设间的数码转换关系

 

表 2-3-1  数码转换对应关系

 

将 ASCII 码表示的十进制数转换为二进制数

 

本实验要求将缓冲区中的一个五位十进制数 00012 的 ASCII 码转换成二进 制数,并将转换结果显示在屏幕上。转换过程的参考流程如图 2-3-2 所示,根据 流程图编写程序代码。

 

十进制数可以表示为:Dn×10n+Dn-1×10n-1+…+D0×100=Di×10i 其中 Di 代 表十进制数 1、2、3…9、0。

 

上式可以转换为:ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)× 10+D0。

 

由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位 Dn 开始 作乘 10 加次位的操作,依次类推,则可求出二进制数结果。

 

图 2-3-2  十进制 ASCII 转换为二进制数参考流程

 

DATA SEGMENT ;定义源数据段 MSR DB '00012' LEN EQU $-MSR DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS,AX MOV SI, OFFSET MSR MOV CX,LEN-1 MOV AL, DS:[SI] ;开始传输数据 MOV AH,0 SUB AX,30H NEXT1: MOV BX, 0AH MUL BX ; 将AX中的数乘以10,所得的结果高位保存到DX中,低位保存到AX中 INC SI MOV DL,DS:[SI] MOV DH,0 SUB DX,30H ;将数字对应的ASCII码转换成响应的二进制数 ADD AX,DX DEC CX JNZ NEXT1 MOV CL,16 ; CL用作循环NEXT2的计数器,因为5位十进制数转化成二进制只有十六位,所以循环次数为16次 MOV BX,AX NEXT2: ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H ;把BX中的数以二进制形式输出 MOV AH,2H INT 21H DEC CL JNZ NEXT2 MOV AX,4C00H INT 21H CODE ENDS END START

 

 

 

将十进制数的 ASCII 码转换为 BCD 码

 

本实验要求将键盘输入的一个五位十进制数 54321 的 ASCⅡ码存放在数据 区中,转换为 BCD 码后 ,并将转换结果显示于屏幕上 。若输入的不是十进制 数的 ASCⅡ码,则输出“FF”。提示:一字节 ASCⅡ码取其低四位即变为 BCD 码。转换部分的实验流程参见 2-3-3,根据流程图编写程序代码。

将十六进制数的 ASCII 码转换为十进制数

 

本实验要求将缓冲区中存放的 000CH 的 ASCII 码转换成十进制数,并将转 换结果显示在屏幕上。转换部分的实验流程如图 2-3-4,根据流程图编写程序代 码。

十六位二进制数的值域为 0-65535,最大可转换为五位十进制数。五位十进 制数可表示为:ND=D4×104+D3×103+D2×102+D1×10+D0 因此,将十六位二进 制数转换为五位 ASCⅡ码表示的十进制数,就是求 D1-D4,并将它们转化为 ASC Ⅱ码。

 

图 2-3-3  十进制 ASCII 转换为 BCD 码数参考流程

 

 

DATA SEGMENT ;定义源数据段 STRING DB 'Input:','$' MSR DB 6,?,6 DUP(?) ;数据段MSR用于接收从键盘输入的五位十进制数 DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX ; 装载数据段寄存器 LEA DX, STRING MOV AH, 09H INT 21H MOV DX, OFFSET MSR MOV AH,0AH INT 21H MOV CL,[MSR+1] ;CL中保存实际输入的数据的位数,用于控制循环执行的次数 MOV SI,0002H MOV BX, OFFSET MSR NEXT1: MOV AL,[BX+SI] ;开始传输数据 CMP AL,40H JNC LK1 ;大于等于40H则表明输入的不是数字符,跳到LK1输入F CLC CMP AL,30 JC LK1 ;小于30H则表明输入的不是数字字符,到LK1输出字符F SUB AL,30H MOV CH,0 PUSH CX MOV CL,4 MOV DH,AL SHL DH,CL NEXT2: ROL DH,1 MOV DL,DH AND DL,01H ADD DL,30H MOV AH,02H INT 21H DEC CL JNZ NEXT2 POP CX INC SI DEC CL JNZ NEXT1 LK1: JZ LK2 MOV DL,46H ;输出字符F MOV AH,02H INT 21H INC SI DEC CL JNZ NEXT1 LK2: MOV AX,4C00H INT 21H CODE ENDS END START

 

 

 

图 2-3-4  将十六进制数的 ASCII 码转换为十进制数参考流程

4.BCD 码转换为二进制码 本 实 验 要 求 将 内 存 单 元 中 的 四 个 二 位 十 进 制 数 的 BCD 码

 

01H,07H,03H,04H,05H,01H,06H,08H,转换成二进制数码存入其后的内存单元中, 转换结束,送屏幕显示。转换部分的实验流程参见 2-3-5,根据流程图编写程序 代码。

 

图 2-3-5  BCD 码转换为二进制码

 

DATA SEGMENT ;定义源数据段 STRING DB 'Input:','$' MSR DW 000CH MDR DB 5 DUP(?),'$' DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET MDR MOV SI, 5 MOV AX,[MSR] ;将数据000CH保存到AX当中 NEXT1: DEC SI MOV DX,0 MOV CX,0AH DIV CX ADD DL,30H MOV [BX+SI],DL CMP AX,0 JNE NEXT1 CMP SI,0 ;判断SI是否为零,为零则表明五位十进制数的每一位都不为零,否则应给前面为零的位上补上零 JE NEXT3 NEXT2: DEC SI MOV AL,30H MOV [BX+SI],AL CMP SI,0 JNE NEXT2 NEXT3: MOV DX,OFFSET MDR MOV AH,09H INT 21H MOV AX,4C00H INT 21H CODE ENDS END START

 

 

2.3.4 实验步骤 (1) 按照各实验要求分别编写实验程序。

 (2) 对实验程序进行编译、链接。

(3) 使用调试功能调试程序,观察在调试过程中,程序指令执行之后各寄存 器及数据区的内容。

 (4) 更改数据区中的数据,反复测试,验证程序功能。

 

 

四、心得体会:

 

 

这个是第一次自己手打的实验 的确很难  对汇编语言还不是很熟悉   有时候答案出来了 还不是很理解是怎么转换的  很纠结  唉



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有