汇编语言程序设计基础
❖ 补充: 9) 数据地址赋值伪指令DATA ❖ 格 式: 字符名称 DATA 表达式
❖ 功能:将表达式指定的数据地址赋予规定的字符名称。
❖ DATA与EQU伪指令的功能类似,但也有区别: ❖ DATA定义的字符名称可以先使用后定义,EQU定义的字符
名称必须先定义后使用。 ❖ DATA伪指令可以放在源程序的开头或结尾,也可以放在
加“;”。
3.4.2.2 伪指令
汇编语言源程序是由汇编语句组成的,一般情况下,汇 编语言语句可分为指令性语句和指示性语句。
▪ 指令性语句(即汇编指令)
指令性语句是进行汇编语言程序设计的可执行语句,每条 指令都产生相应的机器语言的目标代码。源程序的主要功能 是由指令性语句去完成的。
▪ 指示性语句(即伪指令)
字符若用引号括起来则表示ASCII码。 例如: ORG 2000H
TAB1: DB 30H,8AH,7FH,73 DB '5','A', ‘YES'
4) 定义字伪指令DW
格式: [标号:] DW 16位数据表
功能: DW伪指令告诉汇编程序从指定的地址单元开始定义若干个16位数据。
对于MCS-51单片机系统,16位数据的高8位存入低地址单元,低8位存入 高地址单元。
例如:
ORG 1500H
TAB2: DW 1234H,80H, 'AB'
汇编以后,(1500H)=12H,(1501H)=34H, (1502H)=00H,(1503H)=80H, (1504H)=41H,(1505H)=42H
5) 赋值伪指令EQU 格式: 字符名称 EQU 赋值项 功能:将EQU右边的值赋予EQU左面用户定义的符号。
例如:COUNT DL 1000H COUNT DL COUNT+1
DL伪指令常用来定义数据地址。
补充: 8) 定义存储空间伪指令DS 格式: [标号:] DS 表达式 功能:从指定地址开始,保留若干个字节的内存空间,供程序运行使用。
保留的字节单元数由表达式的值决定。 例如: ORG 2000H
DS 05H DB 10H,20H 汇编后从2000H开始,预留5个字节的内存单元,然后从2005H开始,按照下一条 DB指令赋值,即(2005H)=10H,(2006H)=20H。 对MCS-51来说,DB、DW、DS只能对程序存储器使用。
❖ 【例1】 :设有16位二进制数存放在 R0,R1中(R0存放高位, R1存放低位),试编写实现16位二进制数的:“取反加1”
操作的程序。
❖ 程序如下:
❖
ORG 1000H
❖
MOV A,R1
❖
CPL A
❖
ADD A,#01H
❖
MOV R1,A
❖
MOV A,R0
❖
C指令
伪指令是控制汇编过程的一些命令,是程序员通知汇编程序在进行汇编 时的一些指示。没有对应的机器码,不产生目标代码程序,不影响程序的执 行。
1).伪指令主要用来指定程序或数据的起始位置,给出一些连续存放数据的 地址或为中间运算结果保留一部分存储空间以及表示源程序结束等等。 2).伪指令还可用来对符号﹑标号赋值。
例如: ORG 1000H START:MOV A, #34H …
2) 结束汇编伪指令END 格式: [标号:] END 功能: END是汇编语言源程序的结束标志,用于终止源程序的汇编工作。
在END以后所写的指令,汇编程序都不予处理。 一个源程序只能有一个END命令。
3) 定义字节伪指令DB 格式: [标号:] DB 字节常数或字符 功能:从指定地址单元开始存放若干个字节的数据或字符。
❖
MOV R0,A
3.4.3.2 分支程序设计
▪ 分支结构程序可根据程序要求无条件或有条件地改变程序执行的顺序,选择新 的程序流向。
▪ 编写分支结构程序主要在于正确使用转移指令,即无条件转移和条件转移指令。
▪ 根据分支多少,将分支程序结构分为单分支(即两分支)结构和多分支结构。
经赋值后可用字符名称代替位地址。其中,位地址可以是绝对地址,也可以是符号 地址(即位符号名称)。 例如:PLG BIT F0
AI BIT P1.0 经以上伪指令定义后,在程序中就可以把FLG和AI作为位地址来使用。
补充: 7) 定义标号值伪指令DL 格式: 字符名称 DL 表达式 功能:DL命令将数据地址或代码地址赋予规定的字符名称。
❖ 3.4.1 程序设计语言概述
❖ 3.4.1.1 汇编语言的优点
❖ 3.4.1.2 汇编语言程序设计的过程 ❖ 3.4.1.3 程序质量
3.4.2 汇编语言程序设计的特点及伪指令
3.4.2.1 汇编语言程序的特点
[标号:] 操作码 [操作数1,操作数2,操作数3] [;注释]
方括符[ ]表示可选项。 标号代表指令所在地址,1-8个字母/数字,字母开头,“:”结尾。 操作码就是指令功能助记符,指令实体。 操作数是指令操作的对象。分为目的操作数和源操作数。 注释是对该指令的解释和说明,是指令的非执行部分,可省略,前面必须
程序的其他位置,EQU伪指令通常放在程序开头。
3.4.3 单片机汇编语言程序设计
3.4.3.1 顺序结构程序设计
▪ 顺序结构,是最简单、最基本的程序结构,其特点 是按指令的排列顺序一条条地执行,直到全部指令执 行完毕为止。 ▪ 往往用来解决一些简单的算术及逻辑运算问题,主 要用数据传送指令和数据运算指令实现。
赋值项可以是常数、地址、标号或表达式。 例如:TEMP EQU R2
PA8155 EQU 8001H 汇编后TEMP 对应寄存器R2,PA8155值为8001H EQU定义的符号必须先定义后使用,且在同一个源程序中, 同一个标号只能赋值一次, 该语句通常放在程序开头。
6) 位地址定义伪指令BIT 格式: 字符名称 BIT 位地址 功能: 将位地址赋予字符名称。
不同版本汇编语言,伪指令可能有所不同,但基本用法是相似的。
1) 设置目标程序起始地址伪指令ORG 格式: [标号:] ORG 地址 功能:规定其后面的目标程序或数据块的起始地址。
伪指令ORG放在一段源程序(主程序、子程序)或数据块的前面,说明紧跟在其后 的程序段或数据块的起始地址就是ORG后面给出的地址。