STM8汇编语言所用各种符号汇总

学习STM8汇编指令或汇编语言时会碰到很多符号,吃不准这些符号代表什么意思,很难透彻地理解STM8汇编指令或汇编语句的含义,下面做了个归纳汇总,方便大家对照查阅。

汇编语言符号集锦

Nr. 符号

英文

名称

功能

描述

举例

说明

1 , comma 分隔两个参数 LDF A,($555555,X)
2 ; semicolon 注释,编译时被忽略 ld ioport,x ; x存入ioport
3 .b byte 强制一个byte长度 count ds.b ; byte-size label
4 .w word 强制word两bytes长度

bytes ;  强制了字节大小

lab ds.w ; 字节大小的两字节lab

5 .l long 强制long四bytes长度

segment byte at 4000 'RAM'

lab DS.L ; 字节大小的四字节lab

6 .e extended 扩展24位间接寻址模式 ldf A,([$1000.e],X)
7 $ hexadecimal MOTOROLA十六进制 ld A,$ffff
8 &

ampersand

Motolola16进制,同$

$ABCD or &ABCD 
9 & ampersand 使预处理器识别参数

dc.w param

label¶m:nop

;如果param等于1,

;label¶m:nop, 就是label1:nop

10 # pound key 立即操作数

ld A,#1;十进制1赋给A

ld A,#$ff;十六进制ff赋给A

11 # pound key

立即位操作数

bset mem,#3

;将mem的第3位置位

btjt mem,#3, label

;如果mem的第3位为1则跳转

12 # pound key 条件汇编 #IF {count eq 1};如count等于1
13 # pound key 包含外部资源 #include "mapping.inc"
14 * asterisk 乘MULT a * b
15 * asterisk 程序计数器PC当前值  lab01 jra *
16 * asterisk 字符* ld  A , #’*
17 { } Arithmetic brackets

算术大括弧

DS.W {SIZE+1}

DC.L {10 mult val} ;算术表达式要括起来

18 { } Arithmetic brackets

括起来区分字节位置

lab1 equ $112233

ld A,#{low{seg lab1}}

;lab1/65536 = $11 => A

ld A,#{high lab1};  $22 => A

ld A,#{low lab1};  $3 => A

19 [ ] brackets

被括内容是指针

LD [$1004],A

;把A赋给$1004所存内容所指向的地址,如果$1004存的是0x00,A的值存入0x00的位置

CLR ([$1234.w],X)

;M( M($1234).w + X ) ←0x00,

$1234.w包含的内容加上X所指向的地址内容清零

20 ( ) parenthesis

变址访问模式

ADDW X,($12,SP)

; X ← X + M(SP+$12) 把SP+$12中一个字的内容累加到X中

21 " " double quotes

ASCII字符串常量

STRING “HELLO”

DC.B “HELLO”

22 ' ' single quotes

ASCII字符常量

 

ld A,#’*’

‘AB’  $4142

‘\b’ $7F backspace
‘\f’  $0C formfeed
‘\n’ $0A linefeed
‘\r’  $0D carriage return
‘\t’  $09 tabulation
‘\\’  $5C slash
‘\’   $27 single-quote
‘\0’ $00 null
‘\”’  $22 double-quote

23 ' ' single quotes segment Class类型   segment 'ram1' ;定义ram1类型
var ds.w 1 ;定义ram1类型的变量
24 : colon

segment combine

类型之一:at:X[-Y]

segment byte at:8000-BFFF 'eprom' 
25 : colon

代码段标签起始

label1:nop
26 % percent 二进制 %100 ;二进制100
27 % percent 输出字符串到控制台 %OUT hello!
28 ~ negated 取反 -a  ;negated a
29 / slash

指令集归属范围

st7/  或 st8/
30 / slash

DIV

DC.L {var/8}
31 \ backslash 转义字符 ‘\t’ $09 tabulation
32 + plus

a+b ;a plus b

#define SIZE 128
DS.W {SIZE+1} ; size加1
#IF {SIZE eq 1} ; 
#ENDIF

33 - minus

a-b  ; a minus b
34 - strike 范围中划线 segment byte at:8000-BFFF 'eprom' 

Nr. 符号 英文来源 功能描述 举例

1 , comma 隔开指令的两个参数 LDF A,($555555,X)

2 ; semicolon 注释,编译时被忽略 ld ioport,x ; store into ioport

3 .b byte 强制一个byte长度 count ds.b ; byte-size label

4 .w word 强制word两bytes长度

bytes ;  强制了字节大小

lab ds.w ; 字节大小的两字节lab

5 .l long 强制long四bytes长度

segment byte at 4000 'RAM'

lab DS.L ; 字节大小的四字节lab

6 .e extended 扩展24位间接寻址模式 ldf A,([$1000.e],X)

7 $ hexadecimal MOTOROLA十六进制 ld A,$ffff

8 # pound key 立即操作数

ld A,#1;十进制1赋给A

ld A,#$ff;十六进制ff赋给A

立即位操作数

bset memory,#3;将#3位置位

btjt memory,#3, label

;如果#3位为1则跳转

条件汇编 #IF {count eq 1};如count等于1 包含外部资源 #include "mapping.inc"

9 * asterisk 乘MULT a * b 程序计数器PC当前值  lab01 jra * 字符* ld  A , #’*

10 { } Arithmetic brackets 算术大括弧

DS.W {SIZE+1}

DC.L {10 mult val}

;算术表达式要括起来

括起来区分字节位置

lab1 equ $112233

ld A,#{low{seg lab1}}

;lab1/65536 = $11 => A

ld A,#{high lab1};  $22 => A

ld A,#{low lab1}; $3 => A

11 [ ] brackets 被括内容是指针

LD [$1004],A

;把A赋给$1004所存内容所指向的地址,如果$1004存的是0x00,A的值存入0x00的位置

CLR ([$1234.w],X)

;M( M($1234).w + X ) ←
0x00,$1234.w包含的内容加上X所指向的地址内容清零

12 ( ) parenthesis 变址访问模式

ADDW X,($12,SP)

; X ← X + M(SP+$12) 把SP+$12中一个字的内容累加到X中

13 "  " double quotes ASCII字符串常量

STRING “HELLO”

DC.B “HELLO”

14 '   ' single quotes ASCII字符常量

ld A,#’*’

‘AB’  $4142

‘\b’ $7F backspace
‘\f’  $0C formfeed
‘\n’ $0A linefeed
‘\r’  $0D carriage return
‘\t’  $09 tabulation
‘\\’  $5C slash
‘\’   $27 single-quote
‘\0’ $00 null
‘\”’  $22 double-quote

segment Class类型 segment 'ram1' ;ram1类型
var3 ds.w 1    

15 :

colon

segment combine

类型之一:at:X[-Y]

segment byte at:8000-BFFF 'eprom' 

label1:nop

16 % percent 二进制 %100 输出字符串到控制台 %OUT hello!

17 ~ negated 取反 -a  negated a

18 / slash 指令集归属范围

st7/  或 st8/

DIV DC.L {var/8}

19 & ampersand

Motolola

十六进制,和$一样

$ABCD or &ABCD  ;HEX 使预处理器可识别参数

dc.w param

label¶m:nop

;如果param等于1,

;label¶m:nop

;就是label1:nop

20 \ backslash 转义字符 ‘\t’ $09 tabulation

21 + plus 加

a+b ;a plus b

#define SIZE 128
DS.W {SIZE+1} ; OK
#IF {SIZE eq 1} ; OK
#ENDIF

22 - minus 减

a-b  ; a minus b

23 - strike 范围中划线 segment byte at:8000-BFFF 'eprom' 

你可能感兴趣的:(单片机,硬件工程,开发语言)