怎么将16位二进制数转换成BCD码的汇编语言程序

怎么将16位二进制数转换成BCD码的汇编语言程序,第1张

1、首先左移要转换的二进制码1位;  左移之后,BCD码分别置于百位、十位、个位;  如果移位后所在的BCD码列大于或等于5,则对该值加3;继续左移的过程直至全部移位完成,并检查每一列对应的bcd码是否

2、接着看信号列表。

3、然后二进制代码设计。

4、十进制代码。

5、十六进制,最后就完成了。

注意事项:

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。

使用masm.exe编译16位汇编源代码生成*.obj文件,在用link.exe连接生成16位可执行文件*.exe。在32位机器上是可以写16位程序的,因为x86的计算机体系就是为了兼容低阶程序而存在的,计算机在启动的时候就是以实模式(可以简单理解为16位的)启动的,之后 *** 作系统才使用机器指令转向32位保护模式(因为这样从硬件级支持多任务)。编写16位、32位、以及64位汇编程序只要下载安装相应的汇编包就可以了。追问:可以兼容低阶的程序也能兼容高阶的?回答:计算机开机启动是实模式的, *** 作系统使用机器指令转入保护模式,之所以保留实模式就是为了在硬件级支持16位程序,进入保护模式以后机器还能运行16位程序是因为在保护模式下还支持一种称为虚拟86的模式,也就是说虽然在保护模式下 *** 作系统也能执行16位机器码,但是她是保护模式提供的虚拟机状态,可以简单理解为虚拟86模式是软件仿真的16为执行环境(以便在保护模式下直接运行16位代码,而不用转回实模式)。要编译执行64机器码,必须是64cpu。否则机器无法编译执行~!低阶无法执行高阶机器码。追问:那dos汇编里的中断指令还有用吗回答:如果是在开机实模式下,汇编中断是硬件级执行的(绝对控制权)!在保护模式下dos的所有汇编中断调用都是无效的,只是被 *** 作系统虚拟执行的!!!追问:就是能执行?回答:

在8051单片机片内RAM中存入一个16位数据,汇编指令中没有专门的指令。可以通过以下方法来实现:(加入十六位数为DATA,存入30H31H中)

1、用压栈指令实现。

MOV SP,#30H

PUSH #LOW(DATA)

PUSH #HIGH(DATA)

或者这样也可以:

PUSH #LOW(DATA)

PUSH #HIGH(DATA)

POP 31H

POP 30H

2、用传送指令实现。

MOV A,#LOW(DATA)

MOV 30H,A

MOV A,#HIGH(DATA)

MOV 31H,A


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7891670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存