微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机汇编伪指令

51单片机汇编伪指令

时间:11-22 来源:互联网 点击:

$NOCODE 源程序汇编时,条件汇编程序值 没有此指令汇编时,不论其值是为假的不产生清单。真、假的条件都不产生目标码。 格式: $NOCODE

如果在汇编中没有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 DPTR , #TABLE
MOV A , #4
MOVC A , @A+DPTR
CLR P0.0
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 DPTR , #TABLE
MOV A , #4
MOVC A , @A+DPTR
CLR P0.0
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.INC

LOOKUPTABLE SETMENT CODE
RSEG LOOKUPTABLE

TABLE: DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H

ASM_TEST.ASM

NAME ASMTEST
$include(LOOKUPTABLE.INC)

?PR?TSEG?ASM_TEST SEGMENT CODE
PUBLIC ASM_LOOKUP_ROUTINE

RSEG ?PR?TSEG?ASM_TEST
using 0

ASM_LOOKUP_ROUTINE:

MOV DPTR, #TABLE ; DPTR指向查表的起始位置
MOV A, #4 ; A是从查表的起始位置的偏移量
MOVC A, @A + DPTR ; 把第A+1项送到累加器中

RET
END

TEST.C

extern void ASM_LOOKUP_ROUTINE(void);
void main(void)
{
ASM_LOOKUP_ROUTINE(); // 调用查表子程序

while(1);
}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top