文档介绍:第五章汇编语言程序设计
一、汇编语言程序格式
二、汇编语言程序设计基础
三、直线程序
四、分支程序
五、循环程序
六、码转换程序设计
七、有关序列的操作
八、DOS 功能调用
九、子程序设计
一、汇编语言程序格式
my_data segment again: Mov al,[si]
array1 db 05,a2H,00,10H,85H Inc si
n equ 5 Cmp al, 50
array2 db n dup(?) Jbe next
my_data ends Mov [di], al
my_code segment Inc di
assume cs:my_code next: dec cx
assume ds:my_data jnz again
begin: mov ax, my_data mov ah,4ch
mov ds, ax int 21h
Lea si, array1 my_code ends
Lea di, array2 end begin
Mov cx, n
05
A2
00
10
85
array1
array2
DS
CS
汇编语言基本构成:
1. 基本格式
2. 语句行构成
标识符操作码操作数1 [,操作数2] ;注释
(1) 8088汇编语句中的标记
(3) 表达式
3. 伪指令
4. 指令
符号定义语句
数据定义语句
段定义语句
过程定义语句
程序开始结束语句
(2) 符号
8088汇编语言的源程序是由多个段组成的, 一个可执行的汇编程序一般至少有一个代码段,其中包含可执行的语句。其基本格式如图:
1. 基本格式
S_NAME1 SEGMENT
语句
…
  语句
S_NAME1 ENDS
S_NAME2 SEGMENT
语句
…
  语句
S_NAME2 ENDS
S_NAME3 SEGMENT
语句
…
语句
S_NAME3 ENDS
END
2. 语句行构成
每个段是由语句行构成的。一个语句行的基本格式为:
标识符操作码操作数1 [,操作数2] ;注释
(1) 8088汇编语句中的标记
1. 标识符
标识符由一串字符构成,用于一段程序、一组(或一个)数据或一个段的开头。使用时要注意以下3点:
•标识符可由数字、字母和下划线组成;
•不能以数字开头,数据可用在非开头的其它位置;
•其最大长度为31个字符。
2. 保留字
保留字是汇编语言中预先保留的特殊字串,只能用于特殊用途,所有8086/8088的指令、伪指令和寄存器名都是保留字。如AX、MOV、DB、INT、EQU等等。
保留字不能用作标识符
3. 界符
界符是用于一个程序或一条指令中不同部分的分隔符,
如 MOV AX, 0010H 中的“,”就是界符。其内容见下表:
8086/8088汇编语言的界符
’; > < * , : [ ] + - = ( ) $ & ? . /
4. 常量
常量就是指令中的一些不变的数据。它可以用二进制、十六进制、十进制和八进制表示,也可以用引号引起来的字串。例如:
二进制:00011101B
十六进制:0C5AAH
十进制:9856D
八进制:237O
字串:’The 2X means 2 multiple X’
其中的B、H、D和O为数制的结尾符。
5. 注释
注释是用于使程序易于理解的句子,用来表示某行或某段语句的作用或与其它部分的关系,一般写在某语句的后面或某段的开始处,注释的前面由“;”前导,表示后面的内容为注释。如果一行写不下,换行后也要使用“;”前导。
(2) 符号
在8086/8088汇编语言的源程序中为了使程序有很好的可读性和易修改性,通常使用有一定意义的符号来代替某些单元、数据或表达式。符号可分为四类:寄存器、变量、标号、数。如SUM、DATA1。
1. 寄存器
8086/8088的寄存器是程序中最常出现的符号,它可分为字节寄存器和字寄存器,如AX为字寄存器,而AL则为字节寄存器。只有AX、BX、CX、DX可分为字和字节寄存器。
2. 变量
变量是存放在某些单元中的操作数,使用有一定意义的符号来代表这些单元。所有的变量都有一个固定的地址,它由段和偏移组成;同时还有一个类型,它可以是字节、字或双字。在程序中,变量可以使用数据定义伪指令进行初始化,见伪指令一节中的数据定义部分。
3. 标号
标号实际上是用符号表示的地址,因此它也是由段、偏移地址和类型组成,其类型分为段内(NEAR)和段间(FAR)两种,通过
SEG 标号
OFFSET 标号
可以分别得到标号的段地址和偏移地址。
如果是NEAR类型,在程序执行时,只取标号的偏移地址,例如