汇编程序设计—二进制码转换为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。
IBM-PC汇编语言程序设计课后习题答案
第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。
二进制,十进制,十六进制,ASCII,BCD码的转换,单片机
1.在片内RAM 30H单元有-个8位二进制数,将其转换成压缩BCD码,存于片内RAM 41H(高位)40H(低位)中。
方法:2^8=256,所以8位二进制A<=256,A/100商是百位数,存放到41h单元,余数再除以10,再得商是10位数,高低位互换,) ORG 0100HSTART:MOV A,30H ;取来8位二进制数MOV B,#100DIV AB ;除以100MOV 41H,A ;商是百位数,存放到41h单元MOV A,B ;取回余数MOV B,#10DIV AB ;再除以10SWAP A ;商是10位数,高低位互换ORL A,BMOV 40H,A ;将十位数与个位位数存入40hSJMP $END2.一个字节(8位)BCD码转换为二进制数(方法:先将高半字节乘以10,再加上低半字节)设待转换的BCD码存放于R2中DTOB:MOV A,R2ANL A,#0F0HSWAP AMOV B,#0AHMUL ABMOV R3,AMOV A,R2ANL A,#0FHADD A,R3RET3.二进制数转换为ASCII码设(30H)=4BH,将高4位的ASCII码放在31H单元,低4位的ASCII码放在32H单元,程序具有通用性,向入口参数30H存入任何数,都能将其变成相应的ISCII 码.ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP,#60HMOV 30H,#4BHMOV R2,30HMOV A,R2ANL A,#0FHCJNE A,#0AH,NEQNEQ: JC LOOPADD A,#37HJMP LOOP3LOOP:ADD A,#30HLOOP3:MOV 31H,AMOV A,R2SWAP AANL A,#0FHCJNE A,#0AH,NE1NE1: JC LOOP1ADD A,#37HJMP LOOP4LOOP1:ADD A,#30HLOOP4:MOV 32H,AA1: SJMP A1END4.已知R0的低半个字节为一个四位的二进制数,要求将其转换为ASCAII码后送回R0中。
16位二进制转换为BCD码的C51汇编程序
SWAP A
ANL 36H,#0F0H
MOV A,36H
SWAP A
MOV 30H,A
RET
XIANSHI:MOV DPTR,#TAB
DE: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DE
RET
TAB:DB 3FH,05H,5BH,4FH,65H,6EH,7EH,07H,7FH,6FH
DB 0BFH,85H,0DBH,0CFH,0E5H,0EEH,0FEH,87H,0FFH,0EFH
UBCD: MOV A,34H
CJNE A,#00H,WUWEI
MOV R1,#35H
MOV R0,#36H
MOV A,#00H
XCHD A,@R0
AJMP RETURN
JIA: CLR C
MOV A,36H
ADDC A,#56H
DA A
MOV 36H,A
MOV A,35H
16位二进制转BCD码的程序算法及51汇编实现:
n=b15~b0
n=[b15~b8]*256+[b7~b0]
=[b15~b12]*4096+[b11~b0]
,高四位[b15~b12]取值范围为0~15,代表了4096的个数
n=[b15~b12]*4000+{[b15~b12]*(100-4)+[b11~b0]}
[b6~b0]中减去2*y
就有:
n=n=4*x(千位)+(x+y)(百位)+3*y(十位)+[b6~b0]-2*y
由此,就可以明确由高9位[b15~b7]变换出来十进制的各个位的数值,可能大于9,到最后整理一下即可。
二进制数转换为BCD 码
二进制数转换为BCD 码作者:佚名来源:不详录入:Admin更新时间:2008-7-26 20:09:41点击数:2【字体:】本例为单字节二进制数(0X20)转换为非压缩BCD 码,存在0X25,0X24,0X23 中,0X25 为百位,0X23 为个位。
main: MOV a,@0xa4 ;赋值MOV 0x20,aMOV 0x21,aMOV 0x22,aMOV a,@0x0 ;0x23,0x24,0x25 单元清0MOV 0x23,aMOV 0x24,aMOV 0x25,aMOV a,@0x64 ;对100 的个数计数MOV 0x26,aMOV a,@0x25 ;百位存在0x25 中MOV 0x04,acall a0 ;调计数子程MOV a,@0x0a ;对10 的个数计数MOV 0x26,adec 0x04 ;个位存在0x24 中call a0MOV a,0x22 ;除去百位,十位,余下的即个位,存入0x23MOV 0x23,aself: jmp selfa0: ;计数子程MOV a,0x26sub 0x22,ajbs 0x03,2jmp a1inc 0x00 ;无余数则对应位加1MOV a,@0x0 ;0x21 与0x22 在返回时应保持相同MOV 0x21,areta1: jbs 0x03,0 ;小于则跳a2jmp a2inc 0x00 ;大于则计数值加1MOV a,0x22MOV 0x21,a ;将0x22 保存到0x21 中jmp a0 ;跳回a0 继续计数a2: MOV a,0x21 ;0x21 中保存的减之前的数据,此时恢复到0x22 MOV 0x22,areteop本例为单字节二进制数(0X20)转换为非压缩BCD 码,存在0X25,0X24,0X23 中,0X25 为百位,0X23 为个位。
main: MOV a,@0xa4 ;赋值MOV 0x20,aMOV 0x21,aMOV 0x22,aMOV a,@0x0 ;0x23,0x24,0x25 单元清0MOV 0x23,aMOV 0x24,aMOV 0x25,aMOV a,@0x64 ;对100 的个数计数MOV 0x26,aMOV a,@0x25 ;百位存在0x25 中MOV 0x04,acall a0 ;调计数子程MOV a,@0x0a ;对10 的个数计数MOV 0x26,adec 0x04 ;个位存在0x24 中call a0MOV a,0x22 ;除去百位,十位,余下的即个位,存入0x23 MOV 0x23,aself: jmp selfa0: ;计数子程MOV a,0x26sub 0x22,ajbs 0x03,2jmp a1inc 0x00 ;无余数则对应位加1MOV a,@0x0 ;0x21 与0x22 在返回时应保持相同MOV 0x21,areta1: jbs 0x03,0 ;小于则跳a2jmp a2inc 0x00 ;大于则计数值加1MOV a,0x22MOV 0x21,a ;将0x22 保存到0x21 中jmp a0 ;跳回a0 继续计数a2: MOV a,0x21 ;0x21 中保存的减之前的数据,此时恢复到0x22 MOV 0x22,areteop。
2进制-10进制40;BCD码41;数码转换器设计
目录摘要 (1)1原理分析 (2)2设计思路 (3)3设计程序 (4)3.1二-十进制转换 (4)3.2对十进制数分位 (6)3.3分别输出十进制数 (7)3.4输出到数码管 (9)3.5显示位数 (11)4整体设计电路图与仿真结果分析 (12)4.1整体设计电路图 (12)4.2仿真结果 (12)4.3仿真结果分析 (13)5小结与体会 (13)参考文献 (15)摘要BCD码亦称二进码十进数或二-十进制代码.用4位二进制数来表示1位十进制数中地0~9这10个数码.是一种二进制地数字编码形式,用二进制编码地十进制代码.BCD码这种编码形式利用了四个位元来储存一个十进制地数码,使二进制和十进制之间地转换得以快捷地进行.本文就是在quartus软件环境下利用VHDL语言将输入地八位二进制转换为BCD十进制数并且在数码管中显示出来.关键词:二--十进制转换器,BCD码,quartus,VHDL.2进制-10进制(BCD码)数码转换器设计1原理分析BCD 码这种编码形式利用了四个位元来储存一个十进制地数码,使二进制和十进制之间地转换得以快捷地进行.这种编码技巧,最常用于会计系统地设计里,因为会计制度经常需要对很长地数字串作准确地计算.相对于一般地浮点式记数法,采用BCD码,既可保存数值地精确度,又可免却使电脑作浮点运算时所耗费地时间.此外,对于其他需要高精确度地计算,BCD编码亦很常用.此处要介绍地是八位二进制转BCD码地硬件实现,采用左移加3地算法,具体描述如下:(1)、左移要转换地二进制码1位(2)、左移之后,BCD码分别置于百位、十位、个位(3)、如果移位后所在地BCD码列大于或等于5,则对该值加3(4)、继续左移地过程直至全部移位完成举例:将八位二进制码11111111转换成BCD码,其真值表如表1-1所示表1-1八位二进制码11111111转换成BCD码真值表2设计思路本次设计并没有用到左移地原理进行操作,直接对输出芯片地输出进行定义,虽然较为繁琐,但是原理却简单,所以才用此种方法,具体原理如下:2进制-10进制(BCD码)地转换可以通过一个芯片实现,即输入地八位二进制码通过编程输出十进制码,八位二进制能表示地最大地数为“255”,即输出地十进制为三位数,此时输出地BCD码就要有12位,每四位代表一个数,此时可再利用一个芯片把输出地12位数重新分配到三个输出管脚中,每个管脚代表一位数,时钟信号每输变一次,输出数字地位也会变一次,即个、十、百位分别输出,同时芯片地selout输出端输出时钟信号地数字到下一个芯片地接收端,通过编程实现000对应110,001对应101,010对应011,即输出0地位置可以表示数码管中所显示数字地位,然后再通过芯片输出到七段数码管进行显示,具体流程图如图2-1所示:图2-1 设计总流程图3设计程序3.1二-十进制转换原理图如图3-1所示:图3-1二进制到十进制转换原理图具体程序语言如下:library ieee。
二进制转换为bcd码汇编语言
序号:1主题:二进制转换为BCD码汇编语言文章内容:1. 介绍二进制和BCD码的概念二进制是一种计算机使用的数制,它由0和1两个数字组成,是计算机内部信息的一种表示方式。
而BCD码(Binary Coded Decimal)是一种用二进制代码来表示十进制数的一种方式,它将一个十进制数的每一位都转换成四位二进制数来表示,便于计算机进行十进制数的运算和处理。
2. 二进制到BCD码的转换方法二进制到BCD码的转换步骤如下:a. 将十进制数的每一位数值分别转换成二进制数。
b. 将得到的二进制数按照4位一组进行分组。
c. 对于每一组4位二进制数,若其值大于或等于5,则需要在其前面加上3位分别为1、0、0的二进制数。
3. 汇编语言中的二进制转BCD码转换实现在汇编语言中,可以通过编写程序来实现二进制转BCD码的转换。
下面是一个简单的示例汇编代码:```MOV AL, 98 ; 将十进制数98赋给AL寄存器MOV CL, 10 ; 将十进制数10赋给CL寄存器DIV CL ; 用CL寄存器中的值10去除AL中的值98,商存入AH 中,余数存入AL中```通过上面的汇编代码,可以得到十进制数98的BCD码表示。
4. BCD码转换为二进制的实现除了将二进制转换为BCD码外,汇编语言还可以实现BCD码转换为二进制的操作。
以下是一个简单的示例汇编代码:```MOV AH, 09 ; 将BCD码表示的数值存入AH寄存器MOV BL, 16 ; 将16赋给BL寄存器MUL BL ; 将AH中的值乘以BL中的值,结果存入AX中```通过上面的汇编代码,可以将BCD码表示的数值转换为二进制表示。
5. 总结通过汇编语言,可以实现二进制转换为BCD码和BCD码转换为二进制的操作。
这些操作在计算机中起着重要的作用,特别是在数字处理和显示方面。
对于程序员来说,理解二进制和BCD码的概念,并掌握汇编语言中的对应实现方法,是非常重要的一项技能。
计算机组成原理与汇编语言程序设计课后习题及解答(详解)
计算机组成原理与汇编语言程序设计课后习题及解答徐洁,俸远祯电子工业出版社第1章习题一1.什么是程序存储工作方式?答:计算机的工作方式——存储程序工作方式。
即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。
2.采用数字化方法表示信息有哪些优点?用数字化方法表示信息的优点:(1)抗干扰能力强, 可靠性高。
(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。
(3)数字化的信息可以存储、信息传送也比较容易实现。
(4)可表示的信息类型与范围及其广泛,几乎没有限制。
(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。
3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
4.数字计算机的主要特点是什么?1. (1)能在程序控制下自动连续地工作;(2|)运算速度快;(3)运算精度高;(4)具有很强的信息存储能力;(5)通用性强,应用领域及其广泛。
5.衡量计算机性能的基本指标有哪些?答:衡量计算机性能的基本指标:(1)基本字长——参加一次运算的数的位数;(2)数据通路宽度——数据总线一次能并行传送的位数;(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。
(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C 语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD2.将八进制数(37.2)8转换为十进制数及BCD码.解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD3.将十六进制数(AC.E)转换为十进制数及BCD码.解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。
单片机汇编语言程序设计
4.1.2 汇编语言源程序的设计步骤 汇编语言源程序的设计过程的一般步 骤是: 分析任务 当我们要编写某个功能的应用程序时, 首先应该详细分析给定的任务。明确 哪些是任务所提供的基本条件,哪些 是任务要解决的具体问题,哪些是任 务所期望的最终目标。
4.1.2 汇编语言源程序的设计步骤
确定算法 任务明确之后,下一步就是确定解决问题的 方法。将给定的任务转换成计算机处理模式, 即通常所说的算法。对于较复杂的任务,需 要先用数学方法把问题抽象出来。往往同一 个数学表达式可以用多种算法实现,我们应 综合考虑寻找出其中的最佳方案,使程序所 占内存小,运行时间短。 画程序流程图 画流程图是把所采用的算法转换为汇编语言 语言程序的准备阶段,选择合适的程序结构, 把整个任务细化成若干个小的功能,使每个 小功能只对应几条语句。
4.3.1 顺序程序设计 【例4-6】
程序清单之二(采用DPTR当基址寄存器):
【例4-5】将片内RAM 30H的中间4位,31H的 低2位,32H的高2位按序拼成一个新字节,存 入33H单元。 分析:需要灵活掌握逻辑操作指令,对存储单 元的所需位进行保留,并移到字节中正确位置, 最后将相应位合并在一个字节。 ORG 0000H LJMP START ORG 0100H START: MOV A,30H ANL A,#3CH ;保留30H的中间4位原值,
4.2 汇编语言伪指令
8、BIT 位地址符号伪指令 格式:字符名称 BIT 位地址 功能:用规定的字符名称表示位地址。 例如: X0 BIT P1.0 X1 BIT 30H 经汇编后,P1口的第0位地址赋给X0, 位地址30H赋给X1。在程序中可以分别 用X0、X1代替P1.0和位地址30H。
4.3 简单程序设计
汇编实验报告--二进制到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的控制符不显示。
八位二进制码转化为BCD码及余三码、BCD码转化余三码
河南科技大学课程设计说明书课程名称 EDA技术题目八位二进制转化为BCD码及余三码、BCD码转化为余三码学院车辆与动力工程学院班级学生姓名指导教师日期2012年7月14号八位二进制码转化为BCD码及余三码、BCD码转化余三码摘要八位二进制数转化为BCD码和余三码的转换在计算机语言中起到了非常重要的作用,通过这次的课程设计让我们更好地掌握二进制数转化为BCD 码和余三码。
二进制转化为余三码不能直接转化,只能通过BCD码为中介进而转化成余三码。
余三码(余3码)是由8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421BCD码多3,故称为余三码。
BCD码的一种。
余三码是一种对9的自补代码,因而可给运算带来方便。
其次,在将两个余三码表示的十进制数相加时,能正确产生进位信号,但对“和”必须修正。
修正的方法是:如果有进位,则结果加3;如果无进位,则结果减3。
如,(526)10进制=(0101 0010 0110)8421BCD码=(1000 0101 1001)余3码EDA技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。
VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。
本设计采用VHDL,Altera公司的Quartus II软件仿真,来实现八位二进制到BCD和BCD到余三码的转换。
由于八位二进制的最大范围是0~255,而八位BCD码的范围是0~99,故在转换时输入信号只能取99以内的数。
关键词:八位二进制、BCD码、余三码、VHDL目录第一章绪论 (1)§1.1 课程设计题目 (1)§1.2 设计目的 (2)§1.3 课程设计要求 (2)第二章EDA、VHDL简介 (3)§2.1 EDA简介 (3)§2.2 VHDL简介 (3)第三章设计过程 (5)§3.1设计规划 (5)§3.2各个模块设计及原理图 (5)§3.2.1八位二进制码转化为八位BCD码 (5)§3.2.2八位BCD码转化为八位余三码 (6)§3.2.3八位二进制码转化为8位余三码 (7)第四章系统仿真 (9)§4.1八位二进制码转化为八位BCD码仿真及分析 (9)§4.2八位BCD码转化为八位余三码仿真及分析 (9)§4.3八位二进制码转化为八位余三码仿真及分析 (10)第五章总结 (11)参考文献 (12)第一章绪论随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的优势也更加突出,自20世纪70年代开始,这种用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎所有的应用领域EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
二进制码转换成BCD码
实验三二进制码转换成BCD码实验目的设计并实现一个4位二进制码转换成BCD码的转换器。
实验器材1、SOPC实验箱2、计算机(装有Quartus II 7.0软件)实验预习1、预习二进制码转换成BCD码的原理。
2、书写预习报告,必须有完整的VHDL设计程序及实验步骤。
实验原理对于不同代码之间的转换,有用硬件实现的,也有用软件实现的。
对于硬件实现,可以用一般的组合逻辑电路实现,也可以用译码器、编码器或只读存储器来实现。
本实验的原理见表3-1所示。
表3-1 二进制码转换成BCD码的转换真值表library ieee;use ieee.std_logic_1164.all;entity B_bcd isport( D:in std_logic_vector(3 downto 0);B:out std_logic_vector(4 downto 0)); end B_bcd;architecture FUN of B_bcd isbeginprocess(D)begincase D iswhen "0000"=>B<="00000";when "0001"=>B<="00001";when "0010"=>B<="00010";when "0011"=>B<="00011";when "0100"=>B<="00100";when "0101"=>B<="00101";when "0110"=>B<="00110";when "0111"=>B<="00111";when "1000"=>B<="01000";when "1001"=>B<="01001";when "1010"=>B<="10000";when "1011"=>B<="10001";when "1100"=>B<="10010";when "1101"=>B<="10011";when "1110"=>B<="10100";when "1111"=>B<="10101";when others=>B<="ZZZZZ";end case;end process;end fun;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_UNSIGNED.all;entity B_bcd isport( D:in std_logic_vector(3 downto 0);B:out std_logic_vector(4 downto 0)); end B_bcd;architecture FUN of B_bcd isbeginprocess(D)beginIF (D<="1001" AND D>="0000")THEN B<='0'&D;ELSIF (D>"1001" AND D<="1111")THEN B<=D+"00110";ELSE B<="ZZZZZ";END IF;end process;end fun;1、启动Quartus II 建立一个空白工程,然后命名。
汇编程序设计—二进制码转换为BCD码
汇编程序设计—二进制码转换为BCD码
一、算法原理
BCD(Binary Coded Decimal)码是把十进制数据以二进制的方式进
行编码,每四位二进制数字表示一个十进制的数字,比如数字“7”用二
进制表示为“0111”,把“0111”放在一起就是十进制数“7”的BCD码。
1)对任意两个BCD码,可以按位相加,得到结果,其运算规则如下:(1)如果两个BCD码都是规范的BCD码,其相加结果也是BCD码;
(2)如果两个BCD码的相加结果不是正确的BCD码,则可以在最高
位1的位置添加1,使之成为BCD码,另一个BCD位置上也添加1,然后
最低位置上的1被移位,最终结果也是BCD码。
2)工程实现
该BCD码转换程序主要由二进制转换为BCD码的过程组成,根据算法
原理,实现程序如下:
1.首先把输入的二进制码按4位1组进行分组,得到分组后的二进制数,如果分组后的高位不足4位,则用0补足,得到规范的二进制码;
2.对二进制码进行转换,将2进制码转换成BCD码,得到相应的BCD 码;
3.对于每组BCD码,检查它是否是正确的BCD码,如果不是则需要添
加1;
4.最后将BCD码拼接起来,就是最终的BCD码结果。
二、汇编代码
MOV AL, offset BinaryCode ; 把二进制码移到AL中MOVCL,4;CL设置为4。
八位二进制——BCD码转换器
实验报告:8位二进制-BCD码转换器姓名:学号:指导教师:一.实验目的了解二进制-BCD码转换器实现原理,掌握移位加3算法,熟悉Verilog编程中模块复用模式。
二.实验任务1.掌握用移位加三算法实现二进制-BCD码转换器的设计;2.设计Verilog实验程序;3.生成比特流文件,将文件下载到开发板中进行硬件验证。
三.实验设备1.计算机(安装Xilinx ISE 10.1软件平台);2.NEXYS2 FPGA开发板一套(带USB-MIniUSB下载线)四.实验原理设计任意数目输入的二进制-BCD码转换器的方法就是采用移位加三算法(Shift and Add 3 Algorithm)。
此方法包含以下4个步骤:1)把二进制左移1位;2)如果共移了8位,那么BCD数就在百位、十位和个位列;3)如果在BCD列中,任何一个二进制数是5或者比5更大,那么就在BCD列的数值加上3;4)回到步骤1)。
其工作过程如图1所示:图1. 一个8位的二进制数转换成BCD码的步骤五.实验内容在Xilinx ISE 10.1上完成8位二进制-BCD码转换器设计,输入设计文件,仿真后,生成二进制码流文件下载到FPGA开发板上进行验证;1)依照实验1的方式,在Xilinx ISE 10.1中新建一个工程example02;2)在工程管理区任意位置单击鼠标右键,在弹出的快捷菜单中选择“New Source”命令,弹出新建源代码对话框,这里我们选择“Verilog Module”类型,输入Verilog文件名“binbcd8.v”,完整代码如下:module binbcd8(input [7:0] b,output reg [9:0] p);reg [17:0] z;integer i;always @(*)beginfor (i=0;i<=17;i=i+1)z[i]=0;z[10:3]=b;repeat(5) //重复5次beginif (z[11:8]>4)z[11:8]=z[11:8]+3;if (z[15:12]>4)z[15:12]=z[15:12]+3;z[17:1]=z[16:0];endp=z[17:8];endendmodule3)设计相应的7段显示管程序,将相应的十进制数在开发板的显示管上显示出来。
8086系统汇编语言压缩BCD码与二进制相互转换问题的4种方法
介简者作
.]S[范规计设程工统系线布合综 7002-11305 BG 】2【 .]S[范规计设房机统系息信子电 8002-47105 BG 】1【 】献文考参【
dohtem sthgiew eht fo mus ;dohtem redniamer eht etaluclac ot net yb dedivid ;dohtem noitcurtsni aad ;dohtem tnemtsujda tib yb tib 】s dr ow y eK【 .stneduts eht eripsni dna tcurtsni ot snoituacerp eht edivorp dna dohtem hcae gnisu fo yaw eht etartsnomed ot smargorp cificeps htiw denibmoc ,yllaniF .snoitidnoc tnereffid rednu nesohc eb ot dohtem tseb eht tuo tniop dna dohtem hcae fo egnar noitacilppa eht ezylana ,yldnoceS .dohteM sthgieW eht fo muS dna dohteM redniameR eht etaluclaC ot neT yb dediviD ,dohteM noitcurtsnI AAD ,dohteM tnemtsujdA tiB yb tiB si taht ,yllautum tamrof DCB dekcap ot tigid yranib gnisrevnoc fo sdohtem ruof edulcnoC 】t c art s bA【 �anihC,320611 nailaD, ygolonhceT fo ytisrevinU nailaD�
16位二进制数转换为十进制数(BCD码)的可用算法
16位⼆进制数转换为⼗进制数(BCD码)的可⽤算法分析将16位⼆进制数转换为⼗进制数(BCD码)的可⽤算法------*****算法⼀:加3移位法(移位指令)"⼆进制数调整BCD码的⽅法是将⼆进制码左移16次,每次移位后都检查低四位LSD+3是否⼤于7,如是则加3,否则不加,⾼4位MSD作同样处理"⼀、为什么左移16次原寄存器是存⼆进制数的,新寄存器是存⼗进制数的,当然要左移16次,把数据全部移进去。
但这⾥要注意两件事,第⼀,如果只安排⼀个字节作⼗进制寄存器,原数据要⼩于64H(即100)。
第⼆,由于新寄存器是⼗进制的,要随时调整。
⼆、检查半字节+3 是否⼤于7,是,则+3在51 系列⾥有⼗进制调节指令(半字节⼤于9,则加6,应该不难理解),PIC ⾥没有,只好采取变通的⽅法。
检查半字节+3 是否⼤于7,也就是检查半字节是否⼤于4。
因为,如果⼤于4(⽐如5、6),下⼀步左移就要溢出了,所以加3,等于左移后的加6,起到⼗进制调节的作⽤。
那为什么要绕个圈⼦去检测半字节+3 是否⼤于7 呢?这样程序编起来会简练⼀些。
假如有⼀个⼆进制数511,我把他转511的⼗进制数1 1111 1111 原数1 0000 0001 ;左移⼀次2 0000 0011 ; 左移⼆次3 0000 0111 ;左移三次,检查低四位+3>7?3.1 0000 1010 ;⼤于7,加3进⾏调整4 0001 0101 ;左移四次, 检查低四位+3>7?4.1 0001 1000 ;⼤于7,加3进⾏调整5 0011 0001 ;左移五次6 0110 0011 ;左移六次,检查⾼四位+3>7?6.1 1001 0011 ;⼤于7,加3进⾏调整7 1 0010 0111 ;左移七次,检查低四位+3>7?7.1 1 0010 1010 ;⼤于7,加3进⾏调整8 10 0101 0101 ;左移⼋次,检查⾼低四位+3>7?8.1 10 1000 1000 ;⼤于7,加3进⾏调整9 101 0001 0001 ;左移九次(得到BCD码511)算法⼆:除法指令unsigned int ui;//(16位⽆符号⼆进制数)?unsigned char uc[5];//(BCD码表⽰的5位⼗进制数)uc[4]=(ui/10000)%10;uc[3]=(ui/1000)%10;uc[2]=(ui/100)%10;uc[1]=(ui/10)%10;uc[0]=ui%10;算法三:减法+循环指令?如例4-22:。
汇编语言程序设计(第四版)第1~5章【课后答案】
第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU 需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
8086系统汇编语言压缩BCD码与二进制相互转换.
EXAMPLE:
START: MOV AX , DATA MOV DS , AX XOR AL , AL;AL;置零,用来存放累加结果并进行十进制调整 BINBCD:ADD AL , 1;二进制数多大就加几次1,保证AL与二进制数等值
DAA;对AL进行压缩BCD码调整
DEC BINDATA;每执行一次,二进制数BCDDATA减一计数 JNZ BINBCD;不等于就跳转到BINBCD RET START ENDS
为最佳选择。
2)16 位二进制数转换为压缩 BCD 码 由于16 位二进制数超出 DAA 指令范围,只能应用除十求余法和按权展
开法。其中除十求余法比较简单。
3)位二进制数转换为压缩 BCD 码 对于 32 位二进制数,由于超出 8086 系统汇编语言除法 16 位的最大长
度,因此只能使用按权展开法。使计算机能够正确识别 32 位二进制数
POP CX;CX出栈,仍当做计数器,执行完一次操作自动减一
LOOP BINTOBCD;CX不等于0就返回BINTOBCD继续执行 RET COOD ENDS END START
二进制转化为BCD码方法选取
1)小于 100D 的二进制数转换为压缩 BCD 码 四种方法都适用,但是 DAA 指令法逻辑最为简单,指令也最少,因此
4、按权展开法
按权展开法原理简单,是将任何数制转换为十进制表示方式的通用 方法,也可将压缩 BCD 码转换为二进制数的方法。但是在二进制 向压缩 BCD 码的转换中,要与 DAA 指令法配合操作。而且其涉 及大量移位和乘法操作,语句相对复杂。
4.22题:编写一个将16位二进制数转换成BC)
对于待转换二进制数,由于 BCD 转换后大小不变,因此可假设该 数本身就是以十进制在计算机中储存的,这样就将二进制数向 BCD 码的转换转化成十进制向 BCD 码的转换。于是,该数除十 后得到的余数即为压缩 BCD 码的个位,再对商求余,得到十位, 以此类推。求余的次数取决于转换后压缩 BCD码的位数。但是, 取出的余数为非压缩 BCD 码,仍需进行相应调整。而且,求商和 余数的操作要依靠二进中商和余数最长为 16 位,因此除十求余法 只适用于16位和 16 位以下二进制数向压缩 BCD 码的转换。
实验二 数码转换程序实验
数码转换程序实验实验目的掌握不同进制数及编码相互转换的程序设计方法。
实验内容及说明计算机输入设备输入的信息一般是由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,最大可转换为五位十进制数。
8421BCD码转换成5421BCD码
海南大学课程设计论文学科:数字电子技术题目:8421BCD码转换成5421BCD码学院:机电工程学院专业:机械电子工程班级:机电二班*****学号:**************2015年1月摘要:数字电子技术是一门实践性很强的课程,加强工程训练,特别是技能的培养,对于培养工程人员的素质和能力具有十分重要的作用。
在电子信息类本科教学中,电子技术课程设计是一个重要的实践环节,它包括选择课题、电子电路设计、组装、调试和编写总结报告等实践内容。
关键词:电子技术、实践、设计正文:一、课程设计的目的1、初步掌握电子线路的试验、设计方法。
即学生根据设计要求和性能参数,查阅文献资料,收集、分析类似电路的性能,并通过组装调试等实践活动,使电路达到性能指标。
2、课程设计为后续的毕业设计打好基础。
毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法,同时,课程设计报告的书写,为今后从事技术工作撰写科技报告和技术资料打下基础。
二、课程设计的题目将8421BCD码转换成5421BCD码的电路设计三、设计内容及要求设计一个将8421BCD码转换成5421BCD码的电路,要求使用以下两种方法实现。
(1)用基本逻辑门实现。
(2)用其他的集成电路芯片实现。
采用数码管显示变换成的5421BCD码;设置一个复位按钮和一个启动按钮。
四、设计步骤1、理论设计:结合教材《电子技术基础》(数字部分·第五版)、网络、图书馆相关资料对课题进行理论设计与验证;2、学习使用Multisim 软件,并在Multisim 软件上进行该课题的电路设计与测设3、 编写设计报告:写出设计与制作的全过程,附上有关资料和图纸,有心得体会。
五、方案设计与论证1、 8421码转换成5421码原理框图2、BCD8421码与5421码区别8421是最常用的二进制码,叫这个是因为四位8421码时,从左到右每个"1"代表的十进制数分别是"8"、"4"、"2"、"1" 如下:"1000" 为十进制 "8" "0100" 为十进制 "4" "0010" 为十进制 "2" "0001" 为十进制 "1"5421码与此相同,每位一代表的是十进制的"5"、"4"、"2"、"1"控 制 模 块即:"1000" 为十进制 "5""0100" 为十进制 "4""0010" 为十进制 "2""0001" 为十进制 "1"5421码一大特点可以直接按权求对应的十进制数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二进制码转换为BCD码
一、实验目的
1、掌握数码转换基本方法,加深对数码的理解。
2、掌握顺序结构程序设计的基本方法。
二、实验内容
将AX的内容转换为十进制BCD码。
AX中给定数为0FFFF,将其转化为BCD码,结果保留在名字为result开始的数据区中,此数据区段地址为0、且偏移地址从4100H开始。
值分别为06、05、05、03、05。
三、实验程序框图
四、源程序
DA TA SEGMENT A T 0
ORG 4100H
RESULT DB 5 (0)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
MOV AX,DATA
MOV DS,AX
MOV AX,0FFFFH ;0FFFFH送至AX
MOV BX,10000 ;10000送至BX
DIV BX ;AX/BX,商存于AL,余数存于DX MOV RESULT,AL ;将万位数存入RESULT中
MOV AX,DX ;余数存入AX中
MOV DX,0 ;DX清零
MOV BX,1000
DIV BX
MOV RESULT+1,AL ;将千位数存入RESULT+1中
MOV AX,DX
MOV DX,0
MOV BX,100
DIV BX
MOV RESULT+2,AL ;将百位数存入RESULT+2中
MOV AX,DX
MOV DX,0
MOV BX,10
DIV BX
MOV RESULT+3,AL ;将十位数存入RESULT+3中MOV RESULT+4,DL ;将个位数存入RESULT+4中
MOV AH,4CH
INT 21H
CODE ENDS
END START。