实验二 数码转换编程及程序调试
实验(二)DA转换实验
实验二D/ A转化实验一、实验目的:(1)掌握D/A转换与单片机的接口方法。
(2)了解D/A芯片PCF8591转换性能及编程方法。
(3)了解单片机系统中扩展D/ A转换芯片的基本方法二、实验内容利用实验仪上的PCF8591做D/A转换实验,写入DA的数模值,然后累加该值,显示该值到数码管,延时100m后循环写入变化后的DA值,观察LED9的变化。
三、实验说明A/ D转换器大致分有三类:一是双积分A/ D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/ D转换器,精度、速度、价格适中;三是并行A/ D 转换器,速度快,价格也昂贵。
PCF8591属第二类,PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。
PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。
在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。
四、实验步骤(1)单片机P0口与J3相连,用作数码管显示(2)单片机P2.2与J2(B)相连,P2.2与J2(A)相连。
(3)跳帽J50 连接,给数码管供电。
(4)单片机P2.0与J8(SCL)相连,最为时钟输出,单片机P2.1与J8(SDL)相连最为数据输入输出。
(5)J31中AD0与W4用跳帽相连,选择AD通道。
(6)利用keil软件编写程序,并且用STC程序下载工具下载程序。
(7)观察LED9的变化。
华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)
微机原理实验报告班 级: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 环境,写字板,记事本等中输入源程序。
(实验二)二进制码转换为BCD码实验报告
实验二二进制码转换为BCD码一、实验目的1、掌握数码转换基本方法,加深对数码的理解。
2、用于十进制BCD码显示。
二、实验内容将AX的内容转换为十进制BCD码。
三、实验程序框图四、实验步骤脱机模式:(1)在P.态,按SCAL键,输入2CE0,按EXEC键。
(2)复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H 单元中,故其值应为06、05、05、03、05。
联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S2.ASM 文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)复位“系统复位”键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。
注:操作过程参照“实验一二进制多位加法运算”。
五、实验程序清单X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\S2.ASM;将AX拆为5个BCD码,并存入Result开始的5个单元DATA SEGMENT AT 0 ;S2.ASM,BIN-->BCDORG 4000HRESULT DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATAORG 2CE0HSTART PROC NEARMOV AX, DATAMOV DS, AXMOV DX,0000HMOV AX, 65535MOV CX, 10000DIV CXMOV RESULT, AL ; 除以 10000, 得WAN位数MOV AX,DXMOV DX,0000HMOV CX, 1000DIV CXMOV RESULT+1, AL ; 除以 1000, 得QIAN位数MOV AX,DXMOV DX,0000HMOV CX, 100DIV CXMOV RESULT+2, AL ; 除以 100, 得BAI位数MOV AX,DXMOV DX,0000HMOV CX, 10DIV CXMOV RESULT+3, AL ; 除以 10, 得SHI位数MOV RESULT+4, DL ; 得GE位数JMP $CODE ENDSEND START。
实验二数码转换编程及程序调试
实验二数码转换编程及程序调试实验二数码转换编程及程序调试一、实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
2. 熟悉键盘使用方法。
3. 熟悉调试程序的方法二、实验设备TDN86/51或TDN86/88教学实验系统一台三、实验内容及步骤计算机输入设备输入的信息一般是由ASCII 码或BCD 码表示的数据或字符,CPU 一般均用二进制进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。
1. 将ASCII 码表示的十进制数转换为二进制数十进制表示为:∑=--?=?++?+?ni i i n n n n D D D D 0001110101010 ┅┅┅┅┅┅┅┅┅(1) Di 代表十进制数1,2,3,┅9,0;上式转换为:011010)10)10((((10D D D D D n n i n i i+?++?+?=?-=∑ ┅┅┅┅┅┅┅┅┅(2)由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
实验步骤(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)在3500-3504H 单元存入十进制数12的ASCII 码,即E3500↙,并输入30 30 3031 32。
(3)G=0000:2000↙,运行以上程序,并用CTRL+C 来中断程序,返回监控状态。
(4)用D3510↙查看结果,应为:3510 0C 00。
(5)反复试几组数,考察程序的正确性。
图2-1 数码转换关系二进制2. 将十进制数的ASCII 码转换为BCD 码设从键盘输入的五位十进制数的ASCII 码已存放在3500H 起始的内存单元内,把它转换为BCD 码后,再按位分别存入350AH 起始的内存单元内。
实验二 模_数转换实验
实验二模/数转换实验一.实验要求了解A/D芯片ADC0809转换性能及编程。
编制程序通过0809采样输入电压并转换成数字量值。
二.实验说明电路实现见主板模块B5,具体说明请见用户手册。
ADC0809的片选CS0809接0A0H。
由于0809的A、B、C三脚依次接至A0、A1、A2,所以模拟输入通道IN0~IN7的端口地址为0A0~0A7。
其中IN0与模拟地之间预先接一个500欧电阻,并提供接线端子,供外接电烤箱使用。
IN1~IN5为标准接法,有效输入电平为0V~+5V。
IN6、IN7为双极性输入接法,有效输入电平为-5V~+5V。
模数转换结束信号EOC引出至EOC插孔,并经反向后引出至EOC/孔。
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的AD C0809属第二类,是八位A/D转换器。
典型采样时间需100us。
编程中应该保证A/D转换的完成,这可以在程序中插入适当延时代码或监视EOC信号的电平来实现。
后一种方式尤其适合采用中断处理。
三.实验步骤1. 接线:模块B5的IN0接电位器模块C5的Y 。
C5的X 和Z 分别用短路套套接到Vcc 和GND 。
2. 示例程序:见Cp2源文件。
程序流程如下图所示。
3. 现象:由电位器模块C5提供0V ~+5V 可调的电平值;经模块B5中0809的通道0采样;采样值送到从86000开始的扩展存贮器单元贮存。
程序执行方法:打开LCAACT 软件中“设置”->“实验机”,将其中的程序段地址设为8100,偏移地址0000。
然后选择“工具”->“加载目标文件”,本实验加载C:\AEDK\LCAACT\试验软件\CP2.EXE, 然后在对话窗口中输入G8100:0000,回车,等待几秒钟后按实验机的复位键,此时程序运行结束,再输入D8600:0000用户可以察看该段存贮器内容来观察实际采样转换的结果。
单片机二进制BCD码转换实验程序流程图
二进制BCD码转换一、实验目的1.掌握简单的数值转换算法2.基本了解数值的各种表达方法二、实验说明单片机中的数值有各种表达方式,这是单片机的基础。
掌握各种数制之间的转换是一种基本功。
我们将给定的一字节二进制数,转换成二十进制(BCD)码。
将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。
三、实验内容及步骤1.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
2.启动PC机,打开KEIL软件,软件设置为模拟调试状态。
在所建的Project文件中添加TH2.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA) (在MEMORY#3中输入D:30H 回车),点击暂停按钮,观察地址30H、31H、32H的数据变化,30H更新为01,31H更新为02,32H更新为03。
用键盘输入改变地址30H、31H、32H的值,点击复位按钮后,可再次运行程序,观察其实验效果。
修改源程序中给累加器A的赋值,重复实验,观察实验效果。
3.打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序(见光盘中的程序文件夹)1.源程序RESULT EQU 30HORG 0000HLJMP STARTBINTOBCD:MOV B,#100DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#10DIV ABMOV RESULT+1,A ;余数除以10得十位数MOV RESULT+2,B ;余数为个位数RETSTART:MOV SP,#40HMOV A,#123CALL BINTOBCDLJMP $END2.流程图。
单片机实验二数制转换类程序设计
单片机实验二数制转换类程序设计【实验目的】1.了解数制转换的基本概念及原理。
2.掌握单片机对数制转换的程序设计方法。
【实验器材】1.STC89C52单片机实验箱2. Keil C51开发环境3.电源、连接线等【实验原理】数制转换是将一个数值在不同进制间互相转换的过程。
常见的进制包括二进制、八进制、十进制和十六进制。
在程序设计中,经常需要进行不同进制间的转换,例如从二进制转换为十进制、从十进制转换为十六进制等。
【程序设计】本实验设计一个数制转换类的程序,实现二进制、八进制、十进制和十六进制之间的转换。
基本思路:1.输入数字和当前进制。
2.根据当前进制将输入的数字转换为十进制。
3.根据目标进制将十进制数转换为目标进制并输出。
【程序示例】```#include <reg52.h>#include <stdio.h>//二进制转十进制int binaryToDecimal(char *binary)int length = 0;while (binary[length] != '\0')length++;}int decimal = 0;int base = 1;for (int i = length - 1; i >= 0; i--) if (binary[i] == '1')decimal += base;}base *= 2;}return decimal;//十进制转二进制void decimalToBinary(int decimal, char *binary) int index = 0;while (decimal > 0)binary[index++] = (decimal % 2 == 1) ? '1' : '0'; decimal /= 2;}binary[index] = '\0';//反转二进制字符串int i = 0;int j = index - 1;while (i < j)char temp = binary[i];binary[i] = binary[j];binary[j] = temp;i++;j--;}//十进制转八进制void decimalToOctal(int decimal, char *octal)int index = 0;while (decimal > 0)octal[index++] = (decimal % 8) + '0';decimal /= 8;}octal[index] = '\0';//反转八进制字符串int i = 0;int j = index - 1;while (i < j)char temp = octal[i];octal[i] = octal[j];octal[j] = temp;i++;j--;}//十进制转十六进制void decimalToHexadecimal(int decimal, char *hexadecimal)int index = 0;while (decimal > 0)int remainder = decimal % 16;if (remainder < 10)hexadecimal[index++] = remainder + '0';} elsehexadecimal[index++] = remainder - 10 + 'A'; }decimal /= 16;}hexadecimal[index] = '\0';//反转十六进制字符串int i = 0;int j = index - 1;while (i < j)char temp = hexadecimal[i];hexadecimal[i] = hexadecimal[j]; hexadecimal[j] = temp;i++;j--;}void maichar input[100];int currentBase; // 当前进制int targetBase; // 目标进制printf("请输入一个数字:");scanf("%s", input);printf("请输入当前进制:");scanf("%d", ¤tBase);printf("请输入目标进制:");scanf("%d", &targetBase);printf("转换结果为:");switch (currentBase)case 2://二进制转十进制int decimal = binaryToDecimal(input); //十进制转目标进制switch (targetBase)case 8:char octal[100];decimalToOctal(decimal, octal);printf("%s\n", octal);break;}case 10:printf("%d\n", decimal);break;}case 16:char hexadecimal[100]; decimalToHexadecimal(decimal, hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 8://八进制转十进制decimal = atoi(input);//十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(decimal, binary);printf("%s\n", binary);break;}case 10:printf("%d\n", decimal);break;}case 16:char hexadecimal[100]; decimalToHexadecimal(decimal, hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 10://十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(atoi(input), binary); printf("%s\n", binary);break;}case 8:char octal[100];decimalToOctal(atoi(input), octal); printf("%s\n", octal);break;}case 16:char hexadecimal[100];decimalToHexadecimal(atoi(input), hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 16://十六进制转十进制decimal = atoi(input);//十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(decimal, binary);printf("%s\n", binary);break;}case 8:char octal[100];decimalToOctal(decimal, octal);printf("%s\n", octal);break;}case 10:printf("%d\n", decimal);break;}}break;}```【实验结果】1.运行程序后,程序会提示输入一个数字、当前进制和目标进制。
单片机实验二 数制转换类程序设计
实验二数制转换类程序设计一.实验目的1.掌握各种常用数制的编码特点和相互转换的方法。
2.掌握逻辑运算类指令的使用方法。
3.掌握子程序的调用方法。
4.熟悉用仿真器调试应用程序的过程。
二.实验内容8031片内20H~24H单元放有五字节的压缩BCD码,编程实现下列操作:1.将上述BCD码转换成非压缩BCD码,放入片内30H开始的单元中;2.将30H单元开始的非压缩BCD码变成ASCII码,放入片内40H开始的单元中;3.将20H单元存放的压缩BCD码转换成对应的二进制数,放入片内50H开始的单元中;4.将片内50H单元开始的5字节二进制数转换成ASCII码,放入片内60H单元开始处。
三.编程提示1.要求分别用子程序实现各种数转换,以供调用。
2.8031片内20H~24H单元的压缩BCD码,可直接在内部数据存储器中给定。
3.观察30H~6FH数据区,以了解程序运行过程。
四.参考程序流程图开始主程序1.将BCD码转换成非压缩BCD码:可以用除法,或用分别取高低位的方式;2.将非压缩BCD码变成ASSII码:加30H;3.将压缩BCD码转换成对应的二进制数:取出高位乘以10,加上低位;4.将二进制数转换成ASCII码:将二进制数除以10,得到商和余数,分别转换为ASCII,注意大于9的数的转换。
MOV 20H,#12HMOV 21H,#30HMOV 22H,#56HMOV 23H,#78HMOV 24H,#99H1.在DATA区查看。
五、实验C语言程序#include<reg51.h>#define uchar unsigned charuchar i,count;uchar data *point1,*point2;uchar data table[5] _at_ 0x20;void bcd_cbcd();void bcd_assii();void bcd_b();void b_assii();void main(){table[0]=0x12;table[1]=0x30;table[2]=0x56;table[3]=0x78;table[4]=0x99;count=5;point1=0x20;point2=0x30;bcd_cbcd();count=10;point1=0x30;point2=0x40;bcd_assii();count=5;point1=0x20;point2=0x50;bcd_b();count=5;point1=0x50;point2=0x60;b_assii();while(1){;}}void bcd_cbcd() //BCD码转换成非压缩BCD码{for(i=0;i<count;i++){*point2=*point1/16;point2++;*point2=*point1%16;point2++;point1++;}}void bcd_assii() //非压缩BCD码变成ASCII码{for(i=0;i<count;i++){*point2=*point1+0x30;point1++;point2++;}}void bcd_b() //压缩BCD码转换成对应的二进制数{for(i=0;i<count;i++){*point2=(*point1/16)*10+*point1%16;point1++;point2++;}}void b_assii() //二进制数转换成ASCII码{for(i=0;i<count;i++){if(*point1/10<10)*point2=*point1/10+0x30;else*point2=*point1/10+0x37;point2++;if(*point1%10<10)*point2=*point1%10+0x30;else*point2=*point1/10+0x37;point2++;point1++;}}。
数码转换程序实验报告
数码转换程序实验报告实验报告:数码转换程序一、实验目的:本实验的目的是编写一个数码转换程序,能够将给定的十进制数转换为二进制数、八进制数和十六进制数。
二、实验原理: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编程语言的实际应用能力。
总的来说,本次实验使我更加熟悉了程序设计与算法,提高了我解决类似问题的能力。
实验2数据转换实验
实验2 数据转换实验一、实验内容:1.二进制数转换为十进制数2. ASCII码表示的十进制数转换为二进制数并显示3. 二进制数到十六进制数的转换4. ASCII码表示的十六进制数到二进制数的转换二、实验目的:1.复习利用masm.exe、link.exe等进行汇编、连接的方法及执行目的程序的方法。
2.复习汇编源程序结构。
3.复习数据转换的方法,进一步学习数据转换的意义、目的。
4.初步了解数据转换程序的构成。
了解在汇编中“二进制数、十进制数、十六进制数”的意义。
5.了解二进制到10、16进制;10、16进制到二进制转换程序设计方法。
三、实验源程序代码:1.二进制数转换为十进制数将D0起字单元中存放的16 位二进制数转换为十进制数,并将其ASCII码存入DI所指向的缓冲区BUF中,最后显示出来。
程序如下所示:DATA SEGMENTBUF DB 5 DUP(?) ;预留5单元空间D0 DW 2A5HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DI,OFFSET D0 ;将DI指向BUF的下一单元MOV AX,D0 ;取要用来变十进制数的数到AXMOV BX,10 ;准备除以10MOV CX,0 ;准备统计余数的个数CHANGE10: DEC DI ;准备存放余数,往前倒存INC CXMOV DX,0 ;将除数的高16位(在DX中)清0,DX也将用来存放余数DIV BX ;DX,AX除以BX (BX=10)ADD DL,30H ;余数变为ASCII码值MOV BYTE PTR[DI],DL ;存储十进制数CMP AX,0 ;是否为0?JNZ CHANGE10 ;不为0转CHANGE10 CHANGE11: MOV DL,BYTE PTR[DI] ;取出存放在BUF中的十进制数到DL供显示MOV AH,2 ;显示1个字符INT 21HINC DILOOP CHANGE11MOV AH,4CH ;程序结束并返回DOSINT 21HCODE ENDSEND START(1)请改变第三行的3A5H改变为4A3FH、0ABH、0A37BH后分别说明运行结果,并做解释。
东华大学微机实验原理实验报告材料
实验一基本程序编程和程序调试一、实验目的1、掌握数码转换等基本程序设计的技巧和方法。
2、熟悉DEBUG命令。
3、学会和掌握用DEBUG调试程序的方法。
二、实验设备PC机一台,装有DOS基本系统三、实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。
DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。
它共有19条命令完成相应的功能,命令及其格式可参阅附录一。
(一)DEBUG操作练习1)实验调试程序程序的功能是从3500H内存单元开始建立0-15共16个数据。
程序如下:地址(H)机器码(H)助记符2000 BF0035 MOV DI,35002003 B91000 MOV CX,00102006 B80000 MOV AX,00002009 9E SAHF200A 8805 MOV BYTE[DI],AL200C 47 INC DI200D 40 INC AX200E 27 DAA200F E2F9 LOOP 200A2011 F4 HLT2)实验步骤:(1)输入与修改①启动DOS,在DOS提示符下输入D E B U G后回车,屏幕立即显示DEBUG提示符“—”,表明已进入DEBUG状态,可以执行DEBUG的各种命令。
②用DEBUG中的汇编命令“A 地址”将程序建立在内存单元中。
在提示符“—”下键入:“A 2000 ”此时显示器上将会显示程序的段地址CS和偏移地址IP,你就可以输入以上的程序了。
即显示169C :2000 键入MOV DI,3500169C:2003 MOV CX,0010169C:2011 HLT:::③用反汇编命令“U 地址”检查程序在提示符“—”下,键入“U 2000↵”,将从2000内存单元开始的内容反汇编,屏幕上显示169C:2000 BF0035 MOV DI,3500169C:2003 B91000 MOV CX,0010169C:2006 B8000 MOV AX,0000::::::169C:2011 F4 HLT当发现程序有错时,可用汇编命令“A 地址”进行修改,如要修改200A单元中的指令,则键入“A 200A↵”,屏幕显示169C:200A ,然后再键入MOV BYTE[DI],AL↵,就把错误的程序改正了。
实验二 DA转换实验
华北电力大学实验报告||实验名称D/A转换实验课程名称计算机控制技术与系统||一、实验目的1、了解D/A转换的原理。
2、了解DAC0832元件的性能,学习如何利用D/A转换芯片将数字量转化为模拟量。
3、巩固模电、数电的相关知识,学习、了解在工程中的模拟量、开关量是如何形成的。
4、巩固学习汇编语言,并利用其产生波形。
二、实验要求利用DAC0832做D/A转换器,将数字量转化成电压模拟量,通过数字示波器显示出来。
三、实验设备数字示波器一台、Wave6000计算机实验培训系统一套、PC计算机一台四、实验内容实验接线如图1所示,之后编写程序,下载到Wave6000中,通过示波器查看产生的波形,通过波形发现D/A转换的规律。
图1五、实验原理1、D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟信号。
其特点是接收、保持和转换的是数字信息,不存在随温度和时间的漂移问题,因此电路的抗干扰性能较好。
2、本次实验采用8位D/A转换器DAC0832芯片,其特点为价格低廉、接口简单及转换控制容易等特点。
这类产品由8位输入锁存器、8位DAC寄存、8位D/A转换电路及转换控制电路组成。
六、实验步骤1、按图接线,对源程序进行编译;2、运行程序,调节示波器,得到锯齿波形、三角波形、方波。
七、实验结果1、按图1将实验箱中的线连接好,在电脑中利用Wave2000编写以下代码:将程序下载到实验箱中,得到图2所示的锯齿波。
图2得到的锯齿波波形的幅值为200mV,频率为1kHZ。
2、按图1将实验箱中的线连接好,在电脑中利用Wave2000编写以下代码:将程序下载到实验箱中,得到图3所示的三角波。
图3得到的三角波波形的幅值为200mV,频率为200HZ。
3、按图1将实验箱中的线连接好,在电脑中利用Wave2000编写以下代码:将程序下载到实验箱中,得到图4所示的方波。
图4得到的方波波形的幅值为200mV,频率为200HZ。
实验二 数字调制实验
实验二数字调制实验一、实验目的1.掌握绝对码、相对码概念及它们之间的编译码规则。
2.掌握用键控法产生2ASK、2FSK、2PSK、2DPSK信号的方法。
3.掌握相对码与2DPSK、绝对码与2PSK信号波形之间的对应关系。
4.了解2ASK、2FSK、2PSK、2DPSK信号的频谱与数字基带信号频谱之间的关系。
二、实验内容1.用示波器观察绝对码波形、相对码波形。
2.用示波器观察2ASK、2FSK、2PSK、2DPSK信号波形。
3.用频谱仪观察数字基带信号频谱及2ASK、2FSK、2DPSK信号的频谱。
三、基本原理本实验使用数字信源模块和数字调制模块。
1.数字信源本模块是整个实验系统的发送端,其原理方框图如图1-1所示。
本单元产生NRZ信号,信号码速率约为170.5KB,帧结构如图1-2所示。
帧长为24位,其中首位无定义,第2位到第8位是帧同步码(7位巴克码1110010),另外16位为2路数据信号,每路8位。
此NRZ信号为集中插入帧同步码时分复用信号。
发光二极管亮状态表示1码,熄状态表示0码。
本模块有以下测试点及输入输出点:∙ CLK 晶振信号测试点∙ BS-OUT 信源位同步信号输出点/测试点∙ FS 信源帧同步信号输出点/测试点∙ NRZ-OUT NRZ信号输出点/测试点图1-3为数字信源模块的电原理图,图1-1中各单元与图1-3中的元器件对应关系如下:∙晶振CRY:晶体;U1:反相器74LS04∙分频器U2:计数器74LS161;U3:计数器74LS193;U4:计数器74LS160∙并行码产生器K1、K2、K3:8位手动开关,从左到右依次与帧同步码、数据1、数据2相对应;发光二极管左起分别与一帧中的24位代码相对应∙八选一U5、U6、U7:8位数据选择器74LS151∙三选一U8:8位数据选择器74S151∙倒相器U20:非门74LS04∙抽样U9:D触发器74HC74图1-1 数字信源方框图图1-2 帧结构下面对分频器,八选一及三选一等单元作进一步说明。
实验2 码型变换实验报告
现代通信原理实验报告
实验室名称:通信原理实验室实验日期:年月日
学院
班级、组号
d、HDB3码的优缺点
五、实验步骤
六、实验结果及分析
输入:信号源的拨码开关SW04、SW05设置为00000101 00000000,500分频;
SW01、SW02、SW03设置为01110010 00110000 00101011
1、数字基带波形编码实验
NRZ码输入波形:
RZ码输出波形:
BNRZ码输出波形:
BRZ码输出波形:
2、数字基带波形解码实验(与NRZ码输入波形双踪)
NRZ码输入波形:
RZ码解码输出波形:
BNRZ码解码输出波形:
BRZ码解码输出波形:
3、传输码编码实验(与NRZ码输入波形双踪)
NRZ码输入波形:
AMI码编码输出波形:
HDB3码编码输出波形:
4、传输码解码实验(与NRZ码输入波形双踪)
姓名
实验项目名称
码型变换实验
指导
教师
成绩
教师签名:
年月日
一、实验目的
二、实验内容
三、实验仪器
四、实验原理(参考实验指导书P47实验九)
1、几种常见的数字基带波形(NRZ码、RZ码、BNRZ码、BRZ码)
2、两种常见的基带传输码(AMI码、HDB3码)
a、AMI码的编码规则
b、A
NRZ码输入波形:
AMI码解码输出波形:
华工微机原理实验二数码转码编程及程序调试实验报告
实验二 数码转码编程及程序调试一、实验目的1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的理解;2.进一步熟悉键盘使用方法;3.进一步熟悉调试程序的方法。
二、实验设备装有汇编软件的IBMPC 机一台 三、实验内容及步骤计算机输入设备输入的信息一般ASCii 码或BCD 码表示的数据或字符,CPU 处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设一般要求变为ASCII 码,BCD 码或七段显示码等。
因此,在应用软件中各累数制的转换和代码的转换是必不可少的。
将ASCII 码表示的十进制数转换为二进制数,十进制数可表示为: l nl l n n nn D D D D 10*10* (10)*10*60011∑=--=+++L D 代表十进制1,2,3,···9,0;((...(10*0=∑=l nl lD012110*)...10*)10*)10*D D D D D n n l n +++++--由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn 开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。
这里我们规定:被转换的五位ASCII 码十进制数存放在3500h ~3504h 单位中。
而转换结果在3800~3801单位中。
实验步骤(1) 绘制流程图;(2)输入程序并检查无误,编译链接通过。
程序代码:DATA SEGMENTORG 33FEHBUF DB 50 ;缓冲区长度DB ? ;预留用来存放实际长度DB 50 DUP(?) ;接收来自键盘的输入下信息MESG DB 'please input the BCD number you want to tranfer: $'ORG 3700HRES DW ? ;存放16进制数(输出结果)MESG1 DB 0DH,0AH,'the result is:'ARES DB 4 DUP(?), 'H$'DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 50 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATAMOV DS, AXMOV D X, OFFSET MESGMOV AH, 09H ;屏幕显示提示信息INT 21H ;输出字符串‘please input the BCD number you want to transfer:MOV DX, OFFSET BUFMOV AH, 0AH ;接收键盘输入INT 21H ;接收来自键盘输入的5位BCD码LEA SI, BUFADD SI, 2 ;偏移地址+2 使指针指向BCD码开始的地方MOV DX, 0MOV AX, 0MOV CX, 5 ;LOOP TIMES=5MOV BX, 10L1: MUL BXMOV DL,[SI]SUB DL, 30H ;将输入的BCD码转成十进制数ADD AX, DXINC SILOOP L1LEA SI, RESMOV [SI],AXMOV BX, AXLEA SI,ARESMOV CH,4MOV CL,4OUTPUT: ROL BX,CLMOV AX, BXAND AL, 0FHADD AL, 30HCMP AL, 39HJA ADDIJMP PRINTADDI: ADD AL, 07HPRINT: MOV [SI], ALINC SIDEC CHJNZ OUTPUTMOV DX, OFFSET MESG1MOV AH, 09H ;屏幕显示提示信息INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START编译链接程序:(3)运行程序,输入待转换的五位ASCII码十进制数,得到输出结果;示例:输入 12345 ,则输出3039H。
微机原理实验指导书 (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单元开始的数据区中。
南理工微机实验报告
南理工微机实验报告篇一:南京理工大学微机实验报告微机实验报告实验2.1汇编语言程序的调试与运行思考题:1、带进位加法程序:DISP MACRO XMOV DL,XMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB'65087'DATA2 DB'75087'N EQU $-DATA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1MOV BX,0MOV CX,NCALL DISPLDISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPLDISP '='LEA DI,DATA1MOV CX,NCALL ADDALEA SI,DATA1MOV BX,0MOV CX,NCMP DL,0JZ NEXTDISP '1'NEXT: CALL DISPLDISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROCDS1:MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROCPUSH CXMOV BX,0AD1:SUB BYTE PTR [SI+BX],30H SUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1CLCAD2:MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0MOV DL,0JNC AD3MOV DL,1AD3:ADD BYTE PTR [DI+BX],30H INC BXLOOP AD3POP CXRETADDA ENDPCODE ENDSEND START结果截图:2、上机步骤,调试方法:1、写代码完成功能要求,文件格式为.asm文件(如21si.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM.EXE)和链接工具(LINK.EXE)的文件夹。
实验二进制转换
《微机系统与接口技术》实验报告实验二数制转换实验学院:应用物理与材料学院专业:电子信息工程(光电工程)班级学号:130601/3113001607学生姓名:吴国超实验日期:2015年12月3日指导老师:李鹤喜成绩:五邑大学计算机学院接口与通信实验室二、数制转换实验2.1 实验目的1.掌握不同进制数及相互转换的程序设计方法,加深对数制转换的理解。
2.熟悉程序调试的方法。
2.2 实验设备PC 机一台,(TD-PITE 实验装置或TD-PITC 实验装置一套)。
2.3 实验内容计算机与外设间的数制转换关系如图2-1所示,数制对应关系如表2-1所示。
二进制图2-1 数制转换关系1. 十六进制数转换为ASCII 码由表2.1中十六进制数与ASCII 码的对应关系可知:将十六进制数0H —09H 加上30H 后得到相应的ASCII 码,AH —FH 加上37H 可得到相应的ASCII 码。
将四位十六进制数存放于起始地址为HEX 的内存单元中,把他们转换为ASCII 码后存入起始地址为ASC 的内存单元中。
2. 将ASCII 码表示的十进制数转换为二进制数十进制表示为:∑=--⨯=⨯+⋅⋅⋅+⨯+⨯ni ii01n 1n nn 10D 10D 10D 10D (1)D i 代表十进制数0,1,2,…,9; 上式转换为:012n 1n n ni ii D 10)D 10)D 10)D 10D (((10D +⨯+⋅⋅⋅+⨯+⨯+⨯⋅⋅⋅=⨯--=∑ (2)由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位D n 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
程序流程图如图2-2所示。
3.将十六位二进制数转换为ASCII 码表示的十进制数十六位二进制数的值域为0~65535,最大可转换为五位十进制数。
五位十进制数可表示为:01223344D 10D 10D 10D 10D N +⨯+⨯+⨯+⨯=D i :表示十进制数0~9将十六位二进制数转换为五位ASCII 码表示的十进制数,就是求D1~D4,并将它们转换为ASCII 码。
实验二数制及代码转换
实验二数制及代码转换1.实验目的① 了解微机系统中的数制与代码表示方法;② 掌握计算机中使用的各种代码转换方法;③ 掌握实现分支、循环的指令及其程序的编写方法;2.预习要求① 理解十进制数、十六进制数的数制表示方法;② 理解BCD码、ASCII码编码方式;③ 如何实现十六进制数与BCD码之间的转换;④ 如何实现ASCII码与BCD码之间的转换。
3.实验设备计算机1台。
4.基础型实验内容① 以下程序完成单字节的ASCII码到十六进制数转换,完成空白处程序填写,并在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
RESULT EQU 30HORG 0000HMOV A,#41H ;“A”的ASCII码CLR CSUBB A, ; 转换为十六进制值AMOV RESULT,ALJMP $END② 以下程序完成单字节的BCD码到十六进制数转换,,在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
RESULT EQU 30HORG 0000HMOV A,#23HMOV R0,AANL A,#0F0HSWAP AMOV B,#0AHMUL ABMOV RESULT,A ;转换高位MOV A,R0MOV B,#0FHADD A,RESULTMOV RESULT,A ;转换低位SJMP $END③ 以下程序将单字节十六进制数A的值转换为十进制数,存放在30H~32H中,完成空白处程序填写,并在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
RESULT EQU 30HORG 0000HMOV A,#7BHMOV B,#DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#MOV RESULT+1,A ;除以10得十位数MOV RESULT+2,B ;余数为个位数SJMP $END5.设计型实验内容① 设一串字母的ASCII存于30H起始的单元中,设计程序判断字母是否为大写字母,是则将大写字母的ASCII字符转换成小写字母的ASCII字符,为小写则不转换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 数码转换编程及程序调试
一、实验目的
1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
2. 熟悉键盘使用方法。
3. 熟悉调试程序的方法
二、实验设备
TDN86/51或TDN86/88教学实验系统一台
三、实验内容及步骤
计算机输入设备输入的信息一般是由ASCII 码或BCD 码表示的数据或字符,CPU 一般均用二进制进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。
1. 将ASCII 码表示的十进制数转换为二进制数
十进制表示为:
∑=--⨯=⨯++⨯+⨯n
i i i n n n n D D D D 00
01110101010 ┅┅┅┅┅┅┅┅┅(1) Di 代表十进制数1,2,3,┅9,0;
上式转换为:
011010)10)10((((10D D D D D n n i n i i
+⨯++⨯+⨯=⨯-=∑ ┅┅┅┅┅┅┅┅┅(2)
由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
实验步骤
(1) 输入程序并检查无误,经汇编、连接后装入系统。
(2) 在3500-3504H 单元存入十进制数12的ASCII 码,即E3500↙,并输入30 30 30
31 32。
(3) G=0000:2000↙,运行以上程序,并用CTRL+C 来中断程序,返回监控状态。
(4) 用D3510↙查看结果,应为:3510 0C 00。
(5) 反复试几组数,考察程序的正确性。
图2-1 数码转换关系
二进制
2. 将十进制数的ASCII 码转换为BCD 码
设从键盘输入的五位十进制数的ASCII 码已存放在3500H 起始的内存单元内,把它转换为BCD 码后,再按位分别存入350AH 起始的内存单元内。
若输入的不是十进制数的ASCII 码,则对应存放结果的单元内容为“FF ”。
由表2-1可知,一字节ASCII 码取其低四位即变为BCD 码。
实验步骤
(1) 输入程序并检查无误,经汇编,连接后装入系统。
(2) 在3500-3504H 单元中存放五位十进制数的ASCII 码,即:E3500↙,并输入31
32 33 34 35。
(3) G=0000:2000↙,运行以上程序。
(4) 用D3510↙查看结果,显示结果应为:
0000:350A 00 01 02 03 04 05 CC …
(5) 反复试几组数,考察程序的正确性。
3. 将十六位二进制数转换为ASCII 码表示的十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
算法:五位十进制数可表示为:
01122334410101010D D D D D N D +⨯+⨯+⨯+⨯=
i D :表示十进制数0~9
因此,将十六位二进制数转换为五位ASCII 码表示的十进制数,就是求1D -4D ,并将它们转换为ASCII 码。
实验步骤:
(1) 输入程序并检查无误,经汇编,连接后装入系统。
(2) 在3500-3504H 单元中存放0C00,运行程序并检查结果,影看到3510H-3514H 单元中的数以此为30 30 30 31 32。
(3) 反复试几组数,并运行程序,观察结果。
4. 十六进制数椟换为ASCII 码
设经过CPU 处理后的十六进制存放在起始地址为3500H 的内存中,把它们转换成ASCII 码之后,再分别存入起始地址为3510的内存单元中。
实验步骤:
(1) 输入程序并检查无误,经汇编、链接后装入系统。
(2) 在3500~3501H 单元中存入四位16进制数203B ,即:E500,并输入3B ,20。
(3) G =0000:2000↙,运行以上程序。
(4) D350A ,显示结果为: 0000:350A 42 33 30 32 CC ……输入数与结果ASCII 码对应顺序相反。
(5) 反复试几组数,考察程序的正确性。
5. BCD 码转换为二进制码
设四个二位十进制的BCD 码存放在起始地址为3500H 的单元中,转换出的二进制数码存入起始为3510的内存单元中。
实验步骤:
(1) 输入程序并检查无误,经汇编,连接后装入系统。
(2) 在3500~3501H 单元中存入四个十进制数(12,34,56,78)的BCD 码,即:E3500
↙,输入01.02.03.04.05.06.07.08。
(3)G=0000:2000,运行程序
(4)D3510↙,显示结果为3510 0C 00 22 00 38 00 4E 00。
(5)反复试几组数,考察程序的正确性。
四.思考题
1.程序2将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?
D的值?
2.将一个十六位二进制数转换为ASCII码十进制数时,如何确定
1
3.在十六进制数转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?。