第3章80888086指令系统(老师用的课件哦)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章 8088/8086指令系统
当前被处理的源串元素由(DS)*16+(SI)所形成的 有效地址决定,在串操作指令中,当前被处理的目的串 元素由(ES)*16+(DI)所形成的有效地址决定。SI及DI 内容的自动增减由标志寄存器中的DF方向标志决定, 若DF=0,为自增;若DF=1,为自减。SI及DI增减量 每次可以是1,也可以是2,这由所处理的串是字节操作 还是字操作来决定。
第3章 8088/8086指令系统
注意,在汇编指令中,端口地址及间接寻址寄存器 DX,都不用方括号括起来,但此处不作为立即数或寄 存器寻址对待,应引起注意。
以上介绍的各种寻址方式,是学习汇编语言的第一 个难点。
我们要求读者准确理解并记住前面的三种寻址方式, 即立即数寻址、寄存器寻址和直接寻址,并注意到它 们处理的操作数是立即数操作数、寄存器操作数和存 储器操作数。下面我们再重点对其它几种有关存储器 操作数的寻址方式归纳一下。
第3章 8088/8086指令系统
图3.3 直接寻址示意图
第3章 8088/8086指令系统
例:MOV AX,DS:[22A0H] 即 将 DS 左 移 4 位 后 , 与 22A0H 相 加 得 到 物 理 地 址 322A0H,然后从322A0H所指的两个连续的存储单元 中读出数据AB12H,送至AX寄存器中。具体操作时, 先从这两个连续的存储单元中的低地址单元读出低8位 数据12H送至AL中;接着从其高地址单元中读出高8位 数据ABH送至AH中。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
同样,它由有效地址与段基址寄存器一起形成物 理地址。可作为变址寄存器使用的寄存器共有四个: SI,DI,BX,BP,使用SI,DI,BX寄存器作为变址 寄存器时,有效地址与DS段寄存器的内容一起形成物 理地址,但使用BP时例外,这时,有效地址与SS段寄 存器的内容一起形成物理地址。变址寻址示意图如图 3.5所示。
第3章 8088/8086指令系统
(2)立即数到通用寄存器数据传送指令 立即数只能作源操作数使用,不能作目的操作数。 例: MOV AL,25
MOV AX,2000 MOV BX,20A0H MOV CH,5 MOV SI,OFFSETDATA1 MOV SP,2F00H
第3章 8088/8086指令系统
第3章 8088/8086指令系统
图3.6 用BP寄存器变址寻址示意图
第3章 8088/8086指令系统
6.基址变址寻址
基址变址寻址实质上也是变址寻址,除了指定变址寄 存器外,还指定了一个基址寄存器。以这种方式寻址时, 把BX、BP称为基址寄存器,SI、DI称为变址寄存器。当 BX与SI、DI一起被指定时,有效地址EA=(BX)+(SI)+ Disp,其中Disp为16位的地址位移量,也可以是一个字节 (8位)的位移量,当位移量为8位时,在计算其有效地址中, 将8位按符号位扩充至16位。有效地址还可以写成EA= (BX)+(DI)+Disp。当BX为基址寄存器时,EA与DS一起 形成物理地址;当BP为基址寄存器时,EA与SS一起形成 物理地址。如果使用段超越方式,如上所示,DS或SS由 指定的段寄存器代替。寻址方式示意图如图3.7所示。
第3章 8088/8086指令系统
3.1.2 寻址方式 熟悉寻址方式是掌握指令系统的基础。只有熟悉
寻址方式,才能正确理解指令中的操作对象是哪一个, 它从何处得到,处理以后的结果又送到何处去,从而 在整体上理解指令的功能。
1.立即寻址 立即寻址的操作数类型是立即数。这种寻址方式所 提供的操作数直接包含在指令中。它紧跟在操作码的 后面。立即数可以是8位或16位数。若为16位数,则低 字节数放在低地址单元,高字节数放在后继的高地址 单元。寻址示意图如图3.1所示。
第3章 8088/8086指令系统
(3) 寄存器与存储器之间的数据传送指令 例:MOV AL,BUFFER MOV AX,[SI] MOV LAST[BX+DI],DL MOV SI,ES:[BP] MOV DS,DATA[BX+SI] MOV ALFA[BX+DI],ES
第3章 8088/8086指令系统
例:MOV AX,4290H;(AX)←4290H 即将指令代码中提供的立即数4290H送至寄存器 AX中去。(AX)表示寄存器AX的内容。
图3.1 立即寻址示意图
第3操作数类型是寄存器操作数,即指 令中所需的操作数放在某一个指定的寄存器中,立即 数只能作为源操作数出现在指令中间。寄存器寻址时, 寄存器中存放的数可以是源操作数,也可以是目标操 作数。寄存器寻址的示意图如图3.2所示。 例:MOV DX,AX;(DX)←(AX) 即将寄存器AX中的内容(源操作数)送至寄存器DX 中,DX为目标操作数。以上两种寻址方式是最容易被 理解和掌握的。
第3章 8088/8086指令系统
第3章80888086指令系统(老师用的课件哦)
第3章 8088/8086指令系统
第3章 8088/8086指令系统
第3章 8088/8086指令系统
2.寄存器操作数 寄存器操作数就是把操作数放在寄存器中,即用寄 存器存放源操作数或目的操作数。通常在汇编指令中, 给出寄存器的名称。在某些指令中,虽然没有明确给 出寄存器名字,但它隐含着某个通用寄存器操作数。
第3章 8088/8086指令系统
图3.4 寄存器间接寻址示意图
第3章 8088/8086指令系统
例:MOV DX,[SI];(DX)←[(DS)*16+(SI)] 这里用[(DS)*16+(SI)]表示的存储器操作数也 可以用以下等价形式表示:[DS:SI],即以段寄存器 DS的内容作为段基址,以SI寄存器的内容作为段内偏 移量形成物理地址。
当为字类型时,也可用[DS:SI+1,DS:SI]表示。 有时,干脆省去段寄存器DS,此处可用(DX)←[(SI)] 或(DX)←[SI]表示。
第3章 8088/8086指令系统
5. 变址寻址 变址寻址的操作数类型也是存储器操作数。变址 寻址也是一种间接寻址,它与寄存器间接寻址的不同 在于:寄存器间接寻址时,有效地址就是间接寻址寄 存器中的内容。而变址寻址则首先指定一个变址寄存 器,其中存放着形成有效地址的初始偏移地址值,然 后,再由指令指定一个相对于初始偏移地址的位移量 (即增量)。这个位移量与变址寄存器内容之和为有效 地址。
第3章 8088/8086指令系统
图3.7 基址变址寻址示意图
第3章 8088/8086指令系统
7.串操作数寻址
8088/8086中有一类串操作指令,用于处理字节串 或字串的传送、比较,以及在串内搜索等操作。由于 串是连续存放在存储单元中的,因而对串元素的处理, 采用变址寻址较方便。若指定SI作为源串的变址寄存 器,段基址由DS决定,当指定DI作为目的串的变址寄 存器时,则段基址由ES决定。这些指令执行后,可以 自动改变(自增或自减)SI及DI的值,以指向后续的串元 素。这种寻址方式用于串操作指令中,称为串操作数 寻址方式。
第3章 8088/8086指令系统
例如MOV SB指令,它在DF=0的条件下,对字节 串 作 传 送 操 作 , 即 [ (ES)*16 + (DI) ] ← [ (DS)*16 + (SI)],并自动完成(SI)←(SI)+1的操作,其寻址示意 图如图3.8所示。MOV SB指令的操作过程也可以表示 为:[ES:DI]←[DS:SI],(DI)←(DI)+1,(SI)←(SI +1)。
功能:本指令将一个源操作数(字或字节)送到目的 操作数中,即OPRD1←OPRD2。
说明:本指令不影响状态标志位。 MOV 指令可以分为以下四种情况: (1)寄存器与寄存器之间的数据传送指令 例:MOV AX,BX
MOV CL,AL
第3章 8088/8086指令系统
MOV BX,CX MOV DX,ES MOV DS,AX MOV BP,SI 注意:代码段寄存器CS及指令指针IP不参加数的传 送,其中CS可以作为源操作数参加传送,但不能作为 目的操作数参加传送。
第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
图3.8 串操作数寻址示意图
第3章 8088/8086指令系统
8.端口寻址 所谓端口地址即外设接口控制器中的各寄存器的 编号(地址),它们可以与存储单元统一编址。为了对这 类寄存器进行读写,可采用对存储器单元读写的方法, 由段基址寄存器与有效地址形成20位的物理地址。但 更常用的方法是用只对端口地址进行寻址的输入输出
注意:由于传送的数据可能是字节,也可能是字, 源操作数与目的操作数的类型应一致,8位寄存器不能 和16位寄存器之间传送数据。例如,25送AL是允许的, 2000送AL是不允许的。在立即数参加传送的情况下, 数据类型由寄存器确定。当立即数送至存储器时,不 仅其类型应该一致,而且还应当用汇编语言的指示性 语句或汇编运算符加以说明。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。
第3章 8088/8086指令系统
图3.2 寄存器寻址示意图
第3章 8088/8086指令系统
3.直接寻址 直接寻址的操作数类型是存储器操作数。因而在 指令执行过程中,将对某一存储单元进行读写操作, 该存储单元的地址直接从指令代码中得到。由于段基 址已被预先指定,所以在指令操作码后面出现的地址 是16位的段内地址偏移量。该地址偏移量的低位字节 放在低地址单元,高位字节放在后继的高地址单元。 其寻址示意图如图3.3所示。
指令。在执行这类指令时,使8088引脚的IO/ M 脚为
高,地址只对I/O端口进行访问。由于这种寻址方式与 输入输出指令有关,所以称为端口寻址方式。
第3章 8088/8086指令系统
例:OUT20H,AL;(20H)←(AL)
该指令将AL中的内容送至端口地址为20H的端口 寄存器中。若指令为OUT20H,AX,则执行将AL的内 容送20H端口、AH内容送21H端口的操作。这两种端 口寻址方式为直接寻址方式。对应的端口地址为8位代 码,可寻址的端口为256个。若端口很多,也可以将端 口地址扩展为16位代码,此时要求预先把端口地址送 入DX寄存器中,然后再用指令OUTDX,AL,即将AL 中的内容送至以DX作为间接寻址寄存器的端口地址中, 可表示为((DX))←(AL)。
相关文档
最新文档