各位网友好,我是使用《单片机原理及其接口技术》(胡汉才 编著)这本书。
这本书的课后习题答案里面
有的程序是以【ORG 0200H】开头
有的却是以【ORG 1100H】开头
在下相当迷糊,请告诉在下,ORG后面的值应该是怎么确定的呢?为什么有时候是 0200H 有时候又是1100H呢?
谢谢!
【汇编语言ORG】关于ORG后面的值应该怎么确定?谢谢!
答案:4 悬赏:30 手机版
解决时间 2021-02-12 06:48
- 提问者网友:世勋超人
- 2021-02-12 00:47
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-02-12 01:45
ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。
汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;在A51中指定。若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。
单片机复位后,程序计数器PC的内容是0000H,故系统必须从0000H单元开始取指令来执行程序,0000H是系统的起始地址.
MCS51单片机复位后,PC地址是0000H,外部中断0是0003H,定时器中断0是000BH,外部中断1是0013H,定时器中断1是001BH,串行口中断是0023H,由于它们之间空间太小,不能容纳太多的程序。
所以,ORG后面都要跟一个跳转指令,如绝对跳转指令LJMP XXXX,短跳转指令AJMP XXXX.
汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;在A51中指定。若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。
单片机复位后,程序计数器PC的内容是0000H,故系统必须从0000H单元开始取指令来执行程序,0000H是系统的起始地址.
MCS51单片机复位后,PC地址是0000H,外部中断0是0003H,定时器中断0是000BH,外部中断1是0013H,定时器中断1是001BH,串行口中断是0023H,由于它们之间空间太小,不能容纳太多的程序。
所以,ORG后面都要跟一个跳转指令,如绝对跳转指令LJMP XXXX,短跳转指令AJMP XXXX.
全部回答
- 1楼网友:蕴藏春秋
- 2021-02-12 04:42
看你的需求。如果你确定加载地址启示在 200,那么就用org这个伪代码告诉编译器计算偏移要从200开始
- 2楼网友:末日狂欢
- 2021-02-12 03:49
ORG ****H
是一条伪指令,其意思是程序从 ****H 的地址执行!
从哪个地方执行都可以.,只要程序码可以放的下.
- 3楼网友:拾荒鲤
- 2021-02-12 02:45
这个根据程序实现的功能自我设定即可,没有硬性规定。
但需注意一个特例,即org 100h,它将程序定位于起始地址100h处(段地址可以任意,只需将代码和数据放到一个段即可),代码偏移和数据偏移相对于100h。此时可以编译生成一个com类型的文件。至于这个文件类型的说明,你可以查查早期的dos编程。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯