数码码制转换程序实验
微机原理-数码转换实验报告
微机原理-数码转换实验报告-CAL-FENGHAI.-(YICAI)-Company One1实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1、ACSII码转换为非压缩型BCD码2、BCD码转换为二进制码3、十六进制数转换为ASCII码三、实验1、ACSII码转换为非压缩型BCD码DATA SEGMENT PARA 'DATA'DATA1 DB 8 DUP()DATA2 DB 8 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,SEG DATA1MOV DS,AXMOV DX,DATAMOV AH,0AHINT 21HLEA SI,DATA1MOV CL,[SI+1]LEA DI,DATA2ADD SI, 2CHK: MOV AL,[SI+2]CMP AL, '0'JB L01CMP AL, '9'JA L01SUB AL,30HMOV BL,ALMOV [DI], BLINC SIINC DIDEC CXJNZ CHKL01: MOV BL, 0FFHLOOP CHKMOV AH,4CH INT 21H CODE ENDSEND START2、BCD码转换为二进制码DATA SEGMENTBCD DB 1,2,3,4,5A DWDATA ENDSSTACK SEGMENT PARA STACK''STACK''STAPN DW 50 DUP()STACK ENDSCODE SEGMENTMAIN PROC FARASSUME DS:DATA,CS:CODE,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXCALL CONVERTMOV A,BXRETMAIN ENDPCONVERT PROC NEARPUSH SIPUSH CXPUSH AXMOV SI,4L1:MOV AL,BCD[SI]CBWXCHG AX, BXMOV CX,10DMUL CXXCHG AX,BXADD BX,AXDEC SIJNZ L1POP AXPOP CXPOP SIEXIT:MOV AH,4CH INT 21H CONVERT ENDP CODE ENDSEND START3、十六进制数转换为ASCII码DATA SEGMENTDATA1 DW 2010HDATA2 DB 4 DUP()DATA ENDSSTACKS SEGMENT PARA STACK 'STACK'STACKS ENDSCODES SEGMENTASSUME SS:STACKS,CS:CODESASSUME DS:DATASSTART: MOV AX, DATAMOV DS, AXLEA SI, DATA1MOV AX, [SI]MOV CL, 12SHR AX, CLMOV BL, ALCALL ASCMOV DATA2, BLCALL XSMOV AX, [SI]MOV CL, 8SHR AX, CLAND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+1, BLCALL XSMOV AX, [SI]MOV CL, 4SHR AX, CLAND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+2, BLCALL XSMOV AX, [SI]AND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+3, BLCALL XSMOV AH, 4CHINT 21HASC PROCCMP BL, 0AH JC LPADD BL, 07H LP: ADD BL, 30H RETASC ENDPXS PROCMOV DL, BL MOV AH, 02H INT 21HRETXS ENDPCODE ENDSEND START4、六进制数转换为十进制DATAS SEGMENTSTRING1 DB 0DH,0AH,'$'STRING2 DB 0DH,0AH,'$'DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV DX,OFFSET STRING1MOV AH,9INT 21HMOV CL,10HMOV BX,0NEWCHAR:MOV AH,1INT 21HSUB AL,30HJB DISPCBWXCHG AX,BXMOV CH,0MUL CXXCHG AX,BXADD BX,AXJNC NEWCHARDISP:MOV DX,OFFSET STRING2MOV AH,9INT 21HMOV CX,10000AGAIN:MOV DX,0MOV AX,BXDIV CXMOV BX,DXMOV DL,ALADD DL,30HCMP DL,39HJLE NEXTADD DL,7H NEXT:MOV AH,2INT 21HMOV DX,0MOV AX,CXMOV CX,10DIV CXMOV CX,AXCMP CX,0JNZ AGAINMOV AH,4CH INT 21H CODES ENDS END START5、十进制转换成七段码DATA SEGMENTDATA1 DB 3,4TABLE DB 23H,56H,42H,75H,00H,24H,67H,39H,20H DATA2 DB 2 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA ST: MOV DI, OFFSET BUFDAMOV CL, 80HMOV BX, OFFSET TABLE DISI: MOV BL, [DI+0]MOV AX, BXXLATMOV DX, PORTSEGOUT DX, ALMOV AL, CLMOV DX, PORTBITOUT DX, ALPUSH CXMOV CX, 30HDELAY: LOOP DELAYPOP CXCMP CL, 20HJZ QUITINC DISHR CL, 1JMP DISIQUITCODE ENDSEND ST。
(实验二)二进制码转换为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教学实验系统一台三、实验步骤1、十进制转换为二进制1)输入程序并检查无误后,经汇编、连接后装入系统2)在3500-3504H单元存入十进制数12的ASCII码3)G=0000:2000↙,运行程序4)用D3510↙查看结果2、BCD码转换为二进制码1)输入程序并检查无误后,经汇编、连接后装入系统2)在3500-3507单元中存入四个十进制数的BCD码3)G=0000:2000↙,运行程序四、实验结果1、键入E3500进行数据修改:>0000:3500=00_30>0000:3501=00_30>0000:3502=00_30>0000:3503=00_31>0000:3504=00_32运行之后D3510↙查看结果:>0000:3510 0C 00 CC CC CC CC CC CC2、键入E3500进行数据修改:>0000:3500=00_01>0000:3501=00_02>0000:3502=00_03>0000:3503=00_04>0000:3504=00_05>0000:3505=00_06>0000:3506=00_07>0000:3507=00_08运行之后D3510↙查看结果:>0000:3510 0C 00 22 00 38 00 4E 00。
微机实验数码转换
微机原理实验报告实验九:数码转换电子信息工程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. 掌握常用数字基带传输码型的编码规则。
3. 掌握常用CPLD实现码型变换的方法。
二、实验内容1. 观察NRZ码、RZ码、AMI码、CMI码、HDB3码、BPH码的波形。
2. 观察全0码或全1码时各码型波形。
3. 观察HDB3码、AMI码的正、负极性波形。
4. .观察NRZ码、RZ码、AMI码、CMI码、HDB3码、BPH码经过码型反变换后的输出波形。
5. 自行设计码型变换电路,下载并观察波形。
三、实验器材1. 信号源模块2. ⑥号模块(码型变换)3. ⑦号模块(载波同步)4. 20M双踪示波器5. 连接线(若干)四、实验原理(一)基本原理1、数字通信中,有些场合可不经过载波调制解调而让基带信号直接进行传输。
例如,市区内利用电传机直接电报通信,或者利用中继长距离直接传输PCM 信号等。
这种不使用载波调制装置而直接传送基带信号的系统,称为基带传输系统。
它的基本结构如图1所示:图1 基带传输系统基本结构结构说明:(1)信道信号合成器:产生适合于信传输的基带信号。
(2)信道可以是允许基带信号通过的媒质,如能通过从直流到高频的有线线路。
(3)接收滤波器:用来接收信号和尽可能排除信道噪声和其他干扰。
(4)抽样判决器:在噪声背景下判定与再产生基带信号。
2、基带调制与解调(1)数字基带调制器:把数字基带信号变换成基带信号传输的基带信号。
(2)基带解调器器:把信道基带信号变换成原始数字基带信号。
(3)对传输用的基带信号的主要要求(4)对代码:将原始信息符号编制成适合于传输用的码型;(5)对码型的电波形:电波形适宜于在信道中传输。
(二)编码规则1、NRZ码NRZ (Noreturn-To-Zero)码,全称是单极性不归零码,在这种二元码中用高电平和低电平(这里为零电平)分别表示二进制信息“1”和“0”,在整个码元期间电平保持不变。
例如图2:图2 NRZ码2、RZ码RZ (Return-To-Zero)码,全称是单极性归零码,与NRZ码不同的是,发送“1”时在整个码元期间高电平只持续一段时间,在码元的其余时间内则返回到零电平。
实验二 数码转换程序实验
数码转换程序实验实验目的掌握不同进制数及编码相互转换的程序设计方法。
实验内容及说明计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图1所示,数码对应关系如表1所示。
图1表11.将ASCII码表示的十进制数转换为二进制数十进制数可以表示为:D n×10n+D n-1×10n-1+…+D0×100=D i×10i其中D i代表十进制数1、2、3…9、0。
上式可以转换为:∑D i×10i=((…(D n×10+D n-1)×10)+D n-2)×10+…+D1)×10+D0由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位D n开始作乘10加次位的操作,依次类推,则可求出二进制数结果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。
转换过程的参考流程如图2所示。
The ascii code of decimal code are:000C。
执行了几步单步之后才有结果的。
图22.将十进制数的ASCII码转换为BCD码本实验要求将键盘输入的一个五位十进制数54321的ASCⅡ码存放在数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCⅡ码,则输出“FF”。
提示:一字节ASCⅡ码取其低四位即变为BCD码。
转换部分的实验流程参见图3。
The BCD code of decimal are:01 02 03 04 05.图33.将十六进制数的ASCII码转换为十进制数十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
数码转换程序实验报告
数码转换程序实验报告实验报告:数码转换程序一、实验目的:本实验的目的是编写一个数码转换程序,能够将给定的十进制数转换为二进制数、八进制数和十六进制数。
二、实验原理: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)编译综合: 保存文件,点Processing 菜单中Start Compilation或直接点 Start Compilation快捷按 钮,就自动进行完全编译,编译过程中出现警告不影响电路功能的正常实现。 如出现错误提示,则需返回检查原理图文件,修正后重新编译。
实验二 码制转换
实验二 码制转换
将实验项目下载到实验板,CP接实验板逻辑实验箱1KHz脉冲, DPLD实验板和逻辑实验箱共地,用逻辑分析仪测量波形: 点击虚拟仪器快捷方式, 打开虚拟仪器界面 虚拟仪器0-7通道分别连接8个输入输出变量。
实验二 码制转换
打开虚拟仪器界面,先把扫描速率调到50K,点“GO”,虚拟仪器界面动态显示波形,再点一次 “GO”
实验二 码制转换
查看仿真结果:
认真观察图中10个时刻的状态, D3D2D1D0由0000递增到1001,Y3Y2Y1Y0由0011递 增至1100,根据波形图列出真值表。可以看到:每个时刻D3、D2、D1、D0和Y3、Y2、 Y1、Y0的关系符合题意,设计正确。
实验二 码制转换
4)下载 把实验板通过下载线连接到计算机并口, 实验板USB电源接口连接计算机USB
G3 B3B2B1B0 B3B2B1B0 B3B2B1B0 B3B2B1B0 B3B2B1B0 B3B2B1B0 B3B2B1B0 B3B2B1B0 B3
仿真波形满足真值表,
实验二 码制转换
4.用Quartus输入实验电路并编译仿真:
仿真波形图真值表唯一对应,设计满足要求。 5.静态逻辑功能测试方法同题目1 6.动态逻辑功能测试
实验二 码制转换
BCD码转换为余三码: 一、推导过程: 列出真值表:
由真值表可得:Y3Y2Y1Y0=D3D2D1D0+0011
微机原理及接口技术实验3-码制转换
23 X2 02 23 03
AND AL,0FH
编程提示2 转换成ASCII码
分离后
大于9 (属于A~F) 转移至 L2 ADD AL,30h ;(属于0~9) JMP L1 L2: ADD AL,37H L1: [DI]AL ;保存ASCII码
程序结构
SI1000H DI1010H CL字节数 L5: AL [SI] ;高位处理 右移4次 AND AL,0FH 大于9 转移至 L2 ;转换成ASCII码 ADD AL,30h ;(属于0~9) JMP L1 L2: ADD AL,37H L1: [DI]AL ;保存ASCII码
AL [SI] ;低位处理 AND AL,0FH 大于9 转移至 L4 ;转换成ASCII码 ADD AL,30h ;(属于0~9) JMP L3 L4: ADD AL,37H L3: [DI+1] AL ;保存ASCII码 SI SI+1 DI DI+2 CL CL-1 JNC L5 INT 3
1000H 1001H 1002H 01 89 AB 1010H 1011H 1012H 1013H 30 31 38 39 41 42
030 高位
131 低位
1014H 1015H
பைடு நூலகம்
DI
编程提示1 高/低位处理---分离
高位处理 AL [SI] 右移4次
AND AL,0FH
低位处理 AL [SI]
计算机技术实验 ( I ) - 1
实验3 十六进制数转换成ASCII码
ASCII码----非数值信息表示
用一个字节的低7位编码,最高位置0 0XXXXXXX 00000000
实验五 数码转化
实验五数码转化(二~十进制)及显示一.实验目的1.掌握VHDL程序语言,并学会简单的编程和程序调试。
2.设计二进制转成十进制和BCD码。
3.学会使用七段LED数码管。
二:实验原理1.实验说明在数字逻辑电路的内部,大多采用二进制或者十六进制的数字节类型,在日常生活当中则几乎用的是十进制,所以经常会遇到数字类型之间的相互转换的问题。
其实电路并不会用到十进制,转成十进制的目的是为了方便人们理解或便于观察电路的输出结果,现在用VHDL来设计一个执行数码转化电路,将二进制的输入转化成是十进制的输出。
实验仪器上Scan Display 区的七段数码管为共阴极,但七段码输入之前加入一个74LS20缓冲/驱动且信号相反,因此这里七段输入也是低电平有效。
注:七段数码管的段顺序为:a,b,c,d,e,f,g,dp.基本结构如下:三实验连线20(CP1)- 1024HZ34—>K1;35--->K2;36--->K3;37--->K4;11--->L1;12--->L2;Z1--->JX1(a~g)拨动逻辑开关K1~K4,输入不同的二进制数,观察数码管的对应输入出是否为相应的十进制BCD码。
设计显示编码表,通过改变输入端的值,观察输入显示数据的变化,并记录输入的结果。
附录:VHDL设计程序清单如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity numcvt isPort(A:IN UNSIGNED(3 DOWNTO 0);CP:IN STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);NUM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END numcvt;Architecture a of numcvt isSignal count:STD_LOGIC_VECTOR(1 DOWNTO 0);Signal temp:STD_LOGIC_VECTOR(3 DOWNTO 0);Signal BCD0,BCD1:STD_LOGIC_VECTOR(3 DOWNTO 0); Signal SEVEN0,SEVEN1:STD_LOGIC_VECTOR(6 DOWNTO 0); BeginProcess(CP)BeginIf(CP'event and CP='1')thenIf(count="01")thencount<="00";Elsecount<=count+'1';End if;End if;End process;Process(A)BeginIf A<10 thenBCD1<="0000";BCD0<=STD_LOGIC_VECTOR(A);ElseBCD1<="0001";BCD0<=A-10;End if;End process;SEL<="01" when count="00" else"10" when count="01";Temp<=BCD1 when count="01"elseBCD0 when count="00";WITH temp selectNUM <="00000011"WHEN"0000","10011111"WHEN"0001","00100101"WHEN"0010","00001101"WHEN"0011","10011001"WHEN"0100","01001001"WHEN"0101","01000001"WHEN"0110","00011111"WHEN"0111","00000001"WHEN"1000","00001001"WHEN"1001","01110001"WHEN OTHERs; END a;五.实验结果以及截图:六:实验结果以及实验体会心得:拔动逻辑开关K1~K4,输入不同的二进制数,数码管的对应输出是为相应的十进制BCD 码。
实验报告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.掌握多字节二进制数与BCD 码相互转换的编程原理。
2.掌握数据的拼装和拆卸方法和所使用的逻辑指令。
二、实验任务:1.假设在43H~40H 单元中有4个BCD 码(高位在43H 中),要转换成二进制数,转换结果存放在R3(高位)、R2(低位)中。
2.假设一个待转换的二进制数存放在R3、R2中,欲将其转换成BCD 数,存放到一个数据区(44H~40H )中,(44H 存高位、40H 存低位)。
3.设在30H 和31H 单元中有一个8位数据:(30H )=X 7X 6X 5X 4X 3X 2X 1X 0(31H )=Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0现在要从30H 单元中取出低5位,并从31H 单元中取出低3位完成拼装,拼装结果存放在40H 单元中:(40H )=Y 2Y 1Y 0 X 4X 3X 2X 1X 0试编写程序实现之。
4. 假设片内30H-35H 存放了单字节二进制无符号数,试编写完成下列表达式的计算(30H)*(31H)+(32H)*(33H)+(34H)*(35H)结果存放在36H 开始的片内存储单元中。
三、实验说明:1、由于人们习惯于十进制数,所以不少外设的输入输出设备仍采用BCD 码。
BCD 码是以二进制形式出现的十进制数。
二进制数 00010011B =19 (十进制数)BCD 数 00010011B =13 (十进制数)显然BCD 数是一种假二进制数,应用程序中经常会碰到BCD 码与二进制数相互转换问题。
转换的方法很多,下面介绍两种比较典型的BCD 码转换成二进制数的方法:假设在43H~40H 单元中有4个BCD 码,要转换成二进制数,转换结果存放在R3R2中(如下所示):40H41H42H43H (低位)高位)R2R3低位)(高位)转换所得的二进制数待转换的BCD 数分析:3615=3*103+6*102+1*101+5=((3*10+6)*10+1)*10+5这是一个迭代算式,内核是高位乘十再加相邻的低位,MCS-51有乘法指令,所以直接用乘法等指令即可完成转换。
汇编上机实验十一 数码转换程序
汇编上机实验十一数码转换程序实验目的:1、掌握批处理文件的编制及使用。
2、二进制和十进制数转换程序的编制和调试。
3、8088指令: MUL,IMUL,DIV,IDIV,LEA。
4、利用INT 21H 0AH号功能调用从键盘输入字符串。
内容及步骤:一、自动汇编,连接及转换的批处理文件:1、用EDIT或COPY CON ALK.BAT命令将下列程序输入:echo offmasm %1;echo if you donot link,strike Ctrl-Break for quit;and either:pauselink %1;del *.objecho if the file is .exe,pleas strike Ctrl-Break for quit。
and either:pauseexe2bin %1、exe %1、comdel %1、exe2、利用ALK.BAK文件汇编连接二个以前通过的源文件(COM型及EXE型)。
二、双字节乘法程序:程序:disp macro messlea dx,messmov ah,9int 21hendmstack segment stackdb 256 dup(0)stack endsdata segmentbuf db 7db ?db 15 dup(?)messa db 'pleas input number A ! :$'messb db 0dh,0ah,'pleas input number B ! :$'linefd db 0dh,0ah,'$'bcd dd 1000000000,100000000,10000000dd 1000000,100000,10000,1000dd 100,10,1data endscode segmentassumecs: code,ds:data,ss:stackmain proc farpush dsxor bx,bxpush bxmov ax,datamov ds,axdisp messacall getpush bxdisp messbcall getdisp linefdpop axmul bxmov cx,10lea si,bcdlea di,buflop: call binecloop lopmov byte ptr[di],'$'disp bufretmain endpget proclea dx,bufmov ah,0ahint 21hlea si,buf+1xor bx,bxmov ah,bhmov cl,[si]next: inc siadd bx,bxmov dx,bxadd bx,bxadd bx,bxadd bx,dxmov al,[si]and al,0fhadd bx,axdec cljne nextretget endpbinec procmov bl,0again: sub ax,word ptr[si]sbb dx,word ptr[si+2]inc bljnc againadd ax,word ptr[si]adc dx,word ptr[si+2]add bl,2fhmov [di],blinc diadd si,4retbinec endpcode endsend main步骤:1、输入,汇编并连接此程序。
数字编码实验报告(3篇)
第1篇一、实验目的1. 理解数字编码的基本原理和方法。
2. 掌握几种常见的数字编码技术,如BCD编码、格雷码编码等。
3. 通过实验验证数字编码的正确性和实用性。
二、实验原理数字编码是将数字信号转换成另一种数字信号的过程。
数字编码技术广泛应用于数字通信、计算机技术、工业控制等领域。
常见的数字编码有BCD编码、格雷码编码、二进制编码等。
BCD编码(Binary-Coded Decimal)是一种将十进制数转换为二进制数的编码方式。
格雷码编码(Gray Code)是一种将数字信号转换成相邻码之间只有一个二进制位差别的编码方式,具有自同步性。
三、实验设备与材料1. 实验箱:包括数字电路模块、逻辑门、计数器等。
2. 实验指导书:提供实验原理、步骤、注意事项等。
3. 实验数据记录表。
四、实验步骤1. BCD编码实验(1)将十进制数转换为BCD编码。
(2)使用实验箱中的数字电路模块,将BCD编码转换为二进制编码。
(3)观察并记录实验结果。
2. 格雷码编码实验(1)将二进制数转换为格雷码编码。
(2)使用实验箱中的数字电路模块,将格雷码编码转换为二进制编码。
(3)观察并记录实验结果。
3. 数字编码比较实验(1)将十进制数分别转换为BCD编码和格雷码编码。
(2)比较两种编码方式的优缺点。
(3)记录实验数据。
五、实验结果与分析1. BCD编码实验结果将十进制数123转换为BCD编码,得到0011 0010。
使用实验箱将BCD编码转换为二进制编码,得到0111 0010。
实验结果表明,BCD编码能够正确地将十进制数转换为二进制数。
2. 格雷码编码实验结果将二进制数1101转换为格雷码编码,得到0111。
使用实验箱将格雷码编码转换为二进制编码,得到1101。
实验结果表明,格雷码编码能够正确地将二进制数转换为格雷码编码,并且相邻码之间只有一个二进制位差别。
3. 数字编码比较实验结果将十进制数123分别转换为BCD编码和格雷码编码,得到BCD编码为0011 0010,格雷码编码为0111。
数码转换实验报告材料微机原理
实验九数码转换一、实验目的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. 编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。
实验一 数码转换编程及程序调试
实验一数码转换编程及程序调试一、实验目的掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
熟悉程序调试的方法。
二、实验设备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)反复试几组数据,验证程序的正确性。
实验7数制及代码转换实验
实验7 数制及代码转换实验1.实验目的①了解微机系统中的数制与代码表示方法;②掌握计算机中使用的各种代码转换方法;③掌握实现各种码制之间的转换方法。
2.预习要求①理解十进制数、十六进制数的数制表示方法;②理解BCD码、ASCII码编码方式;③熟悉十六进制数与BCD码、ASCII码与十六进制数的转换关系;④预习本节实验内容,编写实验程序。
3.实验条件①PC微机一台。
②Keil uVision2软件开发环境。
4.基础型实验①以下程序完成单字节的ASCII码到十六进制数转换,完成空白处程序填写,并在Keil环境运行程序,改变不同i的初值,观察寄存器及内存单元的变化,将变化结果注释于右侧。
void main(void){unsigned char i;while(1){ i=0x31;if((i>=’a’)&& (i<=’f’))else if((i>=’A’)&& (i<=’F’))else if((i>= )&& (i<= ))i-=0x30;}}②以下程序完成单字节的两位BCD码到十六进制数转换,完成空白处程序填写,并在Keil环境运行程序,改变不同i的初值,观察寄存器及内存单元的变化,将变化结果注释于右侧。
void main(void){unsigned char i,temp1,temp2;while(1){ i=0x31;temp1=i&0xf0;temp1=temp1>>4;temp2=i&0x0F;i= ;}}③以下程序完成单字节的十六进制数到BCD码转换,完成空白处程序填写,并在Keil环境运行程序,改变不同i的初值,观察寄存器及内存单元的变化,将变化结果注释于右侧。
void main(void){unsigned char i,res[3];while(1){ i=255;res[2]=i/100;res[1]= ;res[0]= ;}}5.设计型实验①设计程序,将大写字母的ASCII字符转换成小写字母的ASCII字符,其他ASCII字符不变,使用单步、断点方式调试程序,查看结果。
实验1-2数制转换、信息编码和常用工具使用
实验1-2数制转换、信息编码和常用工具使用实验1-2 进制转换和常用工具应用1.实验目的(1)掌握①数据在计算机中的表示②信息编码和汉字编码③熟练掌握各种进位计数制之间的数转换④常用工具软件的使用(2)了解①计算机的原码、补码和反码表示②二进制数的算术运算和逻辑运算2.实验要求(1)在英文盲打的基础上,每分钟输入汉字不少于25个(2)熟练掌握各种数制间的相互转换方法(3)掌握常用工具软件的使用方法3.实验内容和步骤(1)基本功训练①常用全角字符和标点符号的输入方法②软键盘的使用方法③计算器在数制转换中的应用(2)在Word 2010中练习,可自拟输入内容(例如一封家书、一个学习计划等),选择一种熟悉的输入法进行练习。
(也可以在“金山打字通”中进行汉字输入练习)(3)完成下列数值的转换:①(10100110)2 =()10 = ()8 =()16②(307.25)10= ()2=()8 =()16③(1101011.1101)2=()8=()16④(127.51)8 = ()2 =()10 =()16(4)完成下列二进制数的算术运算:①10011010+01101110 =()②11001100-100 =()③11001100×100 =()④11001100÷100 =()(5)完成下列二进制数的逻辑运算:①10110110∧11010110 =()②01011001∨10010110 =()③11010101 =()④11110110○+10001000 =()(6)写出下列真值对应的原码和补码:①X = -1110011B,[X]原=(),[X]补=()②X = -72D,[X]原=(),[X]补=()③X = +1001001,[X]原=(),[X]补=()(7)下列一组数中,最大的数是()。
A、11010001BB、327OC、600D、1FFH(8)下列各数中,最小的数是()。
实验07 二进制码转换为BCD码
实验三二进制码转换为BCD码(三课时)一、实验目的1、掌握数码转换基本方法,加深对数码的理解。
2、用于十进制BCD码显示。
二、实验内容将AX的内容转换为十进制BCD码。
三、实验程序框图四、实验程序清单采用COM模板Mov si, 1000hmov dx,0000hmov ax, 65535mov cx, 10000div cxmov [si], al ; 除以10000, 得wan位数mov ax,dxmov dx,0000hmov cx, 1000div cxmov [si+1], al ; 除以1000, 得qian位数mov ax,dxmov dx,0000hmov cx, 100div cxmov [si+2], al ; 除以100, 得bai位数mov ax,dxmov dx,0000hmov cx, 10div cxmov [si+3], al ; 除以10, 得shi位数mov [si+4], dl ; 得ge位数mov ah,4chint 21h五、实验思考题1、上面的程序中,转换的结果保持在什么地方?截图显示ax的内容已经转换后的结果。
2、设ax中存放的是有符号的数,其值可能是-32768—+32767试编程实现在数据段3000H开始的地方,保持ax的BCD码值如:若ax的内容是FF51H,则结果(-175)3000h单元的内容是2dh,‘-’的ASCII码3001h单元的内容是00h’3002h单元的内容是00h3003h单元的内容是01h3004h单元的内容是07h3005h单元的内容是05h如:若ax的内容是3333H,则结果(+13107)3000h单元的内容是2bh,‘+’的ASCII码3001h单元的内容是01h’3002h单元的内容是03h3003h单元的内容是01h3004h单元的内容是00h3005h单元的内容是07h提示:先判断AX的最高位,若为0,表示AX是正数,可以直接利用上面的程序转换,注意3000H 单元要先保存‘+’,数据部分从3001h单元开始存放。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院
数学与计算机学院
专业
计算机科学与技术
班级
计科11XX
学号
20151162XXXX
姓名
林XX
日期
2017.11.9
实验题目
数码码制转换程序实验
这是微机接口的第2个实验,老师给了2个程序。
本实验主要是要在实验室那台实验机器上运行。
所以去实验室,随便找一台机器,按上次的步骤接好线之后,居然提示,“无法识别的USB设备”,心想可能线松了,于是插拔几次,结果还是一样,所以干脆换一台机器,问题解决。
C
D
评定项目
A
B
C
D
算法正确
界面美观
布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
解题正确
其他:
评价教师签名:
年月日
直接在环境中ctrl+O打开文件,然后直接编译,运行,也可以调试,单步执行。
可以在Bochs中查看运行时输出,可以查看寄存器内容,可以查看运行时内存内容(需要修改段地址,即把冒号左边的地址改成ds的内容)。
这个是第一个程序运行截图。
这个是第2个程序的运行时输出。
于是本次实验结束。
教
师
评
价Hale Waihona Puke 评定项目AB