汇编语言课件(6)

2019-03-16 13:26

汇编语言程序设计

② LOOPZ/LOOPE 当相等或为零时循环指令 格式:LOOPZ/LOOPE OPR 循环条件:ZF=1且(CX)≠0 ③ LOOPNZ/LOOPNE 当不相等或不为零时循环指令 格式:LOOPNZ/LOOPNE OPR 循环条件:ZF=0且(CX)≠0

以上三条指令执行的步骤: 1. (CX)=(CX)-1

2. 判断测试条件,满足条件则进行循环,否则退出循环。

例如:设在数据段中有如下数组:ARRAY DW 1,2,3,4,5 求该数组各元素的和,并将结果保存到AX寄存器中。

MOV CX,5 MOV AX,0 MOV SI,0

BEGIN: ADD AX,ARRAY[SI] ADD SI,2 LOOP BEGIN 4) 子程序调用和返回指令 ① CALL 子程序调用指令 格式:CALL DST 操作:

1. 根据情况将IP(和CS)入栈 2. 根据情况设置IP(和CS) 功能:在主程序中用于调用子程序 ② RET 返回指令 格式:RET

操作:根据调用情况将IP(和CS)出栈 功能:在子程序中用于返回主程序

5)中断指令 ① INT 中断指令 格式:INT TYPE

功能:调用TYPE号中断 ② INTO 若溢出则中断指令 格式:INTO

- 25 -

汇编语言程序设计

功能:调用4号中断 ③ IRET 从中断返回指令 格式:IRET

功能:用于中断处理程序中,其功能是从中断处理程序返回到主程序中。

6、处理器控制指令(略)

四、汇编语言中的标记、表达式和伪操作 1、汇编语言概况(略)

2、汇编语言中的标记 ① 标识符 要求: ·标识符不能以数字开头 ·标识符可以由数字、字母和下划线组合而成 ·一个标识符的最大长度不能超过31个字符 ② 保留字

凡是微处理器的指令、伪指令、寄存器名都是保留字 ③ 分界符

分界符作为一个程序中或一条指令中两个部分的分隔符号。 参见P145表3.2 ④ 常数 ·二进制数:二进制数后面跟一个字母B,如:10110111B ·十进制数:十进制数后面跟一个字母D,字母D也可以不加。如:123D或123 ·十六进制数:十六进制数后面跟一个字母H,如果该数以A~F开头,则必须在前面加0 ·八进制数:八进制数后面跟一个字母Q ⑤ 注释

在汇编语言中,注释以;作为开头,;后面的均被看作是注释。

3、表达式

由操作数和运算符组成,在汇编时一个表达式得到一个值。 ① 操作数 ② 运算符 ·算术运算符 +,-,*,/

- 26 -

汇编语言程序设计

·逻辑运算符

AND,OR,NOT,XOR

注:只能对常数运算,结果也为常数 ·关系运算符

EQ(等于),NE(不等于),LT(小于),GT(大于),LE(小于等于),GE(大于等于)

如: MOV BX,PORT LT 5

如果PORT小于5 则汇编后相当于:MOV BX,0FFFFH 如果PORT大于5 则汇编后相当于:MOV BX,0 ·分析运算符

OFFSET 取有效地址,如 MOV DX,OFFSET DA1 SEG 取段地址,如 MOV DX,SEG DA1 TYPE,SIZE,LENGTH(略)

4、伪指令(指示性语句) 伪指令和指令之间的区别: 指令:在运行期间执行的

伪指令:在汇编期间由汇编程序处理。 ① 段定义伪指令 格式:

segment_name SEGMENT : :

segment_name ENDS

说明:

1. 对于数据段,堆栈段,附加段,都是用于存放数据 2. 对于代码段用于存放程序 ② 指定段伪指令 格式:

ASSUME 段寄存器名:段名,段寄存器名:段名,……

如:ASSUME CS:code_segment, DS:data_segment ③ 表示源程序结束的伪指令 格式:

END [label]

- 27 -

汇编语言程序设计

其中:label为指示程序开始执行的起始地址 ④ 数据定义及存储器分配伪指令 格式:

[变量名] 助记符 操作数 其中:

1. 助记符:说明所定义的数据类型,可为如下类型: DB:定义字节数据 DW: 定义字数据 DD:定义双字数据 DQ:定义4字数据 DT:定义10字节数据

2. 操作数:可为常数,表达式,字符串,地址等 功能:分配存储空间,存放数据 例1: 程序 存储器分配情况

0AH 10H 64H 00H DAT DB 10,10H

00H DW 100,100H 01H DAT2 DD 3*20 3CH 00H 00H 00H 00H

例2:操作数为字符串,此时DB,DW意义不同。 MESS1 DB ‘AB’

MESS2 DW ‘AB’ ;注意:如果DW型字符串,长度超过2个,则程序在汇编时出错。

存储器分配情况为: 41H A 42H B 42H B 41H A 例3:操作数为地址

DAT1 DB 12H,10H

- 28 -

汇编语言程序设计

DAT2 DW DAT1 DAT3 DW DAT2

存储器分配情况为:

例4:操作数为?,表示保留存储空间,暂时不存入数据(初始为0) NUM DB 0,?,0 DAT DW ?,52H

00H — 00H — — 52H 00H 例5:操作数可以用复制操作符

如:DAT1 DB 2 DUP(1,?)

01H — 01H — 注:DUP 也可以嵌套

如:DAT1 DB 2 DUP(0,2 DUP(1,?),1))

请同学们思考,上述语句如何分配存储空间。 ⑤ 表达式赋值伪指令 1、EQU

格式:表达式名 EQU 表达式 2、=

格式:表达式名 = 表达式

作用:给某一表达式赋予一个名字。 如:

constant EQU 256 或 constant = 256

- 29 -

汇编语言程序设计

区别:EQU不可以重复定义,而=可以重复定义。 如: EMP EQU 7 EMP = 7 : : : : EMP EMP = 12 EQU 12 √ ×

附:调用DOS功能调用实现输入输出的方法(INT 21H) 调用参数 返回参数 AH 功能 键盘输入并回AL=输入字符 01 显 DL=输出字符 02 显示输出 DS:DX=串地址 字符串必须以’$’ 09 显示字符串 结束

- 30 -


汇编语言课件(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈待定系数法在中学数学中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: