汇编语言指令详解(3)

2018-11-19 21:28

第二讲

3.2 指令系统--数据传输、算术运算

回顾:8086/8088的内部结构和寄存器,8086/8088的工作过程。

8086/8088的寻址方式及操作数地址的计算。

重点和纲要:要求学生了解指令的功能,掌握数据传送类,算术运算类指令的使用方法。(掌握指令内涵,会用)

回 顾 讲 授 提 问 小 结

教学方法、实施步骤 时间分配 5”×2 40” ×2 3” ×2 2” ×2 教学手段 板书 计算机 投影仪 多媒体课件等

讲授内容:

3.2 8086/8088 指令系统

8086/8088的指令系统可以分为以下六个功能组。 1.数据传送(Data Transter) 2.算术运算(Arithmetic) 3.逻辑运算(Logic) 4.串操作(String menipulation)

11

5.程序控制(Program Control) 6.处理器控制(Processor Control)

一、数据传送指令

主要介绍 MOV,XCHG、堆栈和地址传送指令。 1.数据传送MOV指令

一般格式:MOV OPRD1,OPRD2

MOV 是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。 功能:完成数据传送

具体来说,一条数据传送指令能实现:

⑴CPU内部寄存器之间数据的任意传送(除了代码段寄存器CS和指令指针IP以外)。

MOV AL,BL;字节传送 MOV CX,BX;字传送 MOV DS,BX

⑵立即数传送至CPU内部的通用寄存器组(即AX、 BX、CX、DX、BP、SP、SI、DI), MOV CL,4 MOV AX,03FFH MOV SI,057BH

⑶CPU内部寄存器(除了CS和IP以外)与存储器(所有寻址方式)之间的数据传送。

MOV AL,BUFFER MOV AX,[SI] MOV [DI],CX MOV SI,BLOCK[BP] MOV DS,DATA[SI+BX] MOV DEST[BP+DI],ES ⑷ 能实现用立即数给存储单元赋值

例如:MOV [2000H],25H

MOV [SI],35H

对于MOV 指令应注意几个问题:

①存储器传送指令中,不允许对CS和IP进行操作;

12

②两个操作数中,除立即寻址之外必须有一个为寄存器寻址方式,即两个存储器操作数之间不允许直接进行信息传送;

如我们需要把地址(即段内的地址偏移量)为AREAl的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中去,MOV指令不能直接完成这样的传送,但我们可以用CPU内部寄存器为桥梁来完成这样的传送: MOV AL,AREAl MOV AREA2,AL

③两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:MOV AX,0;MOV DS,AX ④目的操作数,不能用立即寻址方式。

2.堆栈指令

(简述堆栈的概念及存取特点,如先进后出)

包括入栈(PUSH)和出栈(POP)指令两类。仅能进行字运算。(操作数不能是立即数) ⑴ 入栈指令PUSH 一般格式:PUSH OPRD

源操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(所有寻址方式)。入栈操作对象必须是16位数。 功能:将数据压入堆栈

执行步骤为:SP=SP-2;[SP]=操作数低8位;[SP+1]= 操作数高8位

例如:PUSH BX

执行过程为:SP=SP-1,[SP]=BH;SP=SP-1,[SP]=BL,如图2-8所示。 ⑵ 出栈指令POP 一般格式:POP OPRD 功能:将数据弹出堆栈

对指令执行的要求同入栈指令。

例如:POP AX 图2-8

POP [BX]

13

POP DS

3.交换指令 XCHG

一般格式:XCHG OPRD1,OPRD2 功能:完成数据交换

这是—条交换指令,把一个字节或一个字的源操作数与目的操作数相交换。交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。 例如: XCHG AL,CL

XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATA[SI],DH

4.累加器专用传送指令

有三种,输入、输出和查表指令。前两种又称为输入输出指令。 ⑴ IN 指令

一般格式:IN AL,n ; B AL←[n]

IN AX,n ; W AX←[n+1][n] IN AL,DX ; B AL←[DX] IN AX,DX ; W AX←[DX+1][DX]

功能:从I/O端口输入数据至AL或AX。

输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。若端口地址超过255时,则必须用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口。 ⑵ OUT 指令

一般格式:OUT n,AL ; B AL→[n] OUT n,AX ; W AX→[n+1][n]

OUT DX,AL ; B AL→[DX] OUT DX,AX ; W AX→[DX+1][DX]

14

功能:将AL或AX的内容输出至I/O端口。

该指令将AL或AX中的内容传送到一个输出端口。端口寻址方式与IN指令相同。 ⑶ XLAT指令

一般格式:XLAT ; AL=(DX)×16+(BX)+(AL)) 功能:完成一个字节的查表转换。

要求:①寄存器AL的内容作为一个256字节的表的下标。②表的基地址在BX中,③转换后的结果存放在AL中. TABLE: 例如:MOV BX,OFFSET TABLE

MOV AL,8 ……

IN AL,1 第9个字符 AAH XLAT ;查表

OUT 1,AL ;(AL)= AAH 表长度256 本指令可用在数制转换、函数表查表、代码转换等场合。

5.地址传送指令(有三条地址传送指令) ⑴ LEA (Load Effective Address) 一般格式: LEA OPRD1,OPRD2

功能:把源操作数OPRD2的地址偏移量传送至目的操作数OPRD1。

要求:①源操作数必须是一个内存操作数,②目的操作数必须是一个16位的通

用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。 例:LEA BX,BUFR;把变量BUFR的地址偏移量部分送到BX

⑵ LDS (Load pointer into DS) 一般格式: LDS OPRD1,OPRD2

功能:完成一个地址指针的传送。地址指针包括段地址部分和偏移量部分。指令将段地址送入DS,偏移量部分送入一个16位的指针寄存器或变址寄存器。 要求:源操作数是一个内存操作数,目的操作数是一个通用寄存器/变址寄存器。

15


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

下一篇:《圆锥的认识》课堂教学设计

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

马上注册会员

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