汇编与宏汇编的区别

kly   2009-1-31 13:45 楼主
51单片机的宏汇编是什么东东?下面这种说法专指PC的汇编么:
听闻高手说宏汇编是可以汇编具有宏定义的汇编程序。
其中宏意思是源程序中的一段有独立功能的程序代码。
也就是说此中宏相当于高级语言中的子函数,能定义“子函数”并在程序中调用的汇编就叫宏汇编?

51的宏汇编是不是应该比原有汇编多出些指令?

回复评论 (9)

这个问题我明白了,就如我上面所说的。

谁告诉我单片机是怎么执行指令的?
比如我这样写:
ORG       1000H
DB   74,01,04,09,10H,19H
那么汇编后则(1000H)=74H
这里的74H是个数据而不是MOV A,指令,
当复位后单片机从0000H开始执行,它怎么知道此时0000H中装的是个数而不是指令呢?

点赞  2009-1-31 15:07
0000H中必然是个指令,不然无法运行。

1000H是个数,这不是谁告诉单片机的。而是某条指令需要用到数,而指令中已经包含了这个数的位置(1000H),那么单片机执行到这里,自然就知道到1000H去取数据。
点赞  2009-2-1 12:25
嗯,现在我也有点看明白了,每次用DB这个指令前,总是先ORG一个大点的地址, 保证PC不会靠自动增值指到这个地址里的这个数,而只能靠前面的指令指到这个数~~
不会有人ORG 0000H 然后DB几个数,是我看花眼了~~
点赞  2009-2-1 20:53
单片机(及其他CPU)只知道执行指令,包括:取指令,指令译码,执行指令.对cpu而言并没有数据,是指令中的格式包含了数据(这就是指令对数据存取方式).0000h是cpu复位后执行的第一条指令.如何把程序中的数据与指令区分开,是'反汇编'程序的任务.这个任务可不好完成哦.
点赞  2009-2-2 08:43
...
ORG是个伪指令吧.是指令后面数据的地址的起始地址,只是把后面数据起始地址为1000H,与PC指针无关,PC执行是按PC一条一条指令去做事,去跳.数据也可能是个指令,所有东西对单片机来说都是指令.
并不是这样的:总是先ORG一个大点的地址, 保证PC不会靠自动增值指到这个地址里的这个数,而只能靠前面的指令指到这个数~~
点赞  2009-2-5 23:23
引用: 引用 5 楼 delin11 的回复:
并不是这样的:总是先ORG一个大点的地址, 保证PC不会靠自动增值指到这个地址里的这个数,而只能靠前面的指令指到这个数~~

我是指:不能或不太应该在0000H或0003H或一条完整操作字节组后的下一个字节(PC执行完上一个指令后如不跳转会自动加1而指向这个)这类地址中放数据而不放指令操作码,因为因复位或中断后PC指针所指地址不可不是操作码,一条指令开始处也应是操作码。要解决这类问题最好的办法是一开始就DB在很远的地方。
PS:偶仍属入门不久级,高手斧正~~
点赞  2009-2-6 08:47
帮顶
点赞  2009-2-6 09:09
帮顶
点赞  2009-2-6 09:09
发了几百年了,连个顶贴的都没。。。
谁第一个顶此贴(http://topic.eeworld.net/u/20081226/14/9e40ea1b-e60b-4ad7-976e-6e9b5f1947b9.html)的得全分!
点赞  2009-2-9 12:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复