微机实验报告4 数码转换程序实验
桂 林 理 工 大 学
实 验 报 告
班级 软件工程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 $-MSRDATA ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS,AXMOV SI, OFFSET MSRMOV CX,LEN-1MOV AL, DS:[SI] ;开始传输数据MOV AH,0SUB AX,30HNEXT1: MOV BX, 0AHMUL BX ; 将AX中的数乘以10,所得的结果高位保存到DX中,低位保存到AX中INC SIMOV DL,DS:[SI]MOV DH,0SUB DX,30H ;将数字对应的ASCII码转换成响应的二进制数ADD AX,DXDEC CXJNZ NEXT1MOV CL,16 ; CL用作循环NEXT2的计数器,因为5位十进制数转化成二进制只有十六位,所以循环次数为16次MOV BX,AXNEXT2: ROL BX,1MOV DL,BLAND DL,01HADD DL,30H ;把BX中的数以二进制形式输出MOV AH,2HINT 21HDEC CLJNZ NEXT2MOV AX,4C00HINT 21HCODE ENDSEND 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 ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AX ; 装载数据段寄存器LEA DX, STRINGMOV AH, 09HINT 21HMOV DX, OFFSET MSRMOV AH,0AHINT 21HMOV CL,[MSR+1] ;CL中保存实际输入的数据的位数,用于控制循环执行的次数MOV SI,0002HMOV BX, OFFSET MSRNEXT1: MOV AL,[BX+SI] ;开始传输数据CMP AL,40HJNC LK1 ;大于等于40H则表明输入的不是数字符,跳到LK1输入FCLCCMP AL,30JC LK1 ;小于30H则表明输入的不是数字字符,到LK1输出字符FSUB AL,30HMOV CH,0PUSH CXMOV CL,4MOV DH,ALSHL DH,CLNEXT2: ROL DH,1MOV DL,DHAND DL,01HADD DL,30HMOV AH,02HINT 21HDEC CLJNZ NEXT2POP CXINC SIDEC CLJNZ NEXT1LK1: JZ LK2MOV DL,46H ;输出字符FMOV AH,02HINT 21HINC SIDEC CLJNZ NEXT1LK2: MOV AX,4C00HINT 21HCODE ENDSEND 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 000CHMDR DB 5 DUP(?),'$'DATA ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET MDRMOV SI, 5MOV AX,[MSR] ;将数据000CH保存到AX当中NEXT1: DEC SIMOV DX,0MOV CX,0AHDIV CXADD DL,30HMOV [BX+SI],DLCMP AX,0JNE NEXT1CMP SI,0 ;判断SI是否为零,为零则表明五位十进制数的每一位都不为零,否则应给前面为零的位上补上零JE NEXT3NEXT2: DEC SIMOV AL,30HMOV [BX+SI],ALCMP SI,0JNE NEXT2NEXT3: MOV DX,OFFSET MDRMOV AH,09HINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START
2.3.4 实验步骤 (1) 按照各实验要求分别编写实验程序。
(2) 对实验程序进行编译、链接。
(3) 使用调试功能调试程序,观察在调试过程中,程序指令执行之后各寄存 器及数据区的内容。
(4) 更改数据区中的数据,反复测试,验证程序功能。
四、心得体会:
这个是第一次自己手打的实验 的确很难 对汇编语言还不是很熟悉 有时候答案出来了 还不是很理解是怎么转换的 很纠结 唉
微机实验报告4 数码转换程序实验相关推荐
- 计算机图形人机交互实验报告,用户界面设计人机交互实验报告.doc
用户界面设计人机交互实验报告 <人机交互>实验报告 题目 实验一 图形用户界面的设计 专业 软件工程 班级 2011 学号 2011221104220026 姓名 孙元喜 导教师 关玉欣 ...
- 计算机实训机器人实验原理是什么,实验报告机器人控制技术基础实验报告.doc...
实验报告机器人控制技术基础实验报告 华北电力大学 实 验 报 告 | | 实验名称: 机器人控制技术基础 课程名称: 机器人控制技术基础 | | 实 验 人: 成 绩: 18.00秒 指导教师: 实验 ...
- 单片微型计算机原理及应用实验报告,小学期单片机实验报告_相关文章专题_写写帮文库...
时间:2019-05-13 01:16:21 作者:admin 北京邮电大学信息与通信工程学院 小学期AVR单片机实验报告 实验题目: 基于ATmega16L单片机的电子琴设计 学生姓名:学渣 班 级 ...
- 计算机硬件技术基础实验教程实验报告,计算机硬件技术基础实验报告.doc
计算机硬件技术基础实验报告 计算机硬件技术基础实验日志认识集成操作软件DDATA SEGMENT MSRDB "HELLO,WORLD!$" LENEQU $- MSR DDATA ...
- 计算机实验报告要求,计算机上机实验内容及实验报告要求
一.<软件技术基础>上机实验内容 1.顺序表的建立.插入.删除. 2.带头结点的单链表的建立(用尾插法).插入.删除. 二.提交到个人10m硬盘空间的内容及截止时间 1.分别建立二个文件夹 ...
- 射极跟随器实验报告数据处理_射极跟随器实验报告模式
射极跟随器实验报告模式 射极跟随器实验报告模式 一.实验目的 1.熟悉Multisim9软件的使用方法. 2.掌握放大器静态工作点的仿真方法及其对放大器性能的影响. 3.学习放大器静态工作点.电压放大 ...
- 计算机应用基础实验报告册,计算机应用基础实验报告(flash)
实 验 报 告 计算机应用基础实验报告 姓名 班级 学号 实验日期 课程名称 计算机应用基础 指导教师 成绩 实验名称:简单动画制作 实验目的: 掌握逐帧动画.形状渐变动画.运动渐变动画的制作方法 实 ...
- 淮海工学院linux实验报告三,作业三 实验报告
作业三 实验报告 网络通信 文件传输 实验一 1-1 实验题目 服务器端和客户端各传递1次字符串.考虑到使用TCP协议,所以传递字符串前先以4字节整数型方式传递字符串长度.连接时服务器端和客户端数据传 ...
- 安徽工程大学C语言程序设计实验报告,安徽工业大学嵌入式实验报告.docx
安徽工业大学嵌入式实验报告 <嵌入式系统实验报告>指导教师:陆勤姓名:程少锋学号:139074366班级:物联网131班实验一B 熟悉实验开发环境一.实验目的熟悉ADS1.2 开发环境,学 ...
- 计算机组成原理实验报告西华大学,计算机组成原理实验报告算术逻辑运算单元实验...
<计算机组成原理实验报告算术逻辑运算单元实验>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告算术逻辑运算单元实验(6页珍藏版)>请在人人文库网上搜索. 1.西华大学数 ...
最新文章
- 微信小程序var,let,const的区别
- 大数据Scala编程.问题集(02)
- 揭秘PPT设计中的逻辑真相
- 【图文讲解】eclipse中配置maven环境+导入maven项目
- 如果我要....(生活版)
- Mysql编码教程_mysql编码设置教程 mysql编码要怎么设置呢
- php: +1天, +3个月, strtotime(): +1 day, +3 month
- 如何用c语言程序写一段英文字母,菜鸟求助,写一个随机输出26个英文字母的程序...
- Github | 如何用Python测试GPU与CPU计算性能
- mac下ssh免密登陆远程服务器(linux)
- 车借给朋友好几次,满油的车每次还回来都是没油了,我觉得心里有些不舒服是我太计较吗?
- msiafterburner并行配置不正确_dubbo常用配置及使用场景
- Wireless Network(并查集)
- 高德地图 web API 多点路线绘制
- 访问无偏移的谷歌地图——工具篇
- VC2008中影响exe大小和速度的全部编译选项
- 凝胶渗透色谱的基本概念(一)
- 国内数据资源共享平台介绍
- 《如何阅读一本书》完整版读书笔记
- 【公开课】国内外公开课网址
热门文章
- 后台审批功能 销售发货单 生成 销售出库单 java NC633 接口开发
- DXperience Winforms12.2版的中文使用手册
- [NLP论文阅读]A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS
- [NOIP2013]记数问题
- 网上阅卷系统服务器,网上阅卷系统是什么?
- 三星 android截屏快捷键是什么手机,三星手机如何快速截屏?两种快速截图方法教给你!...
- 金蝶记账王和易记账哪个好_金蝶易记账和记账王的区别是什么?金蝶易记账的具体操作如下...
- 说说浏览器缓存里的websql与 indexeddb
- python加载dll后如何查看函数_Python调用DLL带指针函数读写IC卡
- opencv2,3 ,4几个版本的区别及冲突性,使用的时候用头文件注意