单片机与嵌入式
51单片机的寻址方式
51单片机的汇编指令系统
51汇编语言的伪指令
51汇编语言程序结构与程序示例
Keil C51程序设计
Keil C51的库函数
PIC单片机的基本结构
PIC单片机的汇编语言指令
PIC单片机的C语言编程
ATmega16单片机基本结构
ATmega16单片机的汇编语言
ATmega128单片机的结构
STM32单片机基础
使用STM32CubeMX开发STM32单片机
uC/OS-II嵌入式操作系统
uC/OS-II在STM32F10xx上的移植
FreeRTOS系统介绍
Linux系统介绍
Linux系统编程
嵌入式Linux编程
汇编语言中除常用指令外,还有一些用来对“汇编”过程进行控制、或者对符号、标号赋值的指令。在汇编过程中,这些指令不被翻译成机器码,因此称为“伪指令”。
汇编语言中常用的伪指令有8条。
伪指令名称(英文含义) |
伪指令格式 |
作用 |
ORG (Origin) |
ORG Addr16 |
汇编程序段起始 |
END |
END |
结束汇编 |
DB (Define Byte) |
DB 8位二进制数表 |
定义字节 |
DW (Define Word) |
DW 16位二进制数表 |
定义字 |
DS (Define Storage) |
DS 表达式 |
定义预留存储空间 |
EQU (Equate) |
字符名称 EQU 数据或汇编符 |
给左边的字符名称赋值 |
DATA (Define Lable Data) |
字符名称 DATA 表达式 |
数据地址赋值,定义标号数值 |
BIT |
字符名称 BIT 位地址 |
位地址赋值 |
1. 段起始:指出下一段程序的起始地址。
ORG Addr16
可以有多个ORG伪指令,以规定不同程序段的起始地址,但地址要从小到大,不能相同。
2. 结束汇编:放在程序结尾,表示汇编到此结束,后面的指令不进行汇编。
END
3. 赋值:将一个数据或特定的汇编符号赋予规定的字符名称。
字符名称 EQU 数据或汇编符号
汇编软件自动把EQU右边的“数据或汇编符号”赋值给左边的“字符名称:例:
AAR EQU R7
DDY EQU 200H
ORG 00H
MOV A,AAR
LCALL DDY
SJMP DDY
DDY: ......
END
4. 数据地址赋值:将数据、地址、表达式赋值给规定的字符名称。
字符名称 DATA 表达式
字符名称、DATA与表达式之间要用空隔符分开。例:
FST DATA 30H
SEC DATA FST*2+8
5. 定义字节:从指定的地址单元开始,定义若干个8位内存单元的数据,数据间”,”分隔。
DB 8位二进制数表
若数据表首有标号,数据依次放到以左边标号为首地址的存储单元中,这些数可以采用二进制、十进制、十六进制和ASCII码等多种形式表示,其中ASCII码用””或’’括住。例:
TAB: DB 34
DB 34H
DB 0101B
DB “a”
DB “2”
以上指令经汇编后,ROM地址TAB单元开始的相继地址单元中赋值(十六进制)为:
22H 34H 05H 61H 32H
6. 定义字:从指定的地址单元开始,定义若干16位数据。
DW 16位二进制数表
因为16位数据要占用两个字节,所以高8位先存入,占低位地址;低8位后存入,占高位地址。不足16位的用0填充。例:
ORG 100H
TAB : DW 12
DW 45H
DW 3343H
汇编后,从100H地址开始依次存放00H、0CH、00H、45H、33H、43H,共6个单元。
7. 定义预留存储空间:从指定地址开始预留一定数量的内存单元。
DS 表达式
预留单元数量由DS语句中“表达式”的值决定。例:
ORG 100H
DS 7
CLR A
汇编后,从100H单元开始,保留7个字节的内存单元,然后在107H单元放置指令”CLR A”的机器码0E4H,即(107H)=E4H。
8. 定义位地址:将位地址赋值给字符名称。
字符名称 BIT 位地址
例: FT1 BIT P0.0
FT2 BIT ACC.1
将P0.0和A.1的位地址分别赋予字符FT1和FT2,以后的程序中可作为位地址使用。