【微机及接口技术】- 第三章 8086 汇编语言程序设计(汇编语言基础)
文章目录
- 一、汇编源程序结构
- 二、8086汇编语言语句
- 1. 指令性语句
- 1)标号
- 2)指令助记符
- 3)操作数
- 4)注释
- 2. 指示性语句(伪指令)
- 三、标识符、常量与表达式
- 1.标识符
- 2. 常量
- 3. 表达式
8086 汇编语言源程序的格式
汇编语言格式
数据类型和常量
标识符等。
一、汇编源程序结构
START: MOV AX, @DATA ; @DATA得到 .DATA 的段基址MOV DS, AX ; 给数据段寄存器赋.DATA 段基址MOV DX, OFFMOVINT 21H ; 显示一个字符串MOV AX,4C00INT 21HEND START ; 汇编语言源程序结束
START 标号代表程序的起始
汇编语言程序的特点:
- 采用分段结构
8086 程序被分成若干段:代码段、数据段、堆栈段、附加段。 - 段内由若干汇编语言语句组成
每个语句占一行;
分号";" 后加注释。 - 使用起始标号
起始标号付给程序第一条指令,指明程序执行入口地址
出现在结束语句 END 之后; - 程序开始的语句
把数据段的段基址放到 DS 寄存器中MOV AX,@DATA MOV DS,AX
- 程序要正常退出到操作系统
8086 实地址模式
DOS 操作系统MOV AX, 4C00H INT 21H; 退出程序,返回 DOS
二、8086汇编语言语句
2类语句:
指令性语句,即符号指令
指示性语句,即伪指令
指令语句汇编时产生目标代码,对应一条机器指令,通知CPU进行某种操作,由硬件完成其功能。
伪指令为汇编程序提供编译信息,为链接程序提供链接信息,其功能由相应软件完成。
指令语句能生成机器代码
1. 指令性语句
中括号括起来的是任选项。
1)标号
标号作为转移指令的目标,标号和指令间用冒号分隔;
标号代表一条指令所在的存储单元的地址。
代码段中的标号有3种属性:
- 段属性。定义标号所在段的起始地址。
- 偏移地址属性。从段起始地址到定义标号的位置之间的字节数。或者说是地址差。
- 类型属性。NEAR(近转移)和 FAR(远转移)。
2)指令助记符
不可或缺,汇编指令的符号代码。
3)操作数
源操作数可以用所有的寻址方式,目的操作数能用立即寻址外的其他寻址。
目的操作数不能够使用其他寻址方式,只能立即寻址。
4)注释
注释以分号开头,必须写一行内,若换行第二行以分号开头。
START: MOV AX, @DATA ; @DATA 得到 .DATA的段基址。
标号 START:
指令助记符 MOV
目的操作数 AX
源操作数 @DATA
分好后是注释
2. 指示性语句(伪指令)
伪指令格式:
变量或名字与伪指令之间用 “空格” 作为分隔符。
名字:常量名、段名、过程名、符号名等。
变量:代表数据所在存储单元的地址。有三种属性
- 段属性,变量所在段的起始地址。
- 偏移地址属性,段起始地址到定义变量的位置间的字节数
- 类型属性,改变了所在的内存数据类型,如字节、字等。
三、标识符、常量与表达式
1.标识符
由程序员自定义,可作段名、过程名、变量名、标号、模块名等。
由字母、数字、特殊符号等组成,有如下限制:
第一个字符不能是 0-9 的数字;若用原点 “.” 必须是第一个字符;大小写字母可以混用不加区别;特殊符号包括 ?, @, _, $, 特殊符号不能单独成为标识符;只有前31个字符有效;不能用保留字做标识符。
2. 常量
- 数值常量
二进制 01001000B、八进制 235Q
十六进制 2FH、十进制 98D
十进制的 D 可有可无。
- 字符与字符串常量
字符常量用单引号括起来,如 ‘a’, ‘3’ ,翻译成相应的 ASCII 码;字符串常量用单引号括起来多个字符,以ASCII码形式存放。
3)符号常量
可将一个标识符设定一个固定数值,则该标识符变成一个符号常量。
3. 表达式
是一个操作数和运算符组成的序列,表达式在汇编时由汇编程序自动计算。
354,40H OR 57H,800 XOR 691 都是合法表达式。