![单片机原理及应用系统设计](https://wfqqreader-1252317822.image.myqcloud.com/cover/759/41309759/b_41309759.jpg)
3.4 汇编语言的伪指令
伪指令在形式上是一条指令,但它并不译成机器语言,只是为汇编时提供必需的控制信息命令。
1.程序地址定位伪指令ORG
基本格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/63_02.jpg?sign=1739299147-dOgJtyoahGhPgFiuMQyg6D9cirr6hJRr-0-d8005b74f18d77abbced1dd00c2add75)
功能:规定程序块或数据块存放的起始地址。在一个汇编语言程序中,可以多次定义ORG伪指令,但要求给定的地址由小到大安排,各段之间地址不能重叠。
2.汇编结束伪指令END
基本格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/63_03.jpg?sign=1739299147-w5E7DMDnKmVX3nAlS4L4GLJ1huO7Jp8E-0-fc4447b362b49b07430037d165e28871)
功能:结束汇编。汇编程序遇到END伪指令后即结束汇编。END之后的程序不予以处理。
例如:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/63_04.jpg?sign=1739299147-dmkNNWWStU9zg23Cf3XaAf5zMVSUtKU6-0-2c1643290514ac0eaea3cb7744687d1a)
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_01.jpg?sign=1739299147-vRMmKbYT0uEjp3VWZ0fUmSVdUcm3UxNm-0-328cad6acab30c2c76747f3a832b6e8c)
3.赋值伪指令EQU
基本格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_02.jpg?sign=1739299147-OlyhUOYva7uhOTxik7yJ4Bkr1x3gv5RL-0-f0b4197248381ba56388437901b721b5)
功能:EQU伪指令是把“项”赋给“字符名称”,这里的“字符名称”不同于标号(其后没有冒号),但它是必需的。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。
4.定义字节伪指令DB
基本格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_03.jpg?sign=1739299147-2kKMBP1UtwyHsbLNvlMPvvH2bznnlDWg-0-c4efd5ec34131965870752ab86a22535)
功能:从指定的地址单元开始,定义若干个8位内存单元的内容。该命令主要是在程序存储器的某一部分存入一组8位二进制数,或者是将一个数据表格存入程序存储器。这个伪指令在汇编以后,将影响程序存储器的内容。
例如:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_04.jpg?sign=1739299147-LtBfVVUjBwBCAeZONmMFfTQIV29hNfkN-0-1e681ac4593a482c24d536bac0edfeee)
经汇编后,从地址1000H处存储器的内容依次为0AAH和0~F的ASCII码。
5.定义字伪指令DW
指令格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_05.jpg?sign=1739299147-v4WcsXfDHJvRHoWopB4xJLxikhrYh5K6-0-a076cc18950dc2ade68fd85c625ecb02)
功能:从指定的地址单元开始,定义若干个16位二进制数据,每个字占用两个单元,先存高8位,再存低8位。用法同DB伪指令。
6.定义空间伪指令DS
指令格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_06.jpg?sign=1739299147-gpq6WwfMwmH0tRWGkhnssuHDN5uhuGT3-0-6831d85912585a501ac192436340d6c0)
功能:从标号指定的单元开始保留表达式所代表的存储单元数。
例如:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/64_07.jpg?sign=1739299147-7DzBYsOIKMZ511s2Lhuj7u2EHt5ALNAb-0-ceacde87e776f14afe4e5023d80718e0)
7.位地址赋值指令BIT
基本格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/65_01.jpg?sign=1739299147-X6v5VoLIX95Y3XSogr1jK5pachd8TcKl-0-19aa5bb2ca146b4da5628e1f4b43d0c9)
功能:将位地址赋给本语句的标号。经赋值的标号可以代替指令中的位,即在程序中,标号和该位地址是等价的。
例如:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/65_02.jpg?sign=1739299147-Dd9U6RGx6f9DL1HtzXry8WduykixfbMC-0-9d035058d55315ed607112a107ab64bf)
经过上述定义后,在程序中,可以把LED1和LED2当作位地址31H和32H。
8.数据地址赋值伪指令DATA
基本格式:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/65_03.jpg?sign=1739299147-Ma9p3tZGZy1g65uzAMJE7AKLTd8Rwrv2-0-9c8eab8f293fe68894763f3371b1ba4e)
功能:把“表达式”的值赋给字符名称。DATA伪指令与EQU伪指令的主要区别是:EQU定义的“字符名称”必须先定义后使用,而DATA定义的“字符名称”没有这种限制,故DATA伪指令通常用在源程序的开头。
例如:
![](https://epubservercos.yuewen.com/0DCF85/21511155608174006/epubprivate/OEBPS/Images/65_04.jpg?sign=1739299147-Jeun15DcnWYVSdpHopEU1rryHIRBPZFi-0-170e9411d965461697c5a62825b05207)