汇编程序设计—二进制码转换为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)的概念发展而来的。
二进制转化bcd
二进制码转BCD码在单片机里面,如:显示个温度值,这时,要取一个数的个位、十位、百位,可以用/和 %(求商和求余)来解决。
但是,在FPGA里面用求商和求余将会非常消耗资源,这样就必须用到二进制转BCD码了,这里介绍一种简单的加3移位算法。
注:B代表二进制,D代表十进制,0x代表十六进制,BCD为BCD 码,下同。
1、加3移位法以二进制数(0000_101 Xn)B=(10+Xn)D为例,串行输入三位后,(0101)B=5(D)左移一位后:(0000_101Xn)B=(10+Xn)D如果(0000_101Xn)B直接输出显示为:当Xn=0时,0000_1010=0x0A。
此为错误的BCD码。
采用加3移位法,修正移位结果:串行输入三位后,结果大于4(0101)B=5(D)加3:(0101)B+(0011)B=(1000)B --十进制表示:5+3=8 再左移一位后:(1000Xn)B=(0001_000Xn)BCD对应十进制显示:1 Xn每四位BCD码对应一位十进制数,即:(10+Xn)D,转换成功注:Xn为下一位串行输入的二进制数。
2、设计思路这里一共需要四个模块:计数器、移位器、加法器、寄存器输出。
分别设计好之后,用状态机控制它们,就完成了。
3、仿真结果注:图中clk为时钟,en为高电平使能,rst为高电平复位,data_in为输入的12位二进制码,以十进制的形式显示在时序图;qout为输出的16位BCD码,以十六进制的形式显示在时序图,17个时钟上升沿可完成转换任务。
4、综合结果5、难点分析要搞懂这个加3移位算法,必须要按照8位二进制(11101011)转BCD过程图,自己手动推导一下,才容易理解。
此算法的难点在于,需要把输入的二进制数,按照每四个bit来划分为一个单元(所以输入的二进制数,位宽必须是4的倍数),然后,每个单元都要同时判断是否大于4,大于就要加3,否则不加.理解了这个算法之后,那么BCD转二进制就非常容易了,减3移位即可,减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码
一、算法原理
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�
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 码的转换。
(实验二)二进制码转换为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 码作者:佚名来源:不详录入: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。
bcd码转换课程设计
bcd码转换课程设计一、课程目标知识目标:1. 让学生理解并掌握二进制、八进制和十进制的数制原理及其转换方法;2. 使学生掌握BCD码的概念、特点及其与二进制、十进制的转换关系;3. 培养学生运用BCD码进行简单计算和信息处理的能力。
技能目标:1. 培养学生运用所学知识,独立完成二进制、八进制、十进制与BCD码之间的转换;2. 培养学生通过编程实现BCD码与其他数制转换的能力;3. 提高学生在实际问题中运用BCD码分析和解决问题的能力。
情感态度价值观目标:1. 激发学生对计算机数制及其转换的兴趣,培养其探索精神;2. 培养学生严谨、细心的学习态度,提高其逻辑思维能力和团队协作能力;3. 引导学生认识数制转换在计算机科学中的重要性,培养其学习责任感。
本课程针对中学生设计,结合计算机科学知识点,充分考虑学生的年龄特点、知识基础和认知能力。
课程目标旨在使学生通过学习BCD码转换,掌握数制原理和转换方法,培养其编程能力和实际问题解决能力,同时提高学生的逻辑思维和团队协作能力,激发其对计算机科学的兴趣。
通过具体、可衡量的课程目标,为后续教学设计和评估提供明确的方向。
二、教学内容1. 数制原理及其转换方法:- 二进制、八进制、十进制的概念及特点;- 不同数制之间的转换方法。
2. BCD码相关知识:- BCD码的定义、特点;- BCD码与二进制、十进制的转换关系。
3. 教学大纲安排:- 第一阶段:数制原理及其转换方法学习;- 第二阶段:BCD码的概念、特点及其转换方法学习;- 第三阶段:实际应用案例分析,巩固所学知识。
4. 教材章节及内容:- 第一章 数制及其转换:二进制、八进制、十进制的概念、转换方法;- 第二章 BCD码:BCD码的定义、特点,与二进制、十进制的转换方法;- 第三章 实际应用:分析实际案例,运用所学知识解决实际问题。
教学内容根据课程目标进行选择和组织,注重科学性和系统性。
在教学过程中,教师需按照教学大纲的安排和进度,引导学生学习教材中的相关章节,确保学生掌握数制原理、BCD码及其转换方法,并能够将其应用于实际问题的解决。
- 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。