汇编语言org指令怎么用??

汇编语言org指令怎么用??,第1张

ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。

ORG的使用:

ORG2000H

START:MOVAX,#00H

扩展资料

51单片机最常用的伪指令如下:

(1)起始(Origin)伪指令

标号:ORGnn

功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址连续存放在程序存储器中。

例如:

ORG2000H

MOVA,20H

ORG伪指令规定了程序的起始地址从2000H开始,即该程序的第一条指令“MOVA,20H”从地址2000H开始存放。)

(2)字节定义(DefineByte)伪指令

标号:DB(字节常数或字符或表达式)

功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(8位二进制数)。

例如:

OGR100H

TAB1:DB0FFH,'C',16,−1

从TAB1开始的地址单元依次存放0FFH、43H、10H、0FFH

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字节,就会出问题了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/802391.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存