;二进制到BCD码转换
;将A拆分为三个BCD码,并存入Result开始的三个单元
Result equ 20h
org 0
ljmp start
BinToBCD:
mov b,#100
div ab
mov Result,a ;除以100,得百位数字
mov a,b
mov b,#10
div ab
mov Result+1,a ;余数除以10,得十位数
mov Result+2,b ;余数为个位数
ret
Start:
mov sp,#40h
mov a,#123
call BinToBCD
ljmp $
end
1,org 0
告诉编译器,ORG 000Bh这句话后面的所有语句(直到出现下一个ORG标识语句前的程序),是从程序存储器的000BH这个地址开始的。
也就是说,它指定了后面的程序放在内存的哪个地方。
下面知识点有详解。
2,ljmp start
跳转到start处,
3,start:
mov sp,#40h
把40h压入堆栈sp
4,mov a,#123
对a赋值123
5,call BinToBCD
调用回调函数
6,div ab
除法指令DIV AB 将A和B寄存器中的2个8位无符号整数相除,被除数在A中,除数在B中,运算结束后,
商存于A中,佘数存于B中。
若除数为0,溢出标志OV置1,否则置0。
除法指令执行后,进位标志CY同样被清零,奇偶标志P仍按一般规则处理 。
假定指令运前A中为63H,B中为3H,则指令执行后A中为21H,B中为0,OV中为0,CY为0,P为0
若指令运前A中为79H,B中为12H,则指令运行后A中为6,B中为7,OV为0,CY为0,P为0
7,余下的指令都比较简单,就是把结果存于Result ,Result+1,Resutl+2处。
<!--EndFragment-->
知识点:
1.伪指令:
用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。 将相对于程序或相对于寄存器的地址载入寄存器中。 与 ADR 指令相似。ADRL 所加载的地址比 ADR 所加载的地址更宽,因为它可生成两个数据处理指令。
2,org
org指定绝对地址的好处是,维护代码的时候不必再行计算相应代码被安排的地址。换句话说,如果你接手一份代码的时候,尚未完全了解硬件平台,未必清楚它的中断向量表大小,如果没有org指定主程序入口地址,你又如何能快速的判断呢
举例说,你的“一般的 org 2000H;ajmp main;org 2013H;ajmp Int_ADC......”
实际上是指 ajmp main这条指令被放在rom的0x2000,ajmp Int_ADC这条指令被放在0x2013,而并不是说“main函数从0x2000开始、Int_ADC函数从0x2013开始”,所以你不必担心。只需要确保一条ajmp指令的长度不要大于0x13就没有问题(当然不会大于,64位系统的jmp也只有5字节)
如果程序强行指定那两个函数的入口地址,是这样写的:
“
org 2000H
main:
xxx
xxx
...
org 2013H
Int_ADC:
xxx
xxx
”
如果是这样写的,那么就表示main被强制指定到0x2000,Int_ADC被强制指定到0x2013,那么如果main后面的代码多于0x13字节,就会出问题了。
3,
分享到:
相关推荐
LAB_4_KEYPAD.asm
《深入解析Spring ASM库:org.springframework.asm-3.0.5.RELEASE.jar》 Spring框架是Java开发领域中不可或缺的一部分,而org.springframework.asm-3.0.5.RELEASE.jar是Spring框架中的一个关键组件,主要涉及到字节...
asm字节码jar包,仅需要一个就可以。具体使用,可以参考http://blog.csdn.net/gaoshan12345678910/article/details/78131784
org.springframework.asm-sources-3.0.5.release.jar
E158255MatrixKey.asm.asm.asm
程序2.asm
严重: Exception sending context initialized event to listener instance ... nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type ssh 框架的java web项目部署到tomcat报上面错误 添加此包
IO.ASM就是用来编写这些低级别I/O操作的程序。 IO.ASM的编写通常包括以下部分: 1. **初始化**:在程序开始时,可能需要设置某些寄存器或者端口,以便后续的I/O操作。例如,设置中断向量或配置设备的工作模式。 2...
rg.springframework.asm-3.0.1.RELEASE-A.jar
jar包,官方版本,自测可用
汇编\示例\Sample.asm汇编\示例\Sample.asm汇编\示例\Sample.asm汇编\示例\Sample.asm
标题中的“lcd.asm.rar_lcd.asm”表明这是一个与液晶显示屏(LCD)编程相关的资源,其中包含一个名为“lcd.asm”的汇编语言源代码文件。汇编语言是计算机编程的基础语言之一,它将机器指令以人类可读的形式表示出来...
5.5.5菜单程序设计.asm
实验七程序讲解.asm
《深入理解DSP源码:以SINX.ASM为例》 在数字信号处理(DSP,Digital Signal Processing)领域,源代码是实现算法的核心。这里提到的"DSP_examples.rar"压缩包,内含"DSP_examples"文件夹,以及一个名为"SINX.ASM...
jar包,官方版本,自测可用
在提供的文件名"Mader.C.ASM"中,我们可以推测这可能是一个使用Mader.C.ASM编码器编写的汇编程序源文件。打开这个文件,我们可以看到一系列的汇编指令,以及可能的宏定义和数据结构,这些都是为了实现特定的功能。...
标题中的"written_mult.asm.rar_Mult.asm_space"表明这是一个关于汇编语言编程的资源,特别是与多重(Mult)操作和空间控制(space control)相关的。这个压缩包可能包含一个名为"Mult.asm"的源代码文件,该文件是用...
lxt.ASM.asm
9.ASM.asm