第三章8086指令系统0356页
微机原理第3章8086指令系统
微机原理第3章8086指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。
8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。
8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。
8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。
8086指令由操作码和操作数组成。
操作码指示了执行的具体操作,操作数则是操作码所针对的数据。
8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。
立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。
直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。
寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。
除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。
算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。
数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。
控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。
8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。
字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。
指令的操作数大小可以根据需要选择合适的寄存器或内存单元。
总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。
通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。
第3章_8086_指令系统和寻址方式
20
与地址有关的寻址方式(二)
(2) 段内间接寻址 用段内间接寻址方式时,有效地址总是在寄存器中或是内存单元中 的内容,段内间接寻址方式可适用于于无条件转移指令和调用指令。 不能用于条件转移指令。 存储器或存储单元的内容可以用数据寻址方式中除立即数以外的任 何一种寻址方式,所得到的转向的有效地址用来代替IP寄存器的内 容。 (DS)=2000H,(BX)=1256H,(SI)=528FH,位移量=20A1H (232f7)=3280H,(264E5H)=2450H JMP BX JMP TABLE[BX] JMP [BX][SI]
MOV AX,1090H
6ห้องสมุดไป่ตู้
与数据有关的寻址方式(二) (2) 寄存器寻址方式 定义:指令中操作数由寄存器提供的寻址方式。指令指 定寄存器号。
16位:AX, CX, DX, BX, SP, BP, SI, DI 8位: AH, AL, BH, BL, CH, CL, DH,DL
这种寻址方式操作数就在寄存器中,不需要访问存储器来取得操作 数,可以得到较高的运算速度 ;将AL中内容送入DL中 MOV DL,AL ;将CX中内容送入AX中 MOV AX,CX
8
与数据有关的寻址方式(三)
指令中的操作数部分直接给出操作数的有效地址EA, 操作数可以是16位或32位整数,操作数默认在DS段中 低地址 MOV AX, [3000H] 操作码
00H
DS + 5000 0 3000 53000 50000 53000 AX 12H 34H 34H 12H
CS段
30H
16
与数据有关的寻址方式(八) (6) 基址变址寻址方式 定义:由基址寄存器(BX,BP)的内容加上变 址寄存器(SI,DI)的内容得到操作数有效地 址EA的寻址方式。 [BX] [SI] 操作数的有效地址为:EA
第三章 8086指令系统及汇编语言
例:已知:(DS)=2100H,(DI)=2000H 指令:MOV AX,[DI];(AX) ((DI)) 物理地址=(DS)×16 +(DI)
=2100H ×16 + 2000H =21000H+2000H =23000H 指令结果:将23000H单元内容送AL中,
将23001H单元内容送AH中。 指令:MOV AX,[DI] 为字操作(16位操作)
32000
AH AL
注意:程序(指令) 在代码段,要操作 的数据在堆栈段!
图3-4(B) 寄存器间接寻址
5、 寄存器相对寻址方式
例:MOV AX,[SI];SI中的内容为要取数的偏移 地址,假设在执行本条指令前SI=1000H,DS=2000H
其过程如图3-4(a)所示。
代码段
..
注意:程序(指令在 代码段),要操作的 数据在数据段!
操作码 数据段
DS 2000 + SI 1000
21000
.. .. ..
21000H X X 21001H Y Y
例:已知:(DS)=2100H,(DI)=2000H 指令: MOV AL,[DI] ;(AL) ((DI))
物理地址=(DS)×16+(DI) =2100H×16+2000H =21000H+2000H =23000H
指令结果:将23000H单元内容送AL中, 指令: MOV AL,[DI];字节操作(8位操作)
数据段
字寻址方式
AH=F5 AL=8A 字寻址方式
图3-3 直接寻址
3、寄存器寻址方式 格式:操作码 寄存器,寄存器
MOV AX, BX
;AX←BX
操作数存放在CPU的内部寄存器reg中 1)8 位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 2)16 位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 3)4个段寄存器seg: CS、DS、SS、ES
汇编教程 第三章 8086的指令系统
xxH
55H
SS:[SP]
xxH
55H AAH
55AAH BX
SS:[SP]
AAH
指令执行前
指令执行后
16
使用堆栈指令注意: 使用堆栈指令注意:
AL”等 ①堆栈操作是字操作指令,不要写出“PUSH AL 等。 堆栈操作是字操作指令,不要写出“ 指令中, CS”为非法指令 为非法指令。 ②在“POP”指令中,“POP CS 为非法指令。 POP 指令中 PUSH AX 堆栈中的数据弹出后,数据并没有在堆栈中消失, ③堆栈中的数据弹出后,数据并没有在堆栈中消失, PUSH BX PUSH DS 除非压入新数据,画图时注意。 除非压入新数据,画图时注意。 .. 堆栈操作指令不影响标志。 ④堆栈操作指令不影响标志。 .. .. 使用堆栈指令保护和恢复现场时, ⑤使用堆栈指令保护和恢复现场时,要注意指令的 POP DS POP BX 排列顺序, 排列顺序,如: POP AX
3.3节 3.3节 目录
17
三、 标志传送指令 AH←标志寄存器低 标志寄存器低8 ① LAHF ;AH←标志寄存器低8位,即SF/ZF/AF PF/CF送AH相应位 不影响标志。 相应位, PF/CF送AH相应位,不影响标志。 标志寄存器低8 AH, ② SAHF ;标志寄存器低8位← AH,该条指令影 响前五个标志。 响前五个标志。 标志寄存器入栈,不影响标志。 ③ PUSHF ;标志寄存器入栈,不影响标志。 标志寄存器←SS:[SP],SP←SP+2; ④ POPF ;标志寄存器←SS:[SP],SP←SP+2; 该指令影响标志。 该指令影响标志。
8
CS可以作源操作数 可以作源操作数
格式4 格式4:MOV reg/mem,seg MOV AX,DS / MOV BX,ES / MOV AX,CS , MOV [SI],DS / MOV [BX+SI],CS MOV [BX],[2050H] …………………………………………………………… “MOV 类指令小结: MOV”类指令小结 MOV 类指令小结: 立即数只能作源操作数,且要与目的操作数匹配。 ①立即数只能作源操作数,且要与目的操作数匹配。 两个操作数类型要匹配。 ②两个操作数类型要匹配。 如汇编程序无法确定操作类型,要加类型说明符。 ③如汇编程序无法确定操作类型,要加类型说明符。 CS一般不能作目的操作数 用转移指令改变)。 一般不能作目的操作数( ④CS一般不能作目的操作数(用转移指令改变)。 如果指令有两个操作数,不允许两个都是存储器数。 ⑤如果指令有两个操作数,不允许两个都是存储器数。 上述四类格式以外的指令必定是非法指令。 ⑥上述四类格式以外的指令必定是非法指令。 所有“MOV”类指令均不影响标志 类指令均不影响标志。 ⑦所有“MOV 类指令均不影响标志。
第3章 8086指令系统(1)
第三章 8086指令系统 8086指令系统
21
例 MOV BX,[SI] , 解:设:DS=1000H,SI=2000H,(12000H)=318BH = , = , = 物理地址= × 则:物理地址= 16×DS + SI = 10000H + 200Байду номын сангаасH = 12000H 指令执行后, = 指令执行后,BX=318BH,指令执行过程如图所示。 ,指令执行过程如图所示。
第三章 8086指令系统 8086指令系统
15
1.2.3 直接寻址方式
1.含义: 1.含义: 含义 存储单元的有效地址EA( 操作数的偏移地址) 存储单元的有效地址EA(即:操作数的偏移地址)直接 由指令给出。 由指令给出。 2.特点: 2.特点: 特点 机器码中,有效地址存放在代码段中指令的操作码之后, 机器码中,有效地址存放在代码段中指令的操作码之后, 而该地址单元中的数据总是存放在存储器中。 而该地址单元中的数据总是存放在存储器中。须先求出操作 数的物理地址,再从存储器中取得操作数。 数的物理地址,再从存储器中取得操作数。 操作数的物理地址=16× 操作数的物理地址=16×DS + EA 3.作用: 3.作用: 作用 实现对存储单元的读/写操作。 实现对存储单元的读/写操作。
6
第三章 8086指令系统 8086指令系统
各种寻址方式指令执行速度不同: 各种寻址方式指令执行速度不同:
操作数在寄存器中指令执行速度快 操作数在寄存器中指令执行速度快:在CPU内部立即执行; 寄存器中指令执行速度 CPU内部立即执行 内部立即执行; 立即数寻址指令执行速度较快:直接从指令队列中取数; 立即数寻址指令执行速度较快:直接从指令队列中取数; 寻址指令执行速度较快 操作数在存储器中指令执行速度较慢 通过总线与CPU交 操作数在存储器中指令执行速度较慢:通过总线与CPU交 存储器中指令执行速度较慢: 换数据。 换数据。 CPU进行读 写存储器的操作: CPU进行读/写存储器的操作: 进行读/ ① 把一个偏移量送到BIU,计算出20位物理地址; 把一个偏移量送到BIU,计算出20位物理地址 位物理地址; ② 执行总线周期存取操作数。 执行总线周期存取操作数。
第3章 8086的指令系统
第三章8086的寻址方式和指令系统基本内容:8086寻址方式的概念,7种寻址方式的操作过程,8086的指令系统的构成及六大类基本指令。
基本要求:掌握8086的7种寻址方式,掌握8086指令系统的汇编格式,掌握每一个指令的功能用法。
重点内容:8086的7种寻址方式,传送指令、算术运算指令、逻辑指令、控制转移指令。
难点:立即寻址与直接寻址,寄存器寻址与寄存器间接寻址的区别,相对寻址的寄存器搭配使用,算术指令中寄存器的使用及结存放移位指令的使用,控制转移指令的操作过程。
第一节8086的寻址方式计算机中的汇编指令由操作码字段和操作数字段组成,操作码字段指示CPU执行哪一种操作,如传送、运算等;操作数为参与操作的数据,如寄存器中的数据或内存单元中的数据等。
(如加法指令须指明两个被加数)操作数字段可以直接给出操作数本身或者指明操作数的存放地址,如是在寄存器中存放须指出寄存器名称,若是在存储器中存放,须给出此操作数在存储器中的地址。
8086中对操作数的寻址方式可分为下列7种寻址方式。
一、立即数寻址方式特征:操作数由指令直接给出,紧跟于操作码之后,做为指令的一部分。
注意:1、立即数可做源操作数,不能是目的操作数;2、立即数只能是8位或16位的整数,不能是小数,且与目的操作数格式要一致;例:MOV BX,107DHMOV AL,90H不能写为MOV90H,AL操作数的立即数可以是16进制,十进制或二进制,但必须注明。
例:MOV BL,90(D)――十进制后缀可不写,系统默认。
MOV AL,10010000B特点:不启动总线周期,速度快。
二、寄存器寻址特征:操作数存放于寄存器中,指令中用寄存器名指出。
16位操作数---------AX,BX,CX,DX,SI,DI,SP,BP等。
8位操作数---------AL,BL,CL,DL,AH,BH,CH,DH特点:不访问存储器,速度快。
例:MOV AX,BX 执行前(AX)=OFC56H (BH)=0100H执行后(AX)=0100H (BH)=0100H不变INC DL 执行前(DL)=02H 执行后(DL)=03H注:寄存器寻址时,寄存器可以是源操作数,也可以目的操作数。
第3章_8086指令系统
EA =
(BX) (BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
寻址的寄存器为BX时,默认的段寄存器为DS ; 寻址的寄存器为 BP时,默认的段寄存器为SS 。 例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]
立即数只能作为源操作数
MOV AX,0FA00H MOV 8000H,DX ;正确 ;错误
• 2、寄存器操作数
存放在8个通用寄存器或4个段寄存器中的操作数
AX BX CX DX
AH BH CH DH
AL BL CL DL
可以存放8位或 16位操作数
SI DI BP SP
只能存放16位操作数
CS
DS ES SS
61200
AX AH AL
61200H
44H 33H
数 据 段
寄存器相对寻址
EA=间址寄存器的内容加上一个8/16位的位移量
(BX)
EA =
(BP) (SI) (DI)
+
8位
16位
位移量
寻址的寄存器为BX、SI、DI,默认的段寄存器为DS ;
寻址的寄存器为 BP时,默认的段寄存器为SS 。
例: MOV AX, [BX+8] MOV CX, TABLE[SI] MOV AX, [BP+16H] ;
数 据 段
基址-变址-相对寻址
在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址
汇编教程 第三章 8086的指令系统3
7
⑦不改变操作数,测试操作数或操作数的指定位 不改变操作数, TEST AL,0FFH;由ZF标志判断 是否为零 标志判断AL是否为零 , ; 标志判断 也可以用CMP指令。 指令。 ;也可以用 指令 TEST AL,01;由ZF标志判断 的D0是否为零, 标志判断AL的 是否为零 是否为零, , ; 标志判断 ZF=1, ;ZF=1,则AL.D0=0 ;ZF=0,则AL.D0=1 , AND AL,01 ;也可完成上述功能,但是改变了目 也可完成上述功能, , ;的操作数
循环移位指令(2)(end)
SHL AX,1 , RCL DX,1 ,
DX
AX
移位指令和循环移位指令结合,可实现 位数乘 位数乘2除 。 移位指令和循环移位指令结合,可实现32位数乘 除2。
14
CF
M 逻左移SAL
0
CF 循环右移ROR
CF
0
M 逻辑右移SHR
逻辑运算指令(END)
8
2.3.2 移位指令(1)
二、 移位指令
共四条指令,分成逻辑左移、算术左移、 共四条指令,分成逻辑左移、算术左移、逻辑右移 和算术右移,其中两条左移指令对应同一条机器指令, 和算术右移,其中两条左移指令对应同一条机器指令, 所以,从机器指令的角度来说,移位指令只有三条。 所以,从机器指令的角度来说,移位指令只有三条。 SHL/SAL SHR 符号位不变 SAR CF 0
10
移位指令(3)
注 释 ①标志设置 AF:对AF无定义; 无定义; : 无定义 CF:按移入的值或为 或为 ; 或为1; :按移入的值或为0或为 根据移位后的结果设置SF、 、 ; 根据移位后的结果设置 、ZF、PF; OF:当移动一位时,移位后如果符号位发生变化, :当移动一位时,移位后如果符号位发生变化, 符号位不发生变化, 则OF=1,符号位不发生变化,则OF=0,移位次数大于一 符号位不发生变化 , 不定。 时,OF不定。 不定 ②操作数左移一位,相当于乘2(对有符号数同理, 操作数左移一位,相当于乘 (对有符号数同理, 只要OF=0,结果就对)。 只要 ,结果就对)。
第三章 8086指令系统
⑵寄存器间接寻址 操作数的有效地址由基址寄存器BX、BP或变址寄存器 操作数的有效地址由基址寄存器BX、BP或变址寄存器 SI、DI提供。 SI、DI提供 提供。 BX BP SI BP
EA=
例如: 例如:设DS=2000H, AX=7850H ,BX=1000H MOV AX,[BX]; , ;
3.1 8086寻址方式 寻址方式
一条指令的机器码通常包含操作码(OP)和操作 一条指令的机器码通常包含操作码(OP) 数两部分。指令的格式如下: 数两部分。指令的格式如下: 操作码OP 操作码OP CODE 操作数Operand 操作数Operand
例如,MOV AL,03H; 例如, , ; SOPD 源操作数 目的操作数 DOPD 操作码 •操作码表示指令执行什么操作(必有) 操作码表示指令执行什么操作(必有) •操作数表示参加操作的数或数的存放地址
寻找操作数存放地址的方式称为寻址方式 寻找操作数存放地址的方式称为寻址方式 8086的寻址方式分为两类: 8086的寻址方式分为两类: 的寻址方式分为两类 •数据寻址方式
√本节
•转移地址寻址方式
3.1.1 立即寻址 该寻址方式中,指令直接给出 位或16位的操作数 直接给出8 该寻址方式中,指令直接给出8位或16位的操作数 立即数)。该数紧跟在操作码之后, )。该数紧跟在操作码之后 (立即数)。该数紧跟在操作码之后,作为指令的操 作数字段存放在指令代码中 如果是16位立即数, 如果是16位立即数,那么低位字节数存放在低地址 位立即数 单元中,高位字节数存放在高地址单元中。 单元中,高位字节数存放在高地址单元中。机器码存 放形式如图
00H
操作: 操作:3000×10H × +EA= 2000H + 1000H + 0250H P 33250H 33251H 78H 56H 数据段
汇编-第3章 8086指令系统
3.3 指令的执行时间
3.4 8086/8088指令系统
3.1 8086/8088指令格式
机器指令:指挥计算机完成某种操作的命令。
从计算机组成的层次结构来说,计算机指令 有机器指令、伪指令和宏指令之分。
指令格式如下:
操作符 目的操作数,源操作数
3.2 8086/8088寻址方式
3.2.1 固定寻址(隐含操作数)
数据类型不匹配 不允许两个操作数都是存储器单元 目的操作数不允许是立即数
注意事项:
MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器; MOV指令中绝对不允许在两个存储单元之间直接传送数据;
MOV指令中绝对不允许在两个段寄存器之间直接传送数据;
MOV指令不会影响标志位
练习: p33-3.12, 3.13 p34-3.14
B0 05
指令
例: MOV AX, 3045H
执行指令后: (AX) = 3045H 练习: p25-3.1,3.2
AX 30 45
存储器
低地址
OP 45 30
指令
高地址
3.2.3 寄存器寻址 特点:操作数存在寄存器中
例: MOV AX, BX
执行指令前: (AX) = 3045H
执行指令后: (AX) = 4000H
Байду номын сангаас
注意:当 指令中的偏移量为0时,则可以缺省,此时的寻址方式 也称为基址变址寻址方式
例:设 ( SS ) = 3000H ( BP ) = 2000H ARRAY = 0250H ( SI ) = 1000H MOV AX, ARRAY[BP][SI]
要访问的存储单元物理地址为: 30000H+2000H +0250+1000H = 33250H
第3章 8086的指令系统
寻 址 方 式
* 只能用于 SRC 字段
* SRC 和 DST 的字长一致
MOV AH, 3064H
2013-8-20
第三章:8086指令系统和寻址方式
3
•立即寻址
MOV AX , 3069H
30H 69H
AH
AL
30
69
2013-8-20
第三章:8086指令系统和寻址方式
4
(2) 寄存器寻址方式* —— 操作数在指定的寄存器中 MOV AX, BX MOV AL, BH MOV AX, 3064H(比较)
* 适于数组、字符串、表格的处理
2013-8-20 第三章:8086指令系统和寻址方式 11
寄存器相对寻址
MOV AX , COUNT [ SI ]
存储器
DS SI COUNT
+
x10H
+
DS×10H+COUNT+SI
12H
23H
AH
AL
2013-8-20
第三章:8086指令系统和寻址方式
12
(6) 基址变址寻址方式*
VALUE DB 10 MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE
2013-8-20 第三章:8086指令系统和寻址方式 7
•直接寻址
MOV AX , [ 2000H ]
存储器
DS 2000H
x10H
+
DS×10H+2000H
12H
第三章 80x86的指令系统和寻址方式
指令系统
微处理器所能执行的各种指令的集合
指令:
[小学教育]第三章 8086指令系统
指令
数据
(a)
指令
内存
指令 基址寄存器 变址寄存器
变址值
EA
数据
(b)
指令
寄存器
寄存器
数据
(f) 指令
基址值
基址寄存器 变址寄存器 位移量
(c)
指令
寄存器
内存
变址值
寄存器
EA
(d) 指令
数据
基址值 (g)
寄存器 位移量
内存
+
数据
8086寻址方式
地址 (e)
内存
+ 数据
内存
+ EA 数据
微
§3.3 数据传送指令
第
三
[17000H] AL
章
[17001H] AH
微
机
原 理
[SI]
及
(2) 若EA = [BP] +
接
[DI]
口
技
术
则操作地址:SS: EA
第 三 章
7. 相对的基址加变址寻址
[SI]
(1) 若EA = [BX] +
+ 8位或16位偏移量
[DI]
则操作数地址:DS: EA
例 MOV AX,[BX+SI+0250H]
SI,DI - 变址寄存器
第 三 章
微 机
[SI] (1) 若EA = [BX] +
[DI]
原
理
则操作数地址:DS: EA
及 接
例 MOV AX,[BX+SI]
口
若 DS = 1000H, BX = 5000H, SI = 2000H
技 术
第3章 8086指令系统
内存单元的地址(物理地址):
段基址 16 + 段内偏移量 EA
微 机 原 理 及 接 口 技 术 第 三 章
5. 指令包含的信息 做什么操作 操作数的来源 操作结果的存放位置
下一条指令的位置(跳转指令)
微 机 原 理 及 接 口 技 术 第 三 章
6. 寻址方式
寻找指令中操作数所在地址的方法。
3.2.2 寻址方式
1. 立即数寻址
操作数在指令中,紧跟在操作码的后面。 MOV AL,80H; AL 80H MOV AX,1090H; AX 1090H MOV AL,‘A’; AL 41H
AH AL
OP 90H 10H
码段
微 机 原 理 及 接 口 技 术 第 三 章
2. (存储器)直接寻址
首字符是字母或某些特殊字符,但“ ?‖ 不能单独作标识符; 有效长度为1-31个字符。
微 机 原 理 及 接 口 技 术 第 三 章
指令助记符:指令的符号名。
操作数:参加本指令运算的数据。
注释:指令功能的说明。
微 机 原 理 及 接 口 技 术 第 三 章
4. 有效地址EA(Effective Address)
8086CPU的堆栈在压栈时,由上往下生长(堆 栈指针减量修改)。
微 机 原 理 及 接 口 技 术 第 三 章
指令格式:PUSH src
POP
dst
功能:实现操作数与堆栈之间的数据传送。
注意:
① 堆栈操作均为字操作。
② CS可以入栈,但不能弹出一个数据到CS。 ③ 一般情况下,入栈和出栈指令应配对使用, 以保证堆栈数据不会紊乱。
(2)段超越前缀 MOV BX,ES: [3000H]; BX (ES: 3000H) 设ES = 5100H BH BL
第3章 8086(8088)CPU指令系统
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
3.存储器寻址(Memory Addressing)
4.1操作数寻址方式
存储器操作数的寻址方式中,数据都存放于存储单元中,指令操 作过程中需要BIU通过一个总线周期的访问,才能获取操作数。存储 器操作数的寻址方式是怎么计算出操作数的有效地址EA(Effective Address)。有效地址EA是三个地址量因子一个以上组合,由CPU执行 单元EU计算出来。
4.1操作数寻址方式
Relative -plus-Index Addressing)
有效地址是一个8/16位移量和一个基址与变址之和构成 EA=(BX/BP)+(SI/DI)+ DISP8/16
MOV AX,[BX+SI+10H] 操作如图所示
数据段 BX 20H 00H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
第3章 8086/8088CPU指令系统
3.1操作数寻址方式
3.2指令系统
1
第3章 8086/8088CPU指令系统
微机工作过程中其内部信息有两类: 一类是控制信息(指令); 一类是被加工处理的信息(数据)。
指令:微机中的控制信息就是使计算机进行某种 操作的命令,这些命令就称为指令。 指令系统:一台计算机所能执行的全部指令的集合称 为指令系统。不同的计算机其指令系统是不同的。
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
4.端口寻址(Port Addressing)
4.1操作数寻址方式
80X86系列CPU在访问外设时使用10根地址线A9-A0,其实际访问空 间为210=1K。根据通常书写习惯当高2为A9A8=00时,直接书写低8位, 可直接出现在指令格式中即端口的直接寻址;当A9A8≠00时,要按照 16为的数据书写,不能直接出现在指令格式中,要预先送到DX寄存器 中,即端口的间接寻址。 A 9 A 8 A7A6A5A4A3A2A1A0 0 0 X X X X X X X X 0 1 X X X X X X X X 1 0 X X X X X X X X 1 1 X X X X X X X X
第3章80888086指令系统(老师用的课件哦)
第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为目的操作数,可以是寄存器、存储器、
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杭州电子科技大学
微机原理及应用 3.3.5 控制转移类指令
• 控制转移类指令用于实现分支、循环、 过程等程序结构,是仅次于传送指令 的常用指令
• 重点掌握:
等价语句: MOVS PAP1,PAP2 MOVSW
传送字符串程序片断: MOV SI,2000H MOV DI,4000H MOV CX,200H
CLD
REP MOVSB
杭州电子科技大学
微机原理及应用
2 字符串的存与取
• LODS 源串(LODSB/LODSW)
– 指令是把由SI寻址的源串元素装入到寄存器 AL/AX中,并修改SI,指向下一元素
微机原理及应用
微机原理及应用
杭州电子科技大学
微机原理及应用
3.3.4 串操作指令
• 常见串操作
– 计算字符串的长度、查找某个特定字符、改换 字符、判断字符串是否一致等
• 串操作类指令
– MOVS、CMPS、SCAS、LODS、STOS
• 注意事项
– 操作数的源串在当前数据段DS中,若不在,可 使用段前缀指令;目的串必须在附加段ES中, 且不能使用段前缀指令
值加上位移量
• 直接寻址方式
用标号表达
– 指令代码中提供目的逻辑地址,转移后的CS和 IP值直接来自指令操作码后的目的地址操作数
• 间接寻址方式
用寄存器或存储器操作数表达
– 指令代码中指示寄存器或存储单元,目的地址从 寄存器或存储单元中间接获得
杭州电子科技大学
微机原理及应用
目标地址的寻址范围:段内寻址
• 段内转移——近转移(near)
– 在当前代码段64KB范围内转移 ( ±32KB范围)
代 码 段
– 不需要更改CS段地址,只要改变IP偏
移地址
• 段内转移——短转移(short)
杭州电子科技大学
微机原理及应用
• SCAS 目的串(SCASB/SCASW)
– 功能是在字符串中查找一个与已知数值相同或 不同的元素。它以AL或AX的内容与附加段ES 中用DI寻址的目的串元素进行比较,利用结果 影响标志位,来反映扫描结果
– 执行结果不改变目的串的数据 – 与REPE或REPZ配合使用CX ≠ 0且ZF=1,查
– 通常不加前缀
– 地址增减取决于方向标志DF,DF=0增量修改, DF=1减量修改
– 替代符—LODSB/LODSW
– 举例:编制一程序段,要求将0700H单元开始 的5个字节的内容逐一装入累加器中进行处理, 处理完后,再送入0700H为首地址的内存区中
杭州电子科技大学
微机原理及应用
CLD MOV SI,0700H MOV CX,5 LOOP1:LODSB PUSH CX : POP CX DEC CX MOV [DI],AL JNZ LOOP1
杭州电子科技大学
微机原理及应用
• STOS 目的串(STOSB/STOSW)
– 指令所完成的操作和LODS指令相反。他将累 加器AL/AX中的内容存入附加段中由DI寻址的 存储单元中,并自动修改地址指针
– 与REP结合,可使一串内存单元填满相同的数 – 替代符—STOSB/STOSW – 举例:若对某一数据缓冲区清零,并设(ES)
– JMP/Jcc/LOOP/JCXZ CALL/RET – INT n/IRET 常用系统功能调用
控制转移类指令通过改变IP(和CS)值, 实现程序执行顺序的改变
杭州电子科技大学
微机原理及应用
1 程序转移的地址
• 相对寻址方式
用标号表达
– 指令代码中提供目的地址相对于当前IP的位移量,
转移到的目的地址(转移后的IP值)就是当前IP
杭州电子科技大学
微机原理及应用
– 字符串指令中的操作数只用于指出指令的操作 类型。目的操作数与源操作数的逻辑地址由ES: DI和DS:SI指出
– 用CX存放要处理的字符串的元素个数。在执行 带重复前缀的字符串指令时,每执行一次字符 串操作指令,CX的内容自动减1
– 用DF标志来置规定字符串处理方向。DF=0, 由低向高,DF=1,相反
3 字符串的比较与扫描
• CMPS 源串,目的串(CMPSB/CMPSW)
– 用源串减去目的串,根据操作结果影响标志,结果不 回送
– 源串由SI指出,目的串由DI指出 – 源操作数写在左边,目标操作数写在右边,与其他指
令不同 – 与REPE或REPZ配合使用CX≠0(指定的长度还未比较
完)且ZF=1(两串相等),则重复比较;直到CX=0(比完了) 或ZF=0(两串不相等)时才停止比较. – 与REPNE或REPNZ配合使用,CX ≠ 0且ZF=0(两串不 等),则重复比较;直到CX=0(比完了)或ZF=1(两串相 等)时才停止比较. CPMS的替代符—CMPSB、CMPSW,使用方法与 MOVSB/MOVSW相同
找不同元素; – 与REPNE或REPNZ配合使用,CX ≠ 0且ZF=0,
查找相同元素; – SCAS替代符—SCASB/SCASW
杭州电子科技大学
微机原理及应用
重复前缀指令
• 重复前缀指令
– REP与MOVS、STOS指令联合使用时,他的 意义是“字符串未处理完时重复”
– REPE(相等时重复)和REPZ(等于0时重复) 实际上是相同的。将他们与CMPS、SCAS指 令联合使用,可对本条指令操作所设置的ZF进 行测试,ZF=1且CX ≠ 0,重复,否则退出
– 每处理完一个元素,自动修改SI和DI的内容 – 字符串处理过程可被中断
杭州电子科技大学
微机原理及应用
1 字符串的传送
• MOVS 目的串,源串(MOVSB/MOVSW)
– 把一个字节或一个字从源串传送到目的串,并 自动修改SI和DI,指向下一个元素
– 通常加REP,完成块的传送 – MOVSB和MOVSW是MOVS的替代符
=3000H,数据缓冲区首地址DI=0200H,缓冲 区长度为100个字节,则可用以下的程序段:
杭州D MOV AX,3000H MOV ES,AX MOV DI,0200H MOV CX,100 MOV AL,00 REP STOSB
杭州电子科技大学
微机原理及应用