51单片机汇编中能否象C51那样包含头文件和源文件?

51单片机汇编中能否象C51那样包含头文件和源文件?? 如果是大型汇编程序 我想分 例如:TEST1.ASM TEST2.ASM TEST3.ASM ... 是不是需要定义什么的?要怎么定义?希望详细点 谢谢各位!!!!

汇编程序不能包含头文件,所有程序应该都在一个程序里面。
汇编只能引用函数
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-31
在Keil中可以包含*.*文件,使用时在程序开头部分使用 #include ”***.*** “,被包含的文件不能有END 。被包含的不限后缀,应该是汇编代码就可以包含,一般是*.inc或*.asm追问

还是看不明白,能不能再说明白一点。 我是笨鸟

追答

你可以上机实验啊!我给你个上机实验的程序吧!!这个程序基本没有什么意义,但是可以编译通过!!你如果有实验的程序,可以尝试将LCALL部分子程序单独分出来试试看!!
主程序“main.asm”:
#include "fun1.inc"
#include "fun2.asm"
ORG 0000H
LJMP start
ORG 000BH
LJMP toret
start:
MOV SP, #60H
MOV P2, #00H
MOV P1, #0FFH
SETB 20H ;动态变化设初值
toret:
LJMP fun1
END
子程序“fun1.inc”:
fun1:

MOV P2, #00H
MOV P1, #0FFH
SETB 20H ;动态变化设初值

LJMP fun2
子程序“fun2.asm”:
fun2:

MOV P2, #00H
MOV P1, #0FFH
SETB 20H ;动态变化设初值

追问

是不是这样?但汇编出错了!! 不知道怎么搞??

追答

你不用再将要包含的文件加入到项目组中了,只要文件夹设置好,自动分到main.asm级别下了!

追问

我实在不知道怎么搞? 你能不能写一个程序 发一下给我? [email protected] 非常感谢你!

追答

发过去了,你看看吧!!

追问

收到了 那个fun1.inc 是什么东西来的? 要来定义什么东西的? 我用仿真 一步一步好像调不到 fun1 或 fun2 不知道要怎样?

追答

我写的程序是没什么意义的,只是表示keil可以包含头文件!
你可以将toret:的内容和start:的内容调换,就能执行到fun1,和fun2了!
你在fun1:语句前加上ORG 010BH语句。
在fun2:语句上边一行加上ORG 020BH语句。修改后如下:
ORG 010BH
fun1:

ORG 020BH
fun2:
然后,将start:修改为:
start:
LJMP fun1
然后,将fun2修改为:
ORG 020BH
fun2:

MOV P2, #00H
MOV P1, #0FFH
SETB 20H ;动态变化设初值

LJMP start
你再运行试试看!

追问

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!! 还是搞不了!!!! 跳不了

追答

我再给你发一个改过的,你试试看!

来自:求助得到的回答本回答被提问者采纳
第1个回答  推荐于2016-10-31
好像不能,暂时还没看到这样做。在大型的汇编程序,尝试用宏定义一个程序块。总体汇编在编写大程序时,是够累人的。没有C语言方便,不能模块华编程。追问

但我只会 汇编程序啊!

第2个回答  2018-07-17
$INCLUDE (REG_MA805.H) 相当于c语言中的#include <meg_ma805.h>.
汇编中很对寄存器会重定义,你把头文件注释掉一些就行了。