Q:
很多程序都是这种结构,如,
ORG 0000H
AJMP MAIN
ORG 0030H
...
请问ORG何用,为什么要设置ORG 0030H?
A:
ORG是个用于定位的伪指令。简单的说就是把从这句话开始直到下一个ORG指令或者END指令前的程序语句都顺序放在它指定的地址里。比如说你的程序里ORG只管了一个语句(AJMP MAIN),则从0000h这个地址开始放语句。放多少,看下面有几条语句(直到org或end 指令为止)。
同样ORG 0030H是把它后面的所有到下一个ORG或END命令前的所有代码都顺序放到从0030H开始的程序单元。这应该是一个子程序。就像C语言里的子函数。
设置ORG 0030H的原因是因为在0030H 之前的一段地址空间还要有其它用途,见下面
——————————————————————————————
| 各中断源所对应的中断服务程序入口地址如下: |
| -----------------------------
| ORG 0003H ;外中断 0 中断程序入口地址 |
| ORG 000BH ;定时器 T0 中断程序入口地址 |
| ORG 0013H ;外中断 1 中断程序入口地址 |
| ORG 001BH ;定时器 T1 中断程序入口地址 |
| ORG 0023H ;串行中断程序入口地址 |
| ORG 002BH ;定时器 T2 中断程序入口地址(8052才有) |
——————————————————————————————
结论:现在我们知道了 0030H 之前的一段地址空间要作为各中断源所对应的中断服务程序入口地址用。如果你在程序设计时不用中断方式子程序时,那么主程序可以从0000H 开始。如果你以后改动程序要使用中断子程序了,就没有中断地址可用了。所以建议大家要养成良好习惯,使主程序从0030H或更后面的地址开始。
程序设计中,通常在0030H地址开始运行主程序,以避免占用中断服务程序的入口地址。ORG伪指令用于定位代码,0030H之后的空间用于存放子程序或主程序。这样做有利于保留0000H到002BH的中断入口地址,便于未来可能添加的中断服务程序。因此,良好的编程习惯是将主程序始于0030H或更后面的地址。
15万+

被折叠的 条评论
为什么被折叠?



