实验二二进制码转换为bcd码实验报告终审稿)

合集下载

EDA实验报告实验二:二进制码转换成BCD码

EDA实验报告实验二:二进制码转换成BCD码

实验二二进制转换成BCD码
一、实验目的
设计并实现一个4位二进制码转换成BCD码的转换器。

二、实验仪器
SOPC实验箱、Quartus II软件
三、实验原理
对于不同代码之间的转换,有用硬件实现的,也有用软件实现的。

对于硬件实现,可以用一般的组合逻辑电路实现,也可以用译码器、编码器或只读存储器来实现。

本实验的原理见表3-1所示。

四、实验内容
1、启动Quartus II 建立一个空白工程,然后命名。

2、新建VHDL源程序文件并命名,输入程序代码并保存,进行综合编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

3、新建仿真文件,对各模块设计进行仿真,验证设计结果。

打印仿真结果。

五、实验步骤
1.各模块程序:
1)用文本输入法实现秒的计时,程序如下:
module BCD(D,B);
output [4:0] B;
input [3:0] D;
reg [4:0] B;
always@ (D)
begin
if(D<4'b1010) begin B[3:0]=D[3:0];B[4]=1'b0;end
else begin B[3:0]=D[3:0]-4'b1010;B[4]=1'b1;end
end
endmodule
2.建立工作库文件夹,输入设计项目原理图或vorilog代码并存盘。

3.生成RTL图。

4.进行波形仿真,仿真后波形如下:
六、实验结果与现象验证
输入任何一个十六进制数产生了与二进制码转换成BCD码的转换真值表相对于的BCD码.。

二进制转BCD码

二进制转BCD码

⼆进制转BCD码应⽤:⽤fpga实现对数码管显⽰,以前通常的⽅法是进⾏整除和取余进⾏运算,但是fpga并不擅长乘法除法运算,所以可以⽤BCD码来转换。

BCD码:通俗的可以理解为⽤四位⼆进制数表⽰⼀位⼗进制数字。

例如,256就可以⽤bcd码表⽰为:0010_1001_0110因此在数码管显⽰中,也就是把256各位分出来,就可以⽤bcd码来表⽰,下⾯说⼀种⼆进制转换bcd码的⽅法。

加3移位法:bcd码中只有0~9⼗进制数,但是在四位⼆进制中是16进制进1,因此在移位过程中要对⼆进制进⾏判断,当在移位之后的状态Qn+1⼤于9,要对Qn加6才可以。

例如1000移位⼤于9加6为0001_0110,对应bcd码中的1我们也可以在移位之前进⾏判断,如果移位之前的Qn数据⼤于4,说明Qn+1会溢出,所以可以+3再进⾏移位,例如1000⼤于4,加3为1011然后再进⾏移位0001_0110,16和刚才结果是⼀样的。

简单的说,判断的⽬的是防⽌下⼀次移位,发⽣数据溢出的情况思路:代码可以总结为三个部分:移位,加⼆进制数,判断(最后⼀次不需要判断)例如15 --- 1111(1)移位 0000_0000 加 0000_0001 判断 0000_0001(2)移位 0000_0010 加 0000_0011 判断 0000_0011(3)移位 0000_0110 加 0000_0111 判断 0000_1010(4)移位 0001_0100 加 0001_0101/*********************************功能:实现对6位⼗进制数以内的bcd码转换time: 2017/4/29vision:1.0*********************************/`define data_in_num 19`define data_bcd_num 23module pro_bcd(clk,rst_n,data_in,data_bcd);input clk;input rst_n;input [`data_in_num :0] data_in;output [`data_bcd_num:0] data_bcd; reg [`data_bcd_num:0] data_bcd_r;reg [1:0] state;reg [5:0] shift_cn if(!rst_n)begindata_bcd_r <= 0;state <= 0;shift_cnt <= 0;endelsecase(state)2'd0:beginshift_cnt <= 0;data_bcd_r <= 0;state <= state + 1;end2'd1:begin //移位if(shift_cnt < `data_in_num + 1)begin data_bcd_r <= data_bcd_r<<1;shift_cnt <= shift_cnt + 1;state <= state + 1;endelse state <= 0;end2'd2:begin //相加data_bcd_r <= data_bcd_r + data_in[`data_in_num + 1 - shift_cnt];state <= state + 1;end2'd3:begin //判断if(data_bcd_r[3:0] > 4 ) //1data_bcd_r <= data_bcd_r + 3;if(data_bcd_r[7:4]>4) //2data_bcd_r[7:4] <= data_bcd_r[7:4] + 3;if(data_bcd_r[11:8]>4) //3data_bcd_r[11:8] <= data_bcd_r[11:8] + 3;if(data_bcd_r[15:12]>4) //4data_bcd_r[15:12] <= data_bcd_r[15:12] + 3;if(data_bcd_r[19:16]>4) //5data_bcd_r[19:16] <= data_bcd_r[19:16] + 3;if(data_bcd_r[`data_bcd_num:20]>4) //6data_bcd_r[`data_bcd_num:20] <= data_bcd_r[`data_bcd_num:20] + 3;state <= 1;enddefault:state <= 0;endcaseassign data_bcd = (state == 3)&&(shift_cnt == `data_in_num + 1) ? data_bcd_r : data_bcd;endmodule。

两个字节的二进制数转换成BCD 码

两个字节的二进制数转换成BCD 码

;已知16位二进制整数n以b15~b0表示,取值范围为0~65535。

;那么可以写成:;n=[b15~b0];把16位数分解成高8位、低8位来写,也是常见的形式:;n=[b15~b8]*256+[b7~b0];那么,写成下列形式,也就可以理解了:;n=[b15~b12]*4096+[b11~b0];式中高4位[b15~b12]取值范围为0~15,代表了4096的个数;;上式可以变形为:;n=[b15~b12]*4000+{[b15~b12]*(100-4)+[b11~b0]};用x代表[b15~b12],有:;n=x*4000+{x*(100-4)+[b11~b0]};即:;n=4*x(千位)+x(百位)+[b11~b0]-4*x;写到这里,就可以看出一点BCD码变换的意思来了。

;上式中后面的位:[b11~b0]-4*x,如果小于256,那就太简单了,马上就可以去按照常规转换BCD了。

;如果数值较大,就要把[b11~b7]看成128的个数y;在百位中加上y、在十位加上3*y、并在[b6~b0]中减去2*y。

;那么就有:;n=4*x(千位)+x(百位)+[b11~b0]-4*x;n=4*x(千位)+(x+y)(百位)+3*y(十位)+[b6~b0]-2*y;由此,就可以明确由高9位[b15~b7]变换出来十进制的各个位的数值,可能大于9,到最后整理一下即可。

;剩下的低7位[b6~b0],已经是单字节数据,变换成BCD码那就十分简单了。

从最后的表达式中可以看出,高9位变换的计算方法极为简单,只是使用左移、加减等指令即可,基本上不涉及多字节的运算。

编程的时候,要充分利用单字节、单周期的指令,使程序的长度和执行时间尽量缩短。

做而论道的编程思路已经给出,程序代码还是过一段时间再公布,给大家留下一个发挥的时间。

感兴趣的网友可以留言,写出自己编写的程序。

最佳答案:两个字节的二进制数转换成BCD码,必须编写程序来解决。

(实验二)二进制码转换为BCD码实验报告

(实验二)二进制码转换为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。

二进制转BCD码

二进制转BCD码

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity transform2_to_10 isport( RST,CLK:in std_logic;start:in std_logic;binary_operands:in std_logic_vector(7 downto 0);--待转换的二进制数LED_baiwei:out std_logic_vector(3 downto 0);--百位LED_shiwei:out std_logic_vector(3 downto 0);--十位LED_gewei:out std_logic_vector(3 downto 0);--个位out_all:out std_logic_vector(19 downto 0);aa:out std_logic_vector(7 downto 0);cb,cc,ca:out std_logic_vector(3 downto 0);dd:out std_logic_vector(19 downto 0));end ;architecture behave of transform2_to_10 isbeginprocess(RST,CLK,binary_operands)variable operands:std_logic_vector(7 downto 0);--存放输入操作数variable MA:std_logic_vector(3 downto 0);--暂存个位的二进制数variable MB:std_logic_vector(3 downto 0);--暂存十位的二进制数variable MC:std_logic_vector(3 downto 0);--暂存百位的二进制数variable post:std_logic_vector(19 downto 0);--将二进制操作数、个位、十位、百位的二进制数集总variable Q:std_logic_vector(3 downto 0);--计数移位的脉冲数beginif RST='1'then operands:="00000000";MA:="0000";MB:="0000";MC:="0000";post:="00000000000000000000" ;elsif CLK'event and CLK='1'thenif start='1'then operands:=binary_operands;MA:="0000";MB:="0000";MC:="0000";post:=MC&MB&MA&operands(7 downto 0);out_all(7 downto 0)<=post(7 downto 0);--dd:="00000000";elseif Q<=8 thenif Q=8 then Q:="0000";LED_gewei<=MA; LED_shiwei<=MB;LED_baiwei<=MC;else Q:=Q+1;end if;post(19 downto 8):=MC&MB&MA;post(19 downto 0):=post(18 downto 0)&'0'; dd<=post(19 downto 0); --dd 为观测信号aa<=post(7 downto 0);out_all(19 downto 8)<=post(19 downto8);--out_all(19 downto 8)为观测信号MA(3 downto 0):= post(11 downto 8);ca<=post(11 downto 8);--ca观测信号MB(3 downto 0):= post(15 downto 12);cb<=post(15 downto 12);--cb观测信号MC(3 downto 0):= post(19 downto 16);cc<=post(19 downto 16);--cc观测信号if MA>=5 then MA:=MA+3;end if;if MA>=5 then MA:=MA+3;end if;if MB>=5 then MB:=MB+3;end if;if MC>=5 then MC:=MC+3;end if;end if;end if;end if;end process;end ;实现思想:使用俗称的移位加3法则,规则是:1、将该二进制数左移一位;2、对于25位的二进制数,最大8位十进制数,从千万位开始,分别是千万,百万,十万,万,千,百,十,个位,所以如果转换为BCD码,共需要32位二进制序列缓冲,每4位为一组,按上述顺序排列;3、如果移位后,该组的数据如果大于等于5,则对该组数据加3处理;4、左移一位;5、回第三步循环,直到所有数据移位完毕看下表的一个8位二进制转BCD,引申一下即可,原理是一样的Operation | Hundreds| Tens | Units | Binary | HEX | | | | F F |Start | | | | 1 1 1 1 1 1 1 1 |Shift1 | | |1 | 1 1 1 1 1 1 1 |Shift2 | | | 1 1 | 1 1 1 1 1 1 |Shift3 | | | 1 1 1 | 1 1 1 1 1 |Add3 | | | 1 0 1 0 | 1 1 1 1 1 | Shift4 | | 1 | 0 1 0 1 | 1 1 1 1 | Add3 | | 1 | 1 0 0 0 | 1 1 1 1 | Shift5 | | 1 1 | 0 0 0 1 | 1 1 1 | Shift6 | | 1 1 0 | 0 0 1 1 | 1 1 | Add3 | | 1 0 0 1 | 0 0 1 1 | 1 1 | Shift7 | 1 | 0 0 1 0 | 0 1 1 1 | 1 | Add3 | 1 | 0 0 1 0 | 1 0 1 0 | 1 | Shift8 | 1 0 | 0 1 0 1 | 0 1 0 1 | | BCD | 2 | 5 | 5 | |。

实验二二进制到BCD转换讲述

实验二二进制到BCD转换讲述
深 圳 大 学 实 验 报 告
课程名称:微机原理及应用实验
实验项目名称:二进制到BCD转换
学院:物理科学与技术学院
专业:应用物理
指导教师:
报告人:学号:班级:应用物理班
实验时间:2015-10-19
实验报告提交时间:2015-11-02
教务处制
一、实验名称:
二进制到BCD转换
二、实验目的
(1)进一步熟练掌握8086汇编语言编译调试工具和环境的操作;
JZ LP ;两个数比较,相等,比较后ZF=0,跳转至LP
;OR DL,30H
INT 21H ;返回DOS
;------------------------------------------
;程序结束必须要有的两条指令
MOV AX, 4C00H ;
INT 21H ;
;------------------------------------------
CODE ENDS
END START ;最后一行要按回车键
MOV CL, 0 ;计数器清零
NEXT4:
SUB AX, 10000 ;减10000
JC OVER4 ;有借位说明不够减
INC CL ;否则够减,计数器加1
JMP NEXT4 ;无条件跳转
OVER4:
ADD AX, 10000 ;最后恢复不够减时AL的余数
MOV BCD_0,CL ; CL累计的计数值赋予万位变量
用到主要寄存器:
AX:开始用于目标数接收,后面用于每次保存被除数
CX:用作每次除数保存
DX:用作每次除数保存
减法实现:
算法说明:
五位数先循环减10000,直到不够减了,做减法的次数就是万分位的结果,用CL累加次数得到;将不够减之前一次的余数恢复,再循环减去1000,直到不够减了,做减法的次数就是千分位的结果,用CL累加次数得到;将不够减之前一次的余数恢复,再循环减去100,直到不够减了,做减法的次数就是百分位的结果,用CL累加次数得到;将不够减之前一次的余数恢复,再循环减去10,直到不够减了,做减法的次数就是十分位的结果,用CL累加次数得到;最后恢复的正余数就是个位的结果。

二进制到BCD转换实验报告[本站推荐]

二进制到BCD转换实验报告[本站推荐]

二进制到BCD转换实验报告[本站推荐]第一篇:二进制到BCD转换实验报告[本站推荐]二进制到BCD转换实验报告班级姓名学号日期一、实验目的:1.掌握简单的数值转换算法2.基本了解数值的各种表达方法二、实验要求:将给定的一个二进制数,转换成十进制(BCD)码。

三、实验内容:1、给累加器赋值,如#1232、将累加器的内容拆分为三个BCD码,并存入Result开始的三个单元。

四、程序及运行结果截图DATASEGMENT RESULT_1DBRESULT_2DBRESULT_3DBDATAENDSSTACKSEGMENTATACK STADBDUP(0)STACK_TOP DB0 STACKENDSCODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AX LEASP,ATACK_TOP MOVAX,123H MOVCL,100 DIVCL MOVRESULT_1,ALMOVCL,8 SHRAX,CL MOVCL,10 DIVCL MOVRESULT_2,AL MOVRESULT_3,AHADDRESULT_1,30H ADDRESULT_2,30H ADDRESULT_3,30HMOVDL, RESULT_1 MOVAH,02H INT21HMOVAX,4C00H INT21H CODEENDSENDSTART五、实验过程中遇到的主要问题;将 A 拆为三个 BCD 码, 并存入 Result 开始的叁个单元Result equ20horgljmp StartBinT oBCD:movb, #100divabmovResult, a;除以 100, 得百位数mova, bmovb, #10divabmovResult+1, a;余数除以 10, 得十位数movResult+2, b;余数为个位数retStart:movsp, #40hmova, #123call BinT oBCDljmp $end六、实验后的心得体会第二篇:二进制与十进制的转换二进制与十进制的转换2007年07月06日星期五 13:21教学目标:知识目标:知道二进制与十进制之间的转换方法操作目标:能在二进制与十进制之间进行进制转换教学重点:二进制与十进制之间的转换教学难点:二进制与十进制之间的转换教学过程:一、复习引入上一节课已经学习了什么是二进制以及二进制的运算。

FPGA二进制转bcd的设计和验证

FPGA二进制转bcd的设计和验证

中考感谢信11篇中考感谢信1尊敬的学校领导和老师们:时光荏苒,日月如梭,3个春夏秋冬仿佛只是一瞬间,而我已在你的呵护下由一个稚气未脱的小学生成长为一名蓬勃向上的少年。

对花城学校的感情,也在我心中点点滴滴地沉淀。

在花城,我深切地感受到了每位可亲的老师们对我的'关怀:语文老师不厌其烦的叮嘱,数学老师教会我细致和严谨,英语老师总会耐心地解答我各种刁难的问题直到我恍然大悟;政治和历史老师一份又一份提纲做得一丝不苟,物理和化学老师幽默风趣,黑板上的板书工工整整……记得为了中考,你们呕心沥血,在我们身上花的时间比自己的孩子还多;记得中考百日誓师大会上,你们的宣誓那么铿锵有力,真的让我非常感动。

老师,你们辛苦了,你们兢兢业业,以身作则,为我树立了为人处事的榜样。

在花城,最爱的是当雨后初晴的时候,与同学们结伴走在美丽的校园里,或倾听细碎的鸟语,或轻嗅红色墙下娇嫩的小花,或追逐嬉戏,或轻言细语地诉说烦恼。

彼此之间就好像亲密无间的兄弟姐妹,共同分享快乐,分担忧愁,是你们给我无限的动力,让我无时无刻不感受到家庭般的温暖。

千言万语还是一个“谢”字,我们会用未来的成就回报母校!最后,再次对老师们对我的培养表示最诚挚的感谢!祝校领导和老师们身体健康!工作顺利!祝母校越办越好,为社会培育更多的人才!__x7月7日中考感谢信2敬爱的老师:您好!老师,您已经教我们语文一年多了,对我的教育,我终身难忘。

我想对您说:老师,谢谢您! 在去年里,当我做了不对的事情时,又是您及时对我进行了教育;当我遇到语文的题不会做的时候,您给了的帮助我想对您说:“谢谢您,我的老师!因为在你的课堂里,我们都感到很轻松和开心,没有丝毫的紧张和压抑感!以至每次放学了,我们都舍不得走!你真的是一个特优秀的好老师!老师您说过在课堂上,我们不仅仅是师生关系,更是朋友关系!能够成为你的学生,我感到非常荣幸!老师您还叫我们用感情朗读课文、__。

以前,我们说话都是一个一个的吐出来的,您来的时候就让我们回家练吐字要快,现在我们和您的吐字都差不多了,而且还用感情朗读课文。

微机原理实验-二进制到BCD转换

微机原理实验-二进制到BCD转换
广州大学学生实验报告
开课学院及实验室:实验中心
学 院 机电 年级、专 业、班 微机原理实验
2013 年 11 月 4 日
姓名 学号 成绩 指导 教师
实验课程名称 实验项目名称 一、实验目的
二进制到 BCD 转换
二、实验原理(实验相关基础知识、理论) 三、实验过程原始记录(程序界面、代码、设计调试过程描述等) 四、实验结果及总结 一、实验目的
给出要转换的二进制数
将数除以 100,得百位数
保存百位数
将余数再除以 10,得十位数
; 余数除以 10, 得十位数 ; 余数为个位数
保存十位数
余数为个位数,将其保存
实验步骤: (1) 进 入 Wave6000 , 输 入 程 序 并 检 查 , 保 存 程 序 。 (2) “ 编 译 ” 程 序 。 (3) 在 指 令 “ jmp $” 处 设 断 点 。 (4) “ 全 速 执 行 ” 程 序 。 (5) 在 “ 数 据 窗 口 ( MEMOREY ) ” 查 看 0400H 、 0401H 、 0402H 三 个 单 元 的 内 容 , 记 录 并 分 析实验结果。
1.将给定的一个二进制数转换成二十进制(BCD)码。 2. 掌握简单的数值转换算法。 3. 基本了解数值的各种表达方法。
二、实验原理(实验相关基础知识、理论)
定义:用4位二进制数来表示1位十进制数中的0~9这10个数码,简称 BCD 码 即 BCD 代码。Binary-Coded Decimal ,简称 BCD,称 BCD 码或二-十进制代码,亦称二进 ‎ 码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利 用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。 这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准 确的计算。相对于一般的浮点式记数法,采用 BCD 码,既可保存数值的精确度,又可免却 使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD 编码亦很 常用。 由于十进制数共有0、1、2、„„、9十个数码,因此,至少需要4位二进制码来表示1位 十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十 进制数码,共有 N=16!/(16-10) !约等于2.9乘以10的10次方种方案。常用的 BCD 代码列 于末。 常用 BCD 编码方式 最常用的 BCD 编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在 中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法, 以适应不同的需求。这些编码,大致可以分成有权码和无权码两种: 有权 BCD 码,如:8421(最常用)、2421、5421„ 无权 BC 从“ 数 据 窗 口 ( MEMOREY ) ” 查 看 到 0400H 、 0401H 、 0402H 三 个 单 元 的 内 容 分 别 为 :

微型计算机实验:二进制到BCD 转换

微型计算机实验:二进制到BCD 转换

上机实践报告一、实验目的:1.掌握Lab2000p实验教学系统基本操作;2.掌握8088/8086汇编语言的基本语法结构;3.熟悉8088/8086汇编语言程序设计基本方法。

二、实验设备b2000p实验教学系统;2.IBM-PC机三、实验内容和实验步骤1.二进制到BCD 转换1)实验要求将地址为2000H的2字节二进制数(<999)转换成BCD码,保存在地址为2010H开始的存储单元中(高位在低地址)。

2)程序框图3)程序代码code segmentassume cs:codestart:mov ax, 0mov ds, axmov bx, 2000hmov ax, [bx]mov cl, 100div clmov [bx+10h], al ; 除以 100, 得百位数mov al, ahmov ah, 0mov cl, 10div clmov [bx+11h], al ; 余数除以 10, 得十位数mov [bx+12h], ah ; 余数为个位数jmp $code endsend start4)实验步骤⑴开启计算机电源,开启Lab2000p实验箱电源;⑵启动WAVE6000软件;⑶确认WAVE6000与Lab2000p连接;⑷输入源代码;⑸编译源代码(F9);⑹在2000H存储单元输入2字节二进制数(<999);⑺单步运行源代码(F8),观察每条指令执行结果;⑻待程序运行结束观察2010H开始的3字节存储单元,并与2000H开始的存储单元比较。

2、BCD码到ASCII码转换1)实验要求将地址为2000H的2位BCD码(高位在低地址)转换成ASCII码,保存在地址为2010H 开始的存储单元中(高位在低地址)。

2)提示采用查表形式,现在数据段建立一个二进制与ASCII的对照表,再用查表指令获取ASCII码。

3、数据排序1)实验要求将2000H开始的10字节数按从小到大排序,结果存回2000H开始的存储单元中。

二进制到BCD的转换

二进制到BCD的转换

微机应用系统设计学生实验报告课程名称实验名称实验教室实验日期班级学生姓名实验成绩任课教师(签名)实验目的了解如何将二进制数转换成BCD码,掌握简单的数制转换算法。

将二进制到BCD转换程序写成子程序,了解主程序调用子程序的过程。

实验内容将累加器ACC内容拆为三个BCD码,存入内部数据缓冲区20H开始的三个存储单元中。

实验仪器设备1. PC机一台;2. 单片机教学实验系统一套。

包括Dais-52PH+ 实验箱一个和Dais—MCS51仿真软件一套。

程序流程图、电路图源程序清单ORG 0000HLJMP STARTORG 0030HSTART:MOV A,#123 ;将需要转换的二进制定为123 LCALL BinToBCDSJMP $BinToBCD:MOV B,#100开始给出要转换二进制将数除以100,得百保存百位数将余数再除以10,得十位保存十位数余数为个位数,保存个结束DIV AB ;将A与100相除,商存于A中,余数存于B中MOV 20H,A ;将商存于20H中,获得百位上的数据MOV A,B ;余数存于A中MOV B,#10DIV ABMOV 21H,A ;计算出十位中的数放置于21H中MOV 22H,B ;余数即为个数,存于22H中,完成二进制转换RETEND结果记录及分析调试时,输入地址D:20H. 20H、21H、22H内容分别是01,02,03. 当将断点定在DIV AB 处时结果为:收获感想通过本次实验,我学习到为了完成将二进制转换到BCD码是要将二进制数先除以100,得BCD码百位,再将余数除以10,得BCD码十位,余数为个位从而完成目的。

再进一步在本实验基础上将二进制转换成ASCII码,清楚了二进制与ASCII码之间有30H的关系。

思考:(1)如何将二进制码转换成ASCII码?答:由于本实验已将二进制转换成BCD码,在此基础上需分段处理成4位二进制有效形式,再加上30H。

(2)程序调用过程中,如果需要保护某些寄存器的内容,应如何处理?具体怎么实现?答:利用堆栈完成保护寄存器指令的内容;具体指令利用PUSH、POP语句。

51单片机实验-实验一 二进制到BCD转换

51单片机实验-实验一 二进制到BCD转换

实验一二进制到BCD转换一、实验内容将存放在R2中的一个单字节二进制数,转换成非压缩的二—十进制(BCD)码,并存放到R3R4R5中。

二、实验仪器和设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路。

三、实验过程及结果①使用星研仿真软件建立新工程文件1)进入星研仿真软件2)系统基本参数设置\辅助\仿真器\选择Star16L,且取消模拟调试器\辅助\通信\USB2)建立项目文件\项目\新建项目文件\输入项目文件名后,进入项目文件设置选项其中:仿真头选择:PODPH51(DIP);CPU选择:8051类;其它选项一般选择默认值。

(也可以在建立项目文件后,在\项目\设置项目文件\选项下修改仿真头和CPU的设置)3)新建源文件\文件\新建\新建文件\选择项目文件,然后设置文件后缀为.ASM(汇编语言)②基本程序ORG 0000H ;设置起始地址BCD1:MOV R2,# 00100000B ;给R2赋初值,二进制数0010 0000BMOV A,R2 ;将R2单元里的数值,也就是00100000B送入累加器A中MOV B,#100 ;100作为除数送入BDIV AB ;A单元中的数除以B单元中的数MOV R3,A ;百位数送R3,余数在B中MOV A,#10 ;分离十位和个位数XCH A,B ;余数送A,除数10留在B中DIV AB ;分离出十位在A, 个位在B中MOV R4,A ;十位送R4MOV A,BMOV R5,A ;个位送R5NOPSJMP $END运算结果:二进制数00100000B换算成非压缩BCD码应该为32,则R3单元里的数值应该为0,R4单元里的数值应该为3,R5单元里的数值应该为2。

运行结果:R3为0,R4中为3,R5中为2,与运算结果相同,实验程序正确。

③将基本程序进行修改,添加子程序后验证ORG 0000H ;设置初始地址START:MOV R2,#00100000B ;给R2赋初值00100000BLCALL BCD ;调用子程序BCDSJMP $BCD: ;子程序BCDMOV A,R2 ;将R2单元里的数值,也就是00100000B送入累加器A中MOV B,#100 ;100作为除数送入BDIV AB ;A单元中的数除以B单元中的数MOV R3,A ;百位数送R3,余数在B中MOV A,#10 ;分离十位和个位数XCH A,B ;余数送A,除数10留在B中DIV AB ;分离出十位在A, 个位在B中MOV R4,A ;十位送R4MOV A,BMOV R5,A ;个位送R5RET ;返回主程序END运行结果:R3为0,R4中为3,R5中为2,与上面基本程序的运行结果相同,所以改编后的实验程序是正确的。

汇编实验报告--二进制到BCD码转换

汇编实验报告--二进制到BCD码转换

实验二:二进制到BCD码转换学生姓名:何茂杰学号:2010305104 专业班级:计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.掌握无条件转移指令、条件转移指令;2.掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;3.掌握直接向视频RAM送ASCII码进行屏幕显示的方法;4.掌握屏幕字符显示程序编写与调试。

二、实验内容将存放在BIN的一个16位无符号数转换为BCD码,结果的万、千,百、十、个位依次存放在BCD+0、BCD+1、BCD+2、BCD+3、BCD+4单元内三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求对操作数的寻址、转换方法至少要由两种以上。

五、主要实验步骤及结果1.直接向VRAM送ASCII码显示字符(1)用A命令在100H处键入下列程序MOV AX,B000MOV DS,AXXOR AL,ALXOR BX,BXMOV CX,100LOP:MOV [BX],ALINC BXINC ALPUSH CXMOV CX,8DELY:PUSH CXMOV CX,0J:LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 20(2)用N命令和W命令将此程序存入文件中。

(一定要先存入!)(3)用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT 21H 2号功能调用有何不同?控制字符区在该程序中没有显示,在上一个程序中显示为笑脸等符号。

(4)自编程序:将存放在BIN的一个16位无符号数转换为BCD码反汇编;-U10013A3:0100 BB0010 MOV BX,100013A3:0103 8B07 MOV AX,[BX]13A3:0105 BB0000 MOV BX,000013A3:0108 BA0000 MOV DX,000013A3:010B BB0A00 MOV BX,000A13A3:010E F7F3 DIV BX13A3:0110 A21310 MOV [1013],AL13A3:0113 89161410 MOV [1014],DX13A3:0117 BB6400 MOV BX,006413A3:011A F7F3 DIV BX13A3:011C A21210 MOV [1012],AL13A3:011F 89D0 MOV AX,DX执行情况:-t=100AX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13A3 ES=13A3 SS=13A3 CS=13A3 IP=0103 NV UP EI PL NZ NA PO NC 13A3:01038B07 MOV AX,[BX] DS:1000=0000六、思考题利用INT 21H 显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?答:利用INT 21H显示时,07H-0DH的控制符会用笑脸之类的符号显示;直接向VRAM 送ACSII码时,07H-0DH的控制符不显示。

二进制转化为8421bcd码

二进制转化为8421bcd码

二进制转化为8421bcd码
二进制转化为8421BCD码是一种常见的数码编码方式,它可以将二进制数转化为BCD码,方便在数字电路中进行处理和显示。

BCD码是二进制编码的一种特殊形式,它将每个十进制数位表示成4位二进制码。

8421BCD码是一种常用的BCD码,其中每个十进制数位分别用8、4、2、1四个二进制码组成,称为8421码。

将一个二进制数转化为8421BCD码的方法如下:
首先将二进制数每4位分组,不足4位的在前面补0,如1101转化为0001 1101。

然后将每个4位二进制数转化为对应的8421码,例如0001转化为8421码为0001,1101转化为8421码为1000。

最后将所有的8421码按照十进制数位的顺序排列,得到的即为该二进制数的8421BCD码。

例如,将二进制数1101转化为8421BCD码的过程如下:
1101 → 0001 1101 → 8421码为0001 1000 → 8421BCD码为0001 1000,即十进制数13的8421BCD码为0001 0011。

- 1 -。

微机原理实行 二进制到BCD转换

微机原理实行 二进制到BCD转换
三、实验用设备仪器及材料:
计算机,伟福 Lab2000三个 BCD 码, 并存入 Result 开始的三个单元。 data segment Result db 3 dup(?) data ends
code segment
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

数字电路实验二--译码器实验报告

数字电路实验二--译码器实验报告

数字电路实验二--译码器实验报告
译码器实验是数字电路实验课程的重要组成部分。

本次实验旨在介绍译码的基本原理,并取得实际的实验效果。

本次实验使用的译码器类型是双向双回路译码器。

它可以将2位二进制输入转换为4
位二进制数字代码输出。

它是由基础译码单元(BCD)和其它外部电路组成的,可以根据
二进制输入状态产生正确的十进制输出。

此外,本次实验使用了按钮、LED、模拟电路、
小灯丝等部件来实现所涉及的功能。

实验分为以下几步:首先需要将所有的组成部件组装在原理图的对应接口中;其次根
据原理图上的接口,安装电源组件;然后根据电路要求,按钮和灯丝等部件的位置应该有
所区别;紧接着,根据原理图的线路图,将按钮和LED的铜丝焊接到对应接口处。

最后,
根据实验要求,连接模拟电路,测试结果是否符合实验要求。

在实验过程中,本实验室使用了一台OMRON译码器,根据二进制输入状态,它可以产
生4位十进制输出状态。

实验结果显示,在每种二进制输入状态下,OMRON译码器都可以
成功实现预期的输出,从而证明了译码器的良好性能及高精度。

总的来说,本次实验的主要任务是译码的基本介绍,以及掌握OMRON译码器的使用方法。

实验过程既充满乐趣,也有所收获。

让我们有机会贴近电子工程实践,掌握各种技术,扩充知识。

这次实验是一次有趣又有意义的学习体验。

数字编码实验报告(3篇)

数字编码实验报告(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。

二进制到BCD转换单片机实验报告

二进制到BCD转换单片机实验报告

实验1 二进制到BCD转换组员:学号:一、实验目的学习星研Star16L仿真器系统的基本操作,熟悉EL-Ⅱ型通用接口板实验电路,掌握简单的数值转换算法。

二、实验仪器和设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路。

三、实验内容将存放在R2中的一个单字节二进制数,转换成非压缩的二—十进制(BCD)码,并存放到R3R4R5中。

四、实验原理二进制到十进制数值转换的基本原理是逐级求商。

本实验试图通过一个简单的程序展示星研仿真器的工作方式与特点,因此,实验中要打开仿真器中的相应的观察窗口,通过单步或断点运行方式,观察单片机的内部结构以及各个存储单元和控制单元在程序执行中的变化情况,学会利用仿真器观测程序流程,理解程序工作原理。

五、实验方法1、将星研仿真器与微机和目标板相互连接构成完整的硬件仿真系统1)仿真器与仿真头的硬件连接:STAR16L仿真器与仿真头PODPH51(DIP) 用两根40芯扁平电缆连接,注意电缆插头的方向。

参见下图。

2)仿真头与EL-Ⅱ型通用接口板的硬件连接:将EL-Ⅱ型通用接口板的8051CPU芯片拔下,将仿真头PODPH51插入该CPU插座(40脚DIP),注意芯片的上下方向3)仿真器与微机的连接:通过USB接口将微机与仿真器相连,打开仿真器电源。

仿真器与微机的第一次连接将自动引导安装程序,在该驱动程序的安装过程中,请勿执行其它应用程序。

2 、单片机仿真系统运行调试通过双击微机桌面的星研图标,或通过开始菜单,起动星研仿真系统程序,通过输入程序,编译通过后,进入调试状态,打相应的观察窗口,观测CPU内部各个寄存器,存储器以及外部存储器的状态,通过单步或断点运行,验证程序运行的正确性,并修正错误。

在本实验中,程序编译通过后,进入调试状态,打开寄存器窗口,将用户程序复位,在寄存器窗口中的R2中输入一个任意的16进制数,然后单步运行,观察各个参数的变化情况,程序运行结束后观察R3,R4,R5的输出结果是否正确。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二二进制码转换为
B C D码实验报告
公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]
实验二二进制码转换为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文件夹,点击文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)复位“系统复位”键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。

注:操作过程参照“实验一二进制多位加法运算”。

五、实验程序清单
X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\
;将AX拆为5个BCD码,并存入Result开始的5个单元
DATA SEGMENT AT 0 ;,BIN-->BCD
ORG 4000H
RESULT DB 5 DUP()
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
ORG 2CE0H
START PROC NEAR
MOV AX, DATA
MOV DS, AX
MOV DX,0000H
MOV AX, 65535
MOV CX, 10000
DIV CX
MOV RESULT, AL ; 除以 10000, 得WAN位数 MOV AX,DX
MOV DX,0000H
MOV CX, 1000
DIV CX
MOV RESULT+1, AL ; 除以 1000, 得QIAN位数 MOV AX,DX
MOV DX,0000H
MOV CX, 100
DIV CX
MOV RESULT+2, AL ; 除以 100, 得BAI位数 MOV AX,DX
MOV DX,0000H
MOV CX, 10
DIV CX
MOV RESULT+3, AL ; 除以 10, 得SHI位数 MOV RESULT+4, DL ; 得GE位数
JMP $
CODE ENDS
END START。

相关文档
最新文档