实验一数码转换编程及程序调试
华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)
微机原理实验报告班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班姓 名: 黄中一黄中一 学 号: 201236460273序 号:评阅分数:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。
命令运行调试。
二、实验设备装有MASM 软件的IBM PC 机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。
是对目标文件进行调试,验证它的正确性。
2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法功能功能命令格式命令格式 使用说明使用说明显示内存单元内容显示内存单元内容D 地址地址从指定地址开始显示40H 个字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址先显示地址和单元内容等待输入修改的内容输入修改的内容检查和修改寄检查和修改寄存器的内容存器的内容R 显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式和反汇编格式反汇编反汇编U 地址地址从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指令运行运行 G =地址=地址无断点,执行正在调试的指令执行正在调试的指令 退出退出Q退出DEBUG 返回DOS3、实验过程①、在edit 环境,写字板,记事本等中输入源程序。
数据的传送、转换、比较及运算指令编程实验
实验六数据的传送、转换、比较及运算指令编程实验一、实验目的1、掌握数据的传送、转换、比较及运算指令的使用方法。
2、学会数据的传送、转换、比较及运算指令在编程中的应用。
二、实验设备电脑一台,实验箱一台,AB接口的USB连线一条,电源线两条。
三、实验步骤1、把实验箱的电源及各个输入端的拨动按钮置于“OFF”位,即向下,再用AB 接口的USB连线把PLC与电脑连接起来,然后给PLC上电。
2、启动CP—X软件,新建工程,进入CP—X软件编程环境。
3、根据实验内容在CP—X软件编程环境里进行编程,然后进行相关的操作。
4、程序运行调试并修改。
5、保存好的文件,做好各项记录。
6、把实验箱的电源及各个输入端的拨动按钮置于“OFF”位,切断实验箱的电源,盖好实验箱的盖子。
7、写实验报告。
四、实验内容1、可调多谐振荡器控制程序(1)控制要求:多谐振荡器输出的脉冲宽度及点空比可以调整。
(2)参考梯形图程序(图6-1)(3)程序分析:①画出0.00、0.01、T0、T1、100.00的时序图(图6-2)②当0.00为“on”、0.01为“off”时,数据传送指令MOV分别把立即数10传送给D0、D1,则T0、T1的设定值均为10,100.00输出的脉冲宽度为1秒,点空比为1:1;当0.00为“off”、0.01为“on”时,数据传送指令MOV分别把立即数20和40传送给D0、D1,则T0、T1的设定值分别为20和40,100.00输出的脉冲宽度为4秒,点空比为2:1。
(3)把图6-1梯形图程序中的“MOV”指令改为“@MOV”,然后再观察它们的运行情况,并与图6-1梯形图程序进行比较,看是否相同,说明原因。
程序中的“MOV”能否用“MOVB”或“MOVD”替代,如果可以,请在程序中修改,如果不行,说明原因。
图6-1 可调多谐振荡器控制梯形图100.000.000.01T0T1图6-2 时序图2、BCD 、CMP 及数据运算指令的验证运行图6-3梯形图程序,认真观察,回答下面几个问题:(1)说说“BCD ”指令在程序中的作用,能不能把该指令省去?(2)程序中两个“MOV”指令,它们传送的立即数是否相同?计时器T0、T1的设置值是否相同?(3)程序中的“CMP”指令起着什么作用?说说为什么D0会小于D2。
南昌大学计算机控制实验报告数/模转换实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:实验成绩:实验一数/模转换实验一.实验要求掌握DAC0832芯片的性能、使用方法及对应的硬件电路。
编写程序控制D/A输出的波形,使其输出周期性的三角波。
二.实验说明电路实现见主板模块B1,具体说明请见用户手册。
DAC0832的片选CS0832接00H,观察输出端OUTl(B1部分)产生三角波由数字量的增减来控制,同时要注意三角波要分两段来产生。
三.实验步骤1、接线:此处无需接线。
2、示例程序:见Cpl源文件,程序流程如下图所示。
3、运行虚拟示波器方法:打开LCAACT软件中“设置”一>“实验机”,将其中的程序段地址设为8100,偏移地址0000。
然后选择“设置”一>“环境参数”一>“普通示波”,选择“工具”一>“加载目标文件”,本实验加载C:\AEDK\LCAACT\试验软件\CPI.EXE,然后选择在“工具”栏中“软件示波器”中“普通示波”,点击开始示波器即程序运行。
以后每个实验中的虚拟示波器运行方法同上。
只是加载的程序要根据实验的不同而不同。
如果以后用到该方法,不再赘述。
4、现象:程序执行,用虚拟示波器(CHl)观察输出点OUT(B1开始设置初始电平为0VD/A输出并增<=0FFH?YN数模转换中),可以测量到连续的周期性三角波。
通过实验结果的图片,我们可以知道得出来的三角波的幅值为U=(3.01V+1.95V)=4.96V。
T=1.3s模拟输出来的幅值和我们输入的5V有一定的偏差。
相对误差为(5-4.96)/5=0.8%,因为0832是8为的,所以分辨率为1/256即0.004。
相比较一下本次实验的误差只有0.8%,相当于掉了两个单位的分辨率。
在允许的误差范围之内。
所以本次实验的结果还算是比较成功的。
四、实验小结通过本次实验,我对数模转换的知识理解得更加透彻,以及如何使用DAC0832进行数模转换把数字量转换为模拟量并以三角波形式输出。
实验一 数码转换编程及程序调试
实验一数码转换编程及程序调试一、实验目的掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
熟悉程序调试的方法。
二、实验设备Pc微机一台,TD-PITE实验装置一套。
三、实验内容及步骤计算机输入设备输入的信息一般是由ASSII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换是必不可少的。
计算机与外设间的数制转换关系如图所示2-1所示,数制对应关系如表2-1所示。
图2-1 数制转换关系1. 将ASCII码表示的十进制数转换为二进制数十进制表示为:Di代表十进制数0,1,2, (9)上式转换为:由此可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
参考流程:实验程序:PUBLIC SADDSSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSDA TA SEGMENTSADD DB 30H,30H,32H,35H,36H ;十进制数:00256DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AXMOV BX, 000AHMOV CX, 0004HMOV AH, 00HMOV AL, [SI]SUB AL, 30HA1: IMUL BXMOV DX, [SI+01]AND DX, 00FFHADC AX, DXSUB AL, 30HINC SILOOP A1A2: JMP A2CODE ENDSEND START实验步骤:(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;(3)运行程序,然后停止程序;(4)查看AX寄存器,即为转换结果,应为:0100 ;(5)反复试几组数据,验证程序的正确性。
微机实验数码转换
微机原理实验报告实验九:数码转换电子信息工程150210班金峥15021005一、实验题目实验九——数码转换二、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
三、实验步骤1、编辑源文件,经汇编连接产生EXE文件。
2、用DEBUG调试、检查、修改程序。
四、实验流程图实验9——1流程图五、实验源代码实验(一)ASCⅡ码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。
将其转换成非压缩型(非组合型) BCD 码后,再存入DATA2开始的单元中。
若输入的不是十进制数,则相应单元中存放FFH。
调试程序,用D命令检查执行结果。
代码DATA SEGMENT PARA 'DATA' ;定义数据段DATA1 DB 16 DUP(0) ;输入的ACSII码DATA2 DB 16 DUP(0) ;转换后输出的BCD码DATA ENDSSTACK SEGMENT PARA STACK 'STACK' ;定义堆栈段STACK1 DB 256 DUP(0) ;为堆栈准备256字节STACK ENDSCODE SEGMENT ;定义代码段ASSUME SS:STACK,CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1 ;DATA1首地址存入SILEA DI,DATA2 ;DATA2首地址存入DIMOV CX,16 ;循环次数STEP1: MOV AH,01H ;输入字符,AL=输入的ASCII码INT 21HMOV [SI],ALCMP AL,0DH ;与回车作比较JE STEP3 ;若为回车则跳转到STEP3CMP AL,'0' ;比较AL与0的大小JB STEP2 ;若AL<0,跳转到STEP2CMP AL,'9' ;比较AL与9的大小JA STEP2 ;若AL>9,跳转到STEP2SUB AL,30H ;将输入字符的ASCII码转换为十进制数MOV [DI],AL ;将结果存入DATA2中INC SIINC DI ;为下一次数码转换做准备LOOP STEP1 ;跳转到STEP1,进行循环STEP2: MOV [DI],0FFH ;若输入的不是十进制数,相应单元存入0FFH INC SIINC DILOOP STEP1 ;跳转到STEP1,进行循环STEP3: MOV AH,4CH ;带返回码的结束INT 21HCODE ENDSEND START代码截图实验(二)BCD码转换为二进制数编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中调试程序,用D命令检查执行结果。
数码转换程序实验报告
数码转换程序实验报告实验报告:数码转换程序一、实验目的:本实验的目的是编写一个数码转换程序,能够将给定的十进制数转换为二进制数、八进制数和十六进制数。
二、实验原理:1. 十进制数转二进制数的方法:首先,将十进制数不断除以2,得到的商继续除以2,直到商为0为止。
然后,将每次得到的余数按照相反的顺序排列,即为转换后的二进制数。
2. 十进制数转八进制数的方法:将十进制数不断除以8,得到的商继续除以8,直到商为0为止。
然后,将每次得到的余数按照相反的顺序排列,即为转换后的八进制数。
3. 十进制数转十六进制数的方法:将十进制数不断除以16,得到的商继续除以16,直到商为0为止。
然后,将每次得到的余数按照相反的顺序排列,并将10、11、12、13、14、15分别表示为A、B、C、D、E、F,即为转换后的十六进制数。
三、实验过程:1. 设计数码转换程序的算法。
2. 使用Python编程语言实现该算法。
3. 运行程序,输入一个十进制数。
4. 程序将根据用户输入的十进制数,分别计算出对应的二进制数、八进制数和十六进制数。
5. 输出转换结果。
四、实验结果:例如,用户输入的十进制数为1776。
则转换结果为:二进制数:11011110000八进制数:3400十六进制数:6F0五、实验总结:通过本次实验,我学会了如何编写一个数码转换程序,能够将给定的十进制数转换为二进制数、八进制数和十六进制数。
此外,我还加深了对十进制数转换为其他进制数的原理的理解。
通过实际操作,我发现编写一个数码转换程序并不复杂,只需要遵循一定的转换方法,按照算法进行计算即可得到转换结果。
这次实验还增加了我对Python编程语言的实际应用能力。
总的来说,本次实验使我更加熟悉了程序设计与算法,提高了我解决类似问题的能力。
数制转换实训报告(3篇)
第1篇一、实训背景随着计算机技术的不断发展,数字信息在各个领域得到了广泛应用。
在计算机系统中,数制转换是一个基本且重要的操作。
数制转换实训旨在让学生深入了解不同数制之间的转换方法,提高学生在实际工作中处理数字信息的能力。
本次实训选取了十进制、二进制、八进制和十六进制四种常用数制进行转换,以下是实训报告。
二、实训目的1. 掌握十进制、二进制、八进制和十六进制四种数制的基本概念及特点。
2. 熟悉不同数制之间的转换方法,提高数制转换能力。
3. 培养学生在实际工作中处理数字信息的能力,为今后从事相关领域工作打下基础。
三、实训内容1. 十进制与二进制之间的转换(1)十进制转二进制:将十进制数除以2,得到余数和商,余数作为二进制数的最低位,商作为下一次除以2的数,重复此过程,直到商为0,将得到的余数倒序排列即为所求的二进制数。
(2)二进制转十进制:将二进制数按位展开,每个位上的数乘以对应的2的幂次,然后将结果相加得到十进制数。
2. 十进制与八进制之间的转换(1)十进制转八进制:将十进制数除以8,得到余数和商,余数作为八进制数的最低位,商作为下一次除以8的数,重复此过程,直到商为0,将得到的余数倒序排列即为所求的八进制数。
(2)八进制转十进制:将八进制数按位展开,每个位上的数乘以对应的8的幂次,然后将结果相加得到十进制数。
3. 十进制与十六进制之间的转换(1)十进制转十六进制:将十进制数除以16,得到余数和商,余数作为十六进制数的最低位,商作为下一次除以16的数,重复此过程,直到商为0。
当余数为10~15时,分别用字母A~F表示。
将得到的余数倒序排列即为所求的十六进制数。
(2)十六进制转十进制:将十六进制数按位展开,每个位上的数乘以对应的16的幂次,然后将结果相加得到十进制数。
4. 二进制、八进制和十六进制之间的转换(1)二进制转八进制:将二进制数每三位分为一组,不足三位的在前面补零,每组数转换为对应的八进制数。
试验数制转换试验
实验一、数制转换实验1.1.1 实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;2. 熟悉程序调试的方法。
1.1.2 实验设备PC机一台,TD-PITC 实验装置一套。
1.1.3 实验内容及步骤计算机输入设备输入的信息一般是由ASCII 码或BCD 码表示的数据或字符,CPU 一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD 码或七段显示码等。
因此,在应用软件中,各类数制的转换是必不可少的。
计算机与外设间的数制转换关系如图1-2-1所示,数制对应关系如表1-2-1所示图1-1 数制转换关系表1-2 数制对应关系表1.2 将ASCII码表示的十进制数转换为二进制数1.2.1 实验原理十进制表示为:Di代表十进制数0,1,2, (9)上式转换为:(2)由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
程序流程图如图1-2-2 所示。
实验参考程序如下。
图1-2 转换程序流程图1.2.2 实验程序清单(例程文件名:A2-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSDATA SEGMENTSADD DB 30H,30H,32H,35H,36H ;十进制数:00256DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AXMOV BX, 000AHMOV CX, 0004HMOV AH, 00HMOV AL, [SI]SUB AL, 30HA1: IMUL BXMOV DX, [SI+01]AND DX, 00FFHADC AX, DXSUB AL, 30HINC SILOOP A1A2: JMP A2CODE ENDSEND START1.2.3 实验步骤(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;(3)运行程序,然后停止程序;(4)查看AX 寄存器,即为转换结果,应为:0100 ;(5)反复试几组数据,验证程序的正确性。
计算机控制技术实验一ADDA转换实验
计算机控制技术实验一ADDA转换实验AD转换实验是计算机控制技术领域中非常重要的实验之一、AD转换(Analog-to-Digital Conversion)是将模拟信号转换为数字信号的过程,而DA转换(Digital-to-Analog Conversion)则是将数字信号转换为模拟信号的过程。
在实际应用中,AD和DA转换广泛应用于音频处理、图像处理、传感器信号处理等领域。
本实验旨在通过实际操作,深入理解AD和DA转换的原理和方法,并通过实验数据的收集和分析来验证实验结果。
首先,我们需要准备实验所需的硬件设备和软件工具。
实验所需的硬件包括AD转换芯片、DA转换芯片、测试电路和接线器。
在软件方面,我们可以使用相应的开发工具来编写程序控制AD和DA转换芯片。
接下来,我们开始进行AD转换实验。
首先,我们需要设计一个模拟信号的输入电路,并将其与AD转换芯片连接,将模拟信号输入到AD转换芯片中。
然后,我们需要编写控制程序,通过控制AD转换芯片的工作模式和参数来实现AD转换操作。
在进行实验时,我们可以分别调整采样率、量化精度等参数,以验证AD转换的准确性和可靠性。
最后,我们可以通过读取AD转换芯片输出的数字信号,并进行相应的计算和分析,来得到模拟信号的数字表示。
完成AD转换实验之后,我们将进行DA转换实验。
首先,我们需要将数字信号输出到DA转换芯片中,并将DA转换芯片的输出连接到相应的模拟电路中。
然后,我们需要编写控制程序,通过控制DA转换芯片的工作模式和参数来实现DA转换操作。
在进行实验时,我们可以分别调整输出的数值范围、输出精度等参数,以验证DA转换的准确性和可靠性。
最后,我们可以通过读取模拟电路中的信号,并进行相应的计算和分析,来得到数字信号的模拟表示。
通过AD和DA转换实验,我们可以深入理解模拟信号与数字信号之间的转换原理和方法,学习如何编写控制程序来实现AD和DA转换操作,并通过实验数据的收集和分析来验证实验结果。
微机数模转换实验报告
微机数模转换实验报告实验目的本实验旨在探究微机数模转换的原理和应用,并通过实际操作,掌握利用微机进行数模转换的方法。
实验背景在微机系统中,数字信号与模拟信号之间的转换是非常常见的操作。
其中,数字信号是指由离散值组成的信号,而模拟信号是连续变化的信号。
将数字信号转换为模拟信号的过程称为数模转换,而将模拟信号转换为数字信号的过程称为模数转换。
实验原理微机数模转换的原理是利用数模转换芯片将数字信号转换为模拟信号。
常见的数模转换芯片有DAC(数模转换器)和PWM(脉宽调制器)。
DAC是一种能将数字信号转换为模拟信号的电子元件。
它通过将一系列数字量映射到一系列连续变化的模拟信号,实现信号的转换。
DAC的输入可以是多位的数字信号,输出是一个连续的模拟电压信号或电流信号。
PWM是一种通过改变信号的脉冲宽度来实现模拟信号的转换的电子元件。
它的原理是通过改变周期相同的脉冲信号的脉冲宽度,从而改变信号的平均值,实现模拟信号的转换。
实验步骤1. 准备工作:选取适当的数模转换芯片,并准备好相关的电路连接材料。
2. 按照电路图连接相关电路。
根据使用的芯片类型不同,连接方式也会有所区别。
可以借助数字信号发生器和示波器进行连接测试,确保连接正确。
3. 编写控制程序。
根据芯片使用的控制方式,编写相应的控制程序。
使用汇编语言或C语言编写的程序,通过微机控制芯片的工作。
4. 调试程序。
将程序下载到微机上,通过调试工具进行运行。
可以通过示波器观察输出信号是否正确。
5. 进行实验。
根据实验要求,输入相应的数字信号,观察模拟信号的输出情况。
6. 记录实验结果。
记录实验参数、实验过程和实验结果,包括输入数字信号和输出模拟信号的对应关系。
实验结果经过实验,我们成功实现了微机数模转换的功能。
通过调整输入的数字信号,我们观察到模拟信号的输出随之改变。
在实验过程中,我们发现芯片的选择和电路的连接非常关键,正确的连接方式和合适的芯片可以确保实验的顺利进行。
实验报告1(码制转换)
课程名称:单片机原理与嵌入式系统
实验名称:码制变换
实验报告
班级
姓名学号
同组人姓名
实验日期年月日
一、实验目的
通过上机编、调程序,加强对ASM51汇编语言的学习,掌握码制变换类程序的编制。
对程序编制能力、程序排错能力进行训练。
二、实验内容
编程实现以下任务:
1.将A中单字节二进制数转变为BCD码存于内部RAM 的20H~22H 中。
2.将A中两位十六进制数转变为ASCII码存于内部RAM 的20H~21H 中。
三、实验设备
1.PC机.
b2000P单片机仿真实验系统
四、调试通过的软件清单:
1.二进制码到BCD码的转换
2.十六进制码到ASCII码的转换
五、实验收获、总结
六、思考题
1.BCD码到二进制码的转换
2.ASCII码到十六进制码的转换
1。
微机原理实验指导书 (1)
实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。
2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。
系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。
4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。
程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。
注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。
输入程序后可通过反汇编查看程序。
(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。
可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。
(分别参考前)。
④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。
数码转码编程及程序调试
实验二 数码转码编程及程序调试一. 实验目的1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的理解;2. 进一步熟悉键盘使用方法;3. 进一步熟悉调试程序的方法。
二. 实验设备装有汇编软件的IBMPC 机一台三. 实验内容及步骤计算机输入设备输入的信息一般ASCii 码或BCD 码表示的数据或字符,CPU 处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设有必须一外设的要求变为ASCII 码,BCD 码或七段显示码等。
因此,在应用软件中各累数制的转换和代码的转换是必不可少的。
计算机于外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。
1.将ASCII 码表示的十进制数转换为二进制数十进制数可表示为:l nl l n n n n D D D D 10*10*...10*10*600011∑=--=+++L D 代表十进制1,2,3,···9,0;((...(10*0=∑=l nl l D 012110*)...10*)10*)10*D D D D D n n l n +++++--由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn 开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。
程序流程图如图2-2。
这里我们规定:被转换的ASCII 码十进制数存放在3500h ~3504h 单位中。
而转换结果在3510~3511单位中。
实验步骤(1) 输入程序并检查无误。
(2) 在3500~3504h 单元存入十进制12的ASCII 码,即e3500,并输入3030303132。
(3) g =2000,运行程序,并用CTR+C 来中断程序返回监控态。
(4) 用d3510查看结果,应为3510 0C 00(5) 反复试几组数,考查程序的正确性。
流程图如下代码如下:assume cs:codecode segmentstart:mov ax,0mov ds,axmov di,3510hmov si,3500hmov bx,0ahmov cx,5A :mov dl,byte ptr [si]sub dl,30hmul bladd al,dlinc siloop Amov [di],axmov ax,4c00hint 21hcode endsend start调试如下:(1)输入程序并检查无误。
数制转换的实验报告
数制转换的实验报告《数制转换的实验报告》在这个实验中,我们将探讨数制转换的原理和应用。
数制转换是指将一个数从一种进制表示转换成另一种进制表示的过程。
在日常生活中,我们经常会遇到不同进制的数,比如二进制、十进制、十六进制等。
了解数制转换的原理和方法,可以帮助我们更好地理解和应用数字。
首先,我们将从最简单的十进制转换为二进制开始实验。
十进制是我们最熟悉的进制,它是以10为基数的。
而二进制是计算机中常用的进制,它是以2为基数的。
我们可以通过不断地除以2,取余数的方法,将十进制数转换为二进制数。
例如,将十进制数13转换为二进制数的过程如下:13 ÷ 2 = 6 余 16 ÷ 2 = 3 余 03 ÷ 2 = 1 余 11 ÷2 = 0 余 1将余数从下往上排列,得到二进制数1101,即13的二进制表示。
接下来,我们将进行从二进制到十进制的转换实验。
这个过程与十进制到二进制的过程相反,我们需要将二进制数的每一位与对应的权值相乘,然后相加得到十进制数。
例如,将二进制数1101转换为十进制数的过程如下:1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 13通过这个实验,我们可以更深入地理解数制转换的原理和方法。
数制转换在计算机科学、电子工程等领域有着广泛的应用,掌握好数制转换的知识可以帮助我们更好地理解和应用这些领域的知识。
总之,数制转换是我们日常生活中不可或缺的一部分,通过实验我们可以更好地理解其原理和方法,并且在实际应用中灵活运用。
希望通过这个实验,我们能够对数制转换有更深入的了解,并且能够将这些知识应用到实际生活和工作中去。
微机原理与接口技术实验——码转换报告
一、实验内容:编制程序,把十进制数15786转化成二进制数。
提示:15786=1×10×10×10×10+5×10³+7×10²+8×10+6循环CX=5实验要求:1.绘出练习1和2的程序流程图。
2编写完整的程序,上机调试。
3使用DEBUG调试命令,查看中间结果,并查看最终结果。
二、程序清单DATA SEGMENTBUFFER1 DD 15786DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,BUFFER1 ;取出十进制数的首地址MOV BX,[SI] ;将首地址的内容放到寄存器MOV CX,16 ;循环次数NEXT1:MOV DL,31H ;1SHL BX,1 ;左移一位,将最高位移到进位位中JC NEXT2 ;进位位为1,即最高位为1,跳转输出1MOV DL,30H ;否则输出0NEXT2:MOV AH,02HINT 21HLOOP NEXT1 ;循环MOV AH,4CHINT 21HCODE ENDSEND START程序流程图见下页:程序流程图三、运行结果程序编译:程序链接:程序运行结果:程序运行结果:15786十进制数转换为二进制输出为0011 1101 1010 1010四、调试分析及体会调试分析:在此次编程中第一次编出的程序经过编译没有错误之后经过链接运行结果不正确。
首先自己进行检查,通过检查发现自己没有认真,在编写程序时,误把十进制数15786写成了16进制,写为了15786H(因为这个自己一直没有检查出来,还在调试如何改正),后来检查了出来。
因为这个缘故,在进行把数字取出放入寄存器的时候,由于BX是16位数据寄存器,而20位的数放不下,于是在循环输出二进制数时,首先不会输出20位,其次输出的结果是与15786H相关的二进制,结果完全错误。
数码转换实验报告材料微机原理
实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1. ACSII码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。
将其转换成非压缩型(非组合型) BCD码后,再存入DATA2开始的单元中。
若输入的不是十进制数,则相应单元中存放FFH。
调试程序,用D命令检查执行结果。
2. BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中。
调试程序,用D命令检查执行结果。
3. 十六进制数转换为ASCII码编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCⅡ码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出来。
三、实验预习1. 复习材料中有关计算机数据编码部分的内容。
2. 按要求编写程序。
四、实验步骤1. 编辑源文件,经汇编连接产生EXE文件。
2. 用DEBUG调试、检查、修改程序。
五、实验内容1. ACSII码转换为非压缩型BCD码STACK SEGMENT PARA STACK 'STACK'DB 256 DUP(?) ; 为堆栈段留出256个字节单位STACK ENDSDATA SEGMENT PARA 'DATA' ;定义数据段DATA1 DB 32 ; 缓冲区最大长度DB ?DB 32 DUP(?)DATA2 DB 32 DUP(?)DATA ENDSCODE SEGMENT ; 定义代码段ASSUME SS:STACKASSUME CS:CODEASSUME DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,DATA1 ; 规定:DX存放输入字符串的缓冲区首地址MOV AH,0AHINT 21H ; 字符串输入 AL=键入的ASCII码LEA SI,DATA1LEA DI,DATA2 ; DI存放DATA2首地址INC SIMOV CL,[SI] ; 取输入字符串长度INC SI ; 指向第一个输入字符LP1: MOV AL,[SI]SUB AL,30H ; 输入的字符存为ASCII码,将其转换成十进制数CMP AL,0 ; 若AL<0(AL-0<0),跳转到LP2JL LP2CMP AL,9 ; 若AL>9(AL-9>0),跳转到LP2JG LP2MOV BL,AL ; 将AL->BLMOV [DI],BL ; 将结果存到DATA2开始的单元中INC DIINC SIDEC CLJMP LP1LP2: MOV AL,0FFH ; 若输入的不是十进制数,在相应的单元存放FFH; 以字母开头的十六进制数前面需加'0' MOV BL,AL ; 将AL->BLMOV [DI],BLINC DIINC SIDEC CL CL=CL-1JNZ LP1 ; CL=0,执行LP3中的语句LP3: MOV AH,4CH INT 21HCODE ENDSEND START2. BCD码转换为二进制码DATA SEGMENTDATA1 DW 2497HDATA2 DW ?DATA ENDSCODE SEGMENTASSUME SS:STACK,CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR BX,BX ; 累加单元清0(BX=0)MOV SI,0AH ; 设置乘数10MOV CL,4 ; 指4位BCD码MOV CH,3 ; 循环次数=3MOV AX,DATA1 ; 取十进制数LP: ROL AX,CL ; 取数字MOV DI,AX ; 保存当前AX值AND AX,0FH ; 屏蔽高位ADD AX,BX ; 累加MUL SIMOV BX,AXMOV AX,DIDEC CH ; 循环次数减1JNZ LP ; 以上完成循环三次ROL AX,CL ; 取个位数字AND AX,0FH ; 屏蔽高位ADD AX,BX ; 进行累加,直接将最后的累加结果放到AX中MOV DATA2,AXMOV AH,4CHINT 21HCODE ENDSEND START3. 十六进制数转换为ACSII码STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 24H,06DHDATA2 DB 4 DUP(?) ; 存放ASCII码JUMP DB 4 DUP(?) ; 4位十六进制数分别存放在DATA3的4个字节中DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,JUMPMOV CL,2 ; 循环2次,取两次两位十六进制数LP0: MOV AL,[SI] ; 取2位十六进制数AND AL,0F0H ; 低四位为零ROR AL,4 ; 右移4位相当于除以16MOV [DI],AL ; 高位数存放在高地址字节中INC DIMOV AL,[SI] ; 取2位十六进制数AND AL,0FH ; 高四位为零MOV [DI],AL ; 低位数存放在低地址字节中INC SIINC DIDEC CLJNZ LP0LEA SI,JUMP ; SI=JUMP的首地址偏移量LEA DI,DATA2 ; DI=DATA2的首地址偏移量MOV CL,4 ; 因为是四位十六进制数,所以设置为循环4次LP1: MOV AL,[SI] ; 取JUMP中的十六进制数CMP AL,9JG LP3 ; 若AL>9(AL-9>0),跳转到LP3ADD AL,30H ; 0~9H+30H=ASCIIJMP LP3LP2: ADD AL,37H ; A~FH+30H=ASCIILP3: MOV [DI],AL ; 将ASCII码依次存入DATA2中INC DIINC SIDEC CLJNZ LP1MOV AH,09HINT 21HMOV DX,OFFSET DATA2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START六、实验习题与思考1. 编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。
数制转换实验报告
实验报告实验栈的应用——数制转换姓名:班级:学号:试验时间:1、问题描述该程序以顺序栈为工具,实现十进制数到其他一至十六进制数的转换。
设计中采用了一个循环,使得用户可重复进行数值转换。
需转换的十进制数和要转换的数制均通过交互方式输入。
因采用了顺序栈,程序中包含SqStack.h。
2、算法设计源程序:#include<iostream.h>//cout,cin#include"process.h"//exit()#include"stdio.h"//EOF,NULL#include"SqStack.h"template<class T>void convert(T n,T m){//把十进制数n转换为m进制数T e;char c;SqStack<int> s(10);cout<<"需转换的十进制数是:"<<n<<endl;while(n){try{s.Push(n%m);}catch(char *err){ cout<<err<<endl; }n=n/m;}cout<<"转换为"<<m<<"进制数为:";while(!s.StackEmpty()){try{ e=s.Pop ();if(e<10)cout<<e<<'\t';else{c='A'+e-10;cout<<c<<'\t';}}catch(char *err){ cout<<err<<endl; }}//cout<<endl;}void main(){int n,m;//分别存放被转换的数及转换数制char ans; //工作变量,存放是否继续的应答int flag=1;//工作变量,是否继续的标志while(flag){cout<<"输入需转换的十进制数: ";cin>>n;cout<<"输入需转换的数制: ";cin>>m;convert(n,m);cout<<"继续吗(Y/N)?"<<endl;cin>>ans;if(ans=='Y'||ans=='y')flag=1;else{flag=0;cout<<"程序运行结束,BYe-Bye!"<<endl;}}//while}//main3、运行与测试4、思考题阅读源程序,回答下列问题。
华理数字逻辑实验一编译码及代码转换
实验一实验名称编译码及代码日期一、实验目的设计实现一个译码器;设计一个余三码编码器;设计实现一个将余三码转换成8421码的代码转换电路。
二、实验内容1、验证编码器74LS147的功能。
2、用7483,设计实现一个将余三码转换成8421码的代码转换电路。
3、用7483和74LS147,设计实现一个余三码编码器。
三、电路图1.74LS147功能的验证实验图2.用7483将余三码变为8421码实验图3,用7483和74LS147实现余三码编码器实验图四、实验操作及运行结果1.实验仪器和设备数字逻辑实验箱EEEC-010B 1台、万用表1只、元器件(74147 1块,7483 1块,74LS00 2块)、导线若干;2.74LS147编码器逻辑功能测试:从引脚图看出,9个输入端,4个输出端,应该为二-十进制编码器,同时输出端反相,应该为反码输出,输入端反相,应该为低电平有效下面开始测试,把74LS147接入电路板,如电路图1所示连线,在9个输入端依次输入信号,记录输出信号,灯亮为1,不亮为0-------得到真值表如下所示由表中数据可以知道,这为为二-十进制优先编码器,反码输出,低电平有效;当九个输入端都为高电平时,为0,故不需要第十个输入端。
2.用7483设计实现一个将余三码转换成8421码的代码转换电路余三码是8421码的每个码组加3(0011)形成的。
余三码也具有对9互补的特点,即它也是一种9的自补码,常用于BCD码的运行电路中;由数学分析知:余三码+10000-0011=10000+8421码余三码+1101=10000+8421码因此可以将余三码和1101的信号输入到加法器7483中,输出结果省去进位即可以输出8421码,实现余三码到8421码的转换按电路图二连接,输入不同的信号,记录输出信号,验证电路图,得到真值表如下所示:结果证明电路图是正确的,这是余三码转换成8421码的代码转换电路;3.用7483和74147实现余三码编码器用74147编码对输入实现二十进制优先编码,便得到8421码的反码,因此用 74LS147的输入端为电路的输入端,输出端都接非门(用与非门实现即A A A =∙)后接到7483的相对应的4个端口,另外四个端口接代表0011的低低高高电平,则7483的输出信号即为余三码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一数码转换编程及程序调试一、实验目的掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
熟悉程序调试的方法。
二、实验设备Pc 微机一台,TD-PITE 实验装置一套。
三、实验内容及步骤计算机输入设备输入的信息一般是由ASSII 码或BCD 码表示的数据或字符,CPU 一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。
因此,在应用软件中,各类数制的转换是必不可少的。
b5E2RGbCAP 计算机与外设间的数制转换关系如图所示2-1所示,数制对应关系如表2-1所示。
BCD 码二进制二进制图2-1 数制转换关系表1 数制对应关系表1. 将ASCII码表示的十进制数转换为二进制数十进制表示为:Di代表十进制数0,1,2, (9)上式转换为:由此可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
p1EanqFDPw参考流程:实验程序:PUBLIC SADDSSTACK SEGMENT STACKDW 64 DUP(?>SSTACK ENDSDATA SEGMENTSADD DB 30H,30H,32H,35H,36H 。
十进制数:00256DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AXMOV BX, 000AHMOV CX, 0004HMOV AH, 00HMOV AL, [SI]SUB AL, 30HA1: IMUL BXMOV DX, [SI+01]AND DX, 00FFHADC AX, DXSUB AL, 30HINC SILOOP A1A2: JMP A2CODE E NDSE ND START实验步骤:<1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;<2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;<3)运行程序,然后停止程序;<4)查看AX寄存器,即为转换结果,应为:0100 ;<5)反复试几组数据,验证程序的正确性。
2. 将十进制数的ASCII码转换为BCD码从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD码后,再按位分别存入350AH起始的内存单元内。
若输入的不是十进制的ASCII码,则对应存放结果的单元内容为“FF”。
由表1可知,一字节ASCII码取其低四位即变为BCD 码。
DXDiTa9E3d实验程序:STACK S EGMENT STACKDW 64 DUP(?>STACK E NDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 0005H 。
转换位数MOV DI, 3500H 。
ASCII码首地址A1: MOV BL, 0FFH 。
将错误标志存入BLMOV AL, [DI]CMP AL, 3AHJNB A2 。
不低于3AH则转A2SUB AL, 30HJB A2 。
低于30H则转A2MOV BL, ALA2: MOV AL, BL 。
结果或错误标志送入AL MOV [DI+0AH],AL 。
结果存入目标地址INC DILOOP A1A3: JMP A3CODE ENDSEND START实验步骤:<1)自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统;<2)在3500H~3504H单元中存放五位十进制数的ASCII码,即:键入E3500后,输入31,32,33,34,35;RTCrpUDGiT<3)运行程序,然后停止程序运行;<4)键入D350A,显示运行结果,应为:0000:350A 01 02 03 04 05 CC …5PCzVD7HxA<5)反复测试几组数据,验证程序功能。
3. 将十六位二进制数转换为ASCII码表示的十进制数十六位二进制数的值域为0~65535,最大可转换为五位十进制数。
五位十进制数可表示为:Di:表示十进制数0~9将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。
自行绘制程序流程图,编写程序可参考例程。
例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。
jLBHrnAILg实验程序:STACK S EGMENT STACKDW 64 DUP(?>STACK E NDSCODE SEGMENTASSUME CS:CODESTART: MOV SI,3500H 。
源数据地址MOV DX,[SI]MOV SI,3515H 。
目标数据地址A1: DEC SIMOV AX,DXMOV DX,0000HMOV CX,000AH 。
除数10DIV CX 。
得商送AX, 得余数送DXXCHG AX,DXADD AL,30H 。
得Di得ASCII码MOV [SI],AL 。
存入目标地址CMP DX,0000HJNE A1 。
判断转换结束否,未结束则转A1 A2: CMP SI,3510H 。
与目标地址得首地址比较JZ A3 。
等于首地址则转A3,否则将剩余地址DEC SI 。
中填30HMOV AL,30HMOV [SI],ALJMP A2A3: JMP A3CODE ENDSEND START实验步骤<1)编写程序,经编译、链接无误后,装入系统;<2)在3500H、3501H中存入0C 00;<3)运行程序,然后停止运行;<4)检查运行结果,键入D3510,结果应为:30 30 30 31 32;<5)可反复测试几组数据,验证程序的正确性。
4. 十六进制数转换为ASCII码由表1中十六进制数与ASCII码的对应关系可知:将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。
将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。
自行绘制流程图。
xHAQX74J0X实验程序SSTACK SEGMENT STACKDW 64 DUP(?>SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX,0004HMOV DI,3500H 。
十六进制数源地址MOV DX,[DI]A1: MOV AX,DXAND AX,000FH 。
取低4位CMP AL,0AHJB A2 。
小于0AH则转A2ADD AL,07H 。
在A~FH之间,需多加上7HA2: ADD AL,30H 。
转换为相应ASCII码MOV [DI+0DH],AL 。
结果存入目标地址DEC DIPUSH CXMOV CL,04HSHR DX,CL 。
将十六进制数右移4位POP CXLOOP A1A3: JMP A3CODE ENDSEND START实验步骤<1)编写程序,经编译、链接无误后装入系统;<2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B 20;<3)先运行程序,然后再停止运行;<4)键入D350A,显示结果为:0000:350A 32 30 33 42 CC …;<5)反复输入几组数据,验证程序功能。
5. BCD码转换为二进制数将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,自行绘制流程图并编写程序。
LDAYtRyKfESSTACK SEGMENT STACKDW 64 DUP(?>SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: XOR AX, AXMOV CX, 0004HMOV SI, 3500HMOV DI, 3510HA1: MOV AL, [SI]ADD AL, ALMOV BL, ALADD AL, ALADD AL, ALADD AL, BLINC SIADD AL, [SI]MOV [DI], ALINC SIINC DILOOP A1A2: JMP A2CODE ENDSEND START 实验步骤<1)编写程序,经编译、链接无误后装入系统;<2)将四个二位十进制数的BCD码存入3500H~3507H中,即:先键入E3500,然后输入01 02 03 04 05 06 07 08;Zzz6ZB2Ltk<3)先运行程序,然后停止运行;<4)键入D3510显示转换结果,应为:0C 22 38 4E;<5)反复输入几组数据,验证程序功能。
申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。