51单片机汇编伪指令
如果在汇编中没有REG52。INC的包含文件,以下的程序出错:
NAME ASMTEST
$include(LOOKUPTABLE.INC)
;$include(REG52.INC)
?PR?TSEG?ASM_TEST SEGMENT CODE
PUBLIC ASM_LOOKUP_ROUTINE
RSEG ?PR?TSEG?ASM_TEST
using 0
ASM_LOOKUP_ROUTINE:
MOV
MOV
MOVC A , @A+DPTR
CLR
RET
END
错误提示是:ASM_TEST.ASM(15): error A45: UNDEFINED SYMBOL
在汇编程序中包含文件的定义
NAME ASMTEST
$include(LOOKUPTABLE.INC)
$include(REG52.INC)
?PR?TSEG?ASM_TEST SEGMENT CODE
PUBLIC ASM_LOOKUP_ROUTINE
RSEG ?PR?TSEG?ASM_TEST
using 0
ASM_LOOKUP_ROUTINE:
MOV
MOV
MOVC A , @A+DPTR
CLR
RET
END
如果两个include没有空行,会出现以下的错误提示:
assembling ASM_TEST.ASM...
ASM_TEST.ASM(3): error A34: , EXPECTED
ASM_TEST.ASM(3): error A34: , EXPECTED
ASM_TEST.ASM(3): error A34: , EXPECTED
ASM_TEST.ASM(3): error A9: SYNTAX ERROR
ASM_TEST.ASM(3): error A34: , EXPECTED
ASM_TEST.ASM(14): error A45: UNDEFINED SYMBOL
ASM_TEST.ASM - 6 Error(s), 0 Warning(s).
从C中访问位于汇编函数中的表格
TEST.C: 包含调用汇编函数的C程序。
ASM_TEST.ASM: 包含使用查表的汇编函数。
LOOKUPTABLE.INC: 包含查表。
每个文件的内容如下面所示。为了将查表定义在一个固定的地址0x1000,打开工程-选项(Project-Options),选择Target-BL51 Locate。在代码段(Code Segment)字段中输入段名(起始地址)。例如在本例中,你应该输入LOOKUPTABLE(0x1000)。对于你的程序,你可能需要从MAP文件(*.M51)中查找段名。
LOOKUPTABLE SETMENT CODE
RSEG LOOKUPTABLE
TABLE: DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H
NAME ASMTEST
$include(LOOKUPTABLE.INC)
?PR?TSEG?ASM_TEST SEGMENT CODE
PUBLIC ASM_LOOKUP_ROUTINE
RSEG ?PR?TSEG?ASM_TEST
using
ASM_LOOKUP_ROUTINE:
extern void ASM_LOOKUP_ROUTINE(void);
void main(void)
{
}
51单片机汇编伪指 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)