MAX-IDE入门

[09-12 17:53:01]   来源:http://www.88dzw.com  单片机学习   阅读:8337

文章摘要: ONE equ 01 TWO equ 02 move Acc, #ONE move Acc, #(ONE+TWO) 等同也可以被后面的等同说明引用。 ONE equ 01 TWO equ ONE+ONE 定义 定义伪指令支持C风格的直接文本替换,不需要额外的处理,常用于包含文件中定义外设寄存器。替换文本被限制为单行;不支持接续符。不支持C风格的宏。

MAX-IDE入门,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

ONE equ 01
TWO equ 02

move Acc, #ONE
move Acc, #(ONE+TWO)

等同也可以被后面的等同说明引用。

ONE equ 01
TWO equ ONE+ONE

定义

定义伪指令支持C风格的直接文本替换,不需要额外的处理,常用于包含文件中定义外设寄存器。替换文本被限制为单行;不支持接续符。不支持C风格的宏。

#define PO[0] M0[0]

move Acc, PO[0] ; Parses as 'move Acc, M0[0]'

数据声明

DB和DW伪指令用于在十六进制文件的当前位置插入原始数据字节(包括来自于字符串值的数据字节)或字。

db 055h, 0AAh, 055h, 0AAh ; byte values
dw 0AAAAh, 05555h ; word values
db "MAX-IDE Environment " ; byte value for each char (padded to even count)

注意,这些数据将被插入到代码空间中。因此,如果DB声明出现在两组指令之间,那么定义的字节数必须是偶数,以免发生字对齐汇编错误。
条件汇编
只有符合某些布尔条件时,才对某块代码进行汇编。具有以下格式。


IF (<boolean statement>)
statements
...
ENDIF

布尔表达式可以由常数、等同或者以下布尔运算符组成:=, !=, <, <=, >, 和 >=。在条件汇编代码块中只能有代码和包含语句,而不能有宏或者等同说明。

DEBUG equ 0
DOINC equ 1

IF (DEBUG != 0)
call RoutineDbg
ENDIF

IF (DEBUG = 0)
call Routine
ENDIF

IF (DOINC = 1)
$include(defines.inc)
ENDIF



一段代码所执行的功能可以用宏来表示,每当该功能被调用时,它被当地展开并汇编。它们具有以下格式。

<identifier> MACRO [[PARAM <parm1>] [whitespace AND/OR comma] [<parm2>] ...]
[LOCAL <local1> [whitespace AND/OR comma] [<local2>] ...]
<macro assembly statements, local labels>
...
ENDM

最简单的一类宏仅是在其被引用时,将其代码插入。所插入代码中的等同、定义和嵌套的宏调用等均按常规方式处理。

ThreeNops MACRO
nop
nop
nop
ENDM

ThreeNops --> nop
nop
nop

宏可以具有一个或多个参数,在引用宏时传递数值给它们。这些数值被传递给展开后的代码。下面的宏采用一个参数为任一可写寄存器(Acc除外)提供'INC'功能,只需占用一级堆栈空间。

Inc MACRO PARAM Register
push Acc
move Acc, Register
add #1
move Register, Acc
pop Acc
ENDM

Inc LC[0] --> push Acc
move Acc, LC[0]
add #1
move LC[0], Acc
pop Acc


宏也可以含有局部标识符,代码展开后对其重新命名,这样每次引用宏时它们各不相同。

LoopN MACRO PARAM Count
LOCAL L1
move LC[0], Count
L1:
djnz LC[0], L1
ENDM

在引用这个宏时,插入其代码时标号'L1'将被更改为一个不同的临时标号。


上一页  [1] [2] [3] [4] [5] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《MAX-IDE入门》相关文章

分类导航
最新更新
热门排行