汇编程序设计—二进制码转换为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开始的存储单元中。
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码首先,我们需要了解什么是BCD码。
BCD码(二进制编码表达式)是一种用4位二进制数字表示一个十进制数的编码方式。
它的范围是0到9,每个数字使用4位二进制进行表示,因此一个BCD码的范围是0000到1001以下是一个示例汇编程序设计,它将输入的二进制码转换为BCD码,并将结果保存在内存中。
```assemblyorg 100hsection .dataoutput resb 4 ; 输出的BCD码section .textstart:mov ax, input ; 将输入的二进制码加载到寄存器AXmov cx, 4 ; 设置循环次数为4, 一个BCD码使用4位二进制表示convert:rol ax, 1 ; 将二进制码左移1位add dl, 30h ; 将二进制码转换为对应的ASCII码,并保存在寄存器DLmov [output+cx-1], dl ; 将结果保存在内存中loop convert ; 循环exit:mov ah, 4Ch ; 设置退出系统调用功能号int 21h ; 调用系统中断```上述汇编程序设计的主要思路是,使用循环将输入的二进制码逐位转换为BCD码,并将结果保存在内存中。
在每次循环迭代中,我们使用`rol`指令将二进制码左移1位,并通过`and`指令提取最后4位二进制码。
接下来,我们通过`add`指令将二进制码转换为对应的ASCII码,并将结果保存在寄存器DL中。
最后,我们将结果存储在内存中,并通过`loop`指令继续处理下一个二进制位。
以上是一个简单的示例汇编程序设计,它将二进制码转换为BCD码。
你可以根据自己的需求进行修改和扩展。
编写和调试汇编程序需要一定的经验和知识,建议你阅读相关的汇编编程文档和教程,以便更好地理解和掌握汇编程序设计。
智能仪表多字节二进制数转换BCD码

智能仪表多字节二进制数转换BCD码
摘要:多字节无符号二进制数转BCD码在以单片机为核心的智能仪表中应用很普遍。
本文介绍一种新的转换方法,并给出三字节二进制数转BCD码
的源程序,该程序执行时间仅为原来的1.3%,效率提高显著。
关键词:多字节二进制整数BCD码转换
一、引言
在以MCS-51单片机为核心的智能仪表系统中,常遇到二进制整数转换为BCD码的情况。
国内许多单片机书籍都对此进行了介绍并给出了子程序,但效率不高。
本文参考文献作者剖析了二进制整数转BCD码的子程序,分析了程
序效率低的原因,给出了改进后的源程序,效率有所提高。
以3字节的二进制整数为例,程序执行时间由2.856ms减小到2.410ms。
还有没有其它的办法进
一步大幅度减少转换设计时间?本文介绍一种新的程序设计思路,给出的源程序将3字节二进制整数转BCD码执行时间仅为0.374ms。
二、改进思路
由进制数转BCD码的原理可知,这一转换的实现的过程是(以3字节为例):首先把结果单元(这里是4个字节)清零,然后将待转换的二进制数的最高位移入进位位C,把结果单元的值进行乘2加C运算的值又作为结果单元的值,循环24次后得出转换的BCD码。
如果能完全避开效率运行的时间。
这可用下例来说明:
设结果单元某时的值为3456H,分别存放在R1、R2中,用如下的程序来完成结果单元乘2加(设C的当前值为1):
MOV A,R1
ADDC A,ACC
DA A。
二进制转换为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码的概念,并掌握汇编语言中的对应实现方法,是非常重要的一项技能。
码制转换十二进制数ASCII码之间的互相转换BCD

MOV SS,AX
MOV SP,TOP
LEA BX,STRING ;取变量偏址
PUSH BX
;将偏址压栈
PUSH NUM
;将变量压栈
堆栈
AF 25 02 00
0060H 0062H 0064H
26
CALL BINHEX
;(SP)=005EH
CS:0113 LEA DX,STRING ;(DX)=0002H
;若(CL)=0,转NEXT2 ;取字符 ;转换成BCD码 ;加到中间结果上
10
MOV MUL INC JMP NEXT2: MOV AND ADD CMP JNZ NEG NEXT3: MOV RET
DX,10 DX BX SHORT LP1 DL,[BX] DL,0FH AX,DX CH,’-’ NEXT3 AX [DI],AX
(AX)+1000(AX) DL存至缓冲区 令(DL)=0
求100的个数,结构同上
A
(AX)-10
Y
<0?
N
(DL)+1
(AX)+10(AX) 存DL 存AL
返回DOS
15
汇编程序如下:
DATA SEGMENT BNUM DB 270FH DNUM DB 4 DUP(?) ;存放BCD码的缓冲区 DATA ENDS CODE SEGMENT
STR1
0A
02
32
36
0D …
STR2
0A
02
33 33
0D …
NUM
1A
00
21
00
SUM
3B
00
OVER
‘O’
…
…
实验一_二进制转BCD码实验

实验一、二进制转BCD 码实验 一、实验目的(1)掌握keil 软件的程序编辑、编译、调试过程; (2)学习二进制与BCD 码转换程序的编写。
二、实验内容将123对应二进制数转换为十进制数百位、十位、个位BCD 码,依次存放在RAM 的30H 、31H 、32H 单元。
三、实验步骤1、创建文件:运行uvision ,点击File ->New …选项。
再点击File ->Save 选项保存文件*.asm ;2、创建工程:点击Project ->New Project …选项创建一个新的工程;选择CPU ;3、添加已创建的文件:选择“Source Group 1”点击鼠标右键,点击 “Add Files to Group ‘Source Group 1’”。
4、编译链接工程:1)点击Project ->Options for target ‘Target 1’ 选项。
点击Output 标签,Create HEX File 复选框打钩;Trial1_BCD.ASMRESULT EQU 30H ORG 0000H LJMP S1 ORG 0100H S1: MOV SP,#40H MOV A,#123 MOV B,#100DIV AB ;A,商;B,余数 MOV RESULT,A MOV A,B MOV B,#10 DIV ABMOV RESULT+1,A MOV RESULT+2,B LJMP $ END图1-1 主程序流程图2)点击Project->Build target …;5、检错、纠错;6、调试工程:1)点击Debug->Start/Stop Debug Session进入/退出调试状态。
2)运行程序后,观察RAM 30~32H单元存放的数据:View->Memory Window->Address:d:30H(RAM);c:0100H(ROM);四、实验结果五、思考题1、用C51编写源程序,实现本实验要求的功能。
八位二进制码转化为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)的概念发展而来的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二进制码转换为BCD码
一、实验目的
1、掌握数码转换基本方法,加深对数码的理解。
2、掌握顺序结构程序设计的基本方法。
二、实验内容
将AX的内容转换为十进制BCD码。
AX中给定数为0FFFF,将其转化为BCD码,结果保留在名字为result开始的数据区中,此数据区段地址为0、且偏移地址从4100H开始。
值分别为06、05、05、03、05。
三、实验程序框图
四、源程序
DATA SEGMENT AT 0
ORG 4100H
RESULT DB 5 (0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA 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。