微机原理第3章80868088CPU的指令系统资料

合集下载

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

第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为目的操作数,可以是寄存器、存储器、

第3章 80868088的指令系统

第3章  80868088的指令系统
课件制作人:刘永华
3.1 寻 址 方 式
例如: ADD AX,BX 其中AX是目的操作数,BX是源操作数,执行前, AX存放被加数,BX存放加数,执行后,AX和BX相 加的结果存放在AX中。 从书写形式来看,8088/8086系统中的操作数 可以分为三种类型:立即数操作数、寄存器操作 数和存储器操作数。
课件制作人:刘永华
3.1 寻 址 方 式
1. 立即数操作数 立即数是作为指令代码的一部分出现在指令 中。它通常作为源操作数使用。其书写形式可 以为二进制、八进制、十进制和十六进制数, 也可以是一个可求出确定值的表达式。 2. 寄存器操作数 寄存器操作数是把操作数存放在寄存器中, 用来参加运算或存放结果。在双操作数指令中, 它可以作为源操作数和目的操作数。其书写形式 就是寄存器的名称。
课件制作人:刘永华
3.1 寻 址 方 式

3.1.2 寻址方式 寻址方式共有7种: 1. 寄存器寻址 寄存器寻址方式中,指令所需要的操作数存 放在指令指明的寄存器中。对16位操作数, 寄存器可以是AX、BX、CX、DX、SI、DI、SP、 CS、DS、ES、SS和BP;对8位操作数,寄存器 可以是AL、AH、BL、BH、CL、CH、DL和DH。 这种寻址方式速度较快,对于那些需要经常 存取的操作数,采用寄存器寻址方式较为合 适。
课件制作人:刘永华
图3.3 MOV AX,BX
3.1 寻 址 方 式
2. 寄存器间接寻址 寄存器间接寻址方式中,操作数的偏移地址EA在指 令指明的寄存器中,即寄存器的内容为操作数的偏 移地址EA,而操作数存放在存储器中。 能够用来间接寻址的寄存器只能是寄存器SI、DI、 BP、BX其中之一。若指令中指定的寄存器是BX、DI 或SI,则操作数在当前数据段中,所以操作数的物 理地址PA的形成是由数据段寄存器DS的内容左移4位, 加上BX、DI或SI中的偏移地址EA。若指令中指定的 寄存器是BP,则操作数在当前堆栈段中,所以操作 数的物理地址PA的形成是堆栈段寄存器SS的内容左 移4位,加上BP中的偏移地址EA形成操作数的物理地 址PA,如图3.4所示。

微机原理第3章8086指令系统

微机原理第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汇编程序,实现各种功能和算法。

微机原理第三章 80868088指令系统3-1基本数据类型

微机原理第三章  80868088指令系统3-1基本数据类型

. . .
YYH XXH
AX
AH
. . .
数 据 段
寄存器间接、寄存器相对、基址变址、相对 基址变址四种寻址方式的比较:
寻址方式 指令操作数形式
寄存器间接 —— 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 —— 一个寄存器加上位移量 基址—变址 —— 两个不同类别的寄存器 相对基址-变址 —— 两个不同类别的寄存器加上位移量

AL
操作码 02H
31H
代 码 段

2 直接寻址

指令中直接给出操作数的16位偏移地址,为了区别
于立即数,偏移地址用“[ ]”括起;

偏移地址也称为有效地址(EA, Effective Address);


默认的段寄存器为DS;
例:
MOV
MOV
AX , [2A00H]
;默认段寄存器为DS
DX , ES: [2A00H] ;指定段寄存器为ES
数 据 段
CDH ABH
3 寄存器寻址

操作数放在某个寄存器中;


源操作数与目的操作数字长要相同;
寄存器寻址与段地址无关; 例: MOV AX, BX MOV [3F00H], AX
MOV CL, AL
错误例: × MOV AX, BL × MOV ES: AX, DX ; 字长不同 ; 寄存器与段无关
有符号数 80H~7FH(-128~127) 8000H~7FFFH(-32768~32767)
2 寄存器操作数
存放在8个通用寄存器或4个段寄存器中的操作数
AX BX CX DX AH BH CH DH AL BL CL DL

第3章 8086 8088指令系统

第3章  8086 8088指令系统

字节2
6 5 4 3 2 1 0 7· · · 0 7· · · · ·0 7· · · · · 0 7· · · · · 0 DISPH DATAL DATAH
OP code
D w MOD REG R/M DISPL
操作码字节 寻址方式字节 位移量 立即数 •OP code为操作码,表示该指令要完成的操作。 为操作码, OP code为操作码 表示该指令要完成的操作。 •D=0:第一个操作数是目的操作数, 1:第二个操作数是目的操作数 D=0: 是目的操作数, 第二个操作数是目的操作数 D=0 第一个操作数是目的操作数 •W=0:8位操作数, 1:16位操作数 W=0: 位操作数, 16位操作数 W=0 •MOD指明寻址方式: MOD=11 寄存器寻址 MOD指明寻址方式 MOD指明寻址方式: MOD= MOD≠11存储器寻址 MOD≠11存储器寻址 00没有偏移量 1016 16位偏移量 00没有偏移量 01 8位偏移量 1016位偏移量 •REG用编码方式指明操作中所使用的寄存器。 REG用编码方式指明操作中所使用的寄存器 REG用编码方式指明操作中所使用的寄存器。 •R/M用编码方式指出存储器有效地址计算方法。 R/M用编码方式指出存储器有效地址计算方法 R/M用编码方式指出存储器有效地址计算方法。 •DISP表示地址偏移量。DATA则指明立即数。 DISP表示地址偏移量 则指明立即数。 DISP表示地址偏移量。DATA则指明立即数
DATA
操作码 00 02
DS : 80000 BX: 1000 DI: + 2000 DATA: + 0200 83200H
AX 30 40
码 段
40 30
83200 83201
数 据 段

第3章指令系统01

第3章指令系统01

无 无 CS,ES,SS 无 CS,ES,DS CS,ES,SS
IP SP SI DI 有效地址 有效地址
8086/8088指令系统 第3章 8086/8088指令系统
例题1
假设已知
(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(B X)= 0100H,(BP)=0010H,数据段中变量名 , ,数据段中变量名VAL的偏 的偏 移地址值为0050H,试指出下列源操作数字段的寻址 移地址值为 , 方式是什么?其物理地址值是多少? 方式是什么?其物理地址值是多少?
8086/8088指令系统 第3章 8086/8088指令系统
3.1.2 寻址方式
以 MOV 指令为例 1. 立即寻址 *—— 操作数在指令中给出。 操作数在指令中给出。 MOV AL, 5 MOV AX, 3064H 判断方式:在源单元SRC位置上直接出现一个数据。 判断方式:在源单元SRC位置上直接出现一个数据。 SRC位置上直接出现一个数据 * 只能用于 只能用于SRC字段 字段 * SRC 和 DST的字长一致 的字长一致 × MOV AH, 3064H
不允许使用AX、 、 存放 存放EA * 不允许使用 、CX、DX存放 × MOV AX, [CX]
* SRC 和 DST的字长一致 的字长一致 MOV DL, [BX] MOV DX, [BX]
; [BX]指示一个字节单元 指示一个字节单元 ; [BX]指示一个字单元 指示一个字单元
* 适于数组、字符串、表格的处理 适于数组、字符串、
8086/8088指令系统 第3章 8086/8088指令系统
3. 直接寻址 —— 有效地址 由指令直接给出。存储器寻址 直接寻址* 有效地址EA由指令直接给出 由指令直接给出。 有效地址EA: 有效地址 :操作数的偏移地址 物理地址PA 物理地址 = 16 × (DS) + EA 例:MOV AX, [2000H] EA=2000H, 假设(DS)=3000H, 那么(PA)=32000H 假设 那么

第四讲80868088的指令系统-资料

第四讲80868088的指令系统-资料

存储单元之间不能直接传送
例: MOV MEM , AX MOV MEM ,DS MOV DISP[BX] ,CX
; 累加器存储器,直接寻址 ;段寄存器存储器,直接寻址 ;寄存器存储器,变址寻址
MOV AX , DISP [SI] MOV DS , MEM MOV CX , DISP [BX] [SI]
;存储器累加器,变址寻址 ;存储器段寄存器,直接寻址 ;存储器累加器,相对基址加1变2 址
注意:
(1)不能用一条MOV指令实现以下传送。 存储单元之间的传送
MOV MEM2 , MEM1 错。
MOV AX , MEM1 MOV MEM2 , AX
对。
立即数送段寄存器
例 : MOV DS,2000H 错。
MOV AX, 2000 H
MOV DS , AX
对。
13
段寄存器之间的传送
MOV ES , DS ; 错
MOV AX , DS MOV ES , AX ; 对 。
注意CS和IP的使用 CS和IP不能作为目标操作数,CS可以作为源操作数。
例:
MOV CS,AX ; 错 MOV AX,CS ;对 。 MOV IP, AX ;错 MOV AX, IP ;错。
MOV DS,BX
;通用寄存器 段寄存器
MOV AX, CS
;段寄存器 通用寄存器
10
② 立即数传送至CPU内部通用寄存器组
③ (AX、BX、CX、DX、BP、SP、SI、DI)。
用于给寄存器赋初值。
不能直接给段寄存器赋值
例:
MOV CL,04H
;立即数8位寄存器
MOV AX,03FFH
;立即数16位寄存器
立即数寄存器/存储器 寄存器/存储器段寄存器之间的数据传送。

微机原理与接口技术-第三章 8086 8088 cpu的指令系统

微机原理与接口技术-第三章 8086 8088 cpu的指令系统

3.4 指令系统
3.4.2 算术运算指令 5.十进制调整指令 (2)减法的非压缩BCD码调整指令AAS
3.4 指令系统
3.4.2 算术运算指令 5.十进制调整指令 (3)乘法的非压缩BCD码调整指令AAM
(4) 除法的非压缩BCD码调整指令AAD
3.4 指令系统
3.4.2 算术运算指令 5.十进制调整指令 (5) 加法的压缩BCD码调整指令DAA
3.3 DEBUG的使用方法
3.3.1 DEBUG使用方法 6.单步运行内存中的程序 7. 查看与修改寄存器内容 8. 查看与修改存储器内容 9. 内存块复制与填数 10. 数据块输出与输入 11. 程序段落输出与输入
3.3 DEBUG的使用方法
3.3.2 DEBUG使用示例
3.3 DEBUG的使用方法
3.4.2 算术运算指令 2.减法指令 ② 带借位的减法指令SBB
3.4 指令系统
3.4.2 算术运算指令 2.减法指令 ③ 与INC的功能相反,DEC是减1指令
3.4 指令系统
3.4.2 算术运算指令 2.减法指令 ④ 求补指令NEG
⑤ 比较指令CMP
3.4 指令系统
3.4.2 算术运算指令 2.减法指令 ⑤ 比较指令CMP
④ 带进位循环右移指令RCR
3.4 指令系统
3.4.4 移位指令 2.循环移位指令
3.4 指令系统
3.4.5 串操作指令 1. 串操作指令 (1)串传送指令MOVS的指令格式
3.4 指令系统
3.4.5 串操作指令 1. 串操作指令 (2) 串比较指令CMPS的指令
(3) 串搜索指令SCAS的指令
第三章
8086/8088 CPU086/8088 CPU指令格式

第三章 8086 8088指令系统

第三章 8086 8088指令系统

MOV MOV MOV MOV MOV MOV MOV
AX , 3102H AX , [3102H] SI , AX AX , [SI] AX , [BX ] DATA AX , [BX][SI] AX, [BX] [DI] DATA
MOV AX , MOV [3102H] , MOV [SI] , MOV [BX] DATA , MOV [BX][SI] , MOV [BX] [DI ]DATA,
[例3-7] 指令 MOV AX,DATA[BX]
设:(DS)=6000H,(BX)=1000H,DATA=08H, 则物理地址=60000H+1000H+08H= 610008H
指令的执行情况如图3-6所示。执行结果为AX=5566h
DS BX ﹢) 6000 1000 0008 61008 位移量 高8位 0 位移量 低8位
MOV AX,[6000H]
③立即数到寄存器的传送
MOV MOV AL,5 BX,3078H ; 将立即数5送累加器AL ; 将立即数3078H送寄存器BX
④立即数到存储器的传送
MOV BYTE PTR[BP+SI],5 MOV WORD PTR[BX],1005H ; 将5送堆栈段中偏移地址为BP+SI所指的单元中 ;1005H 送数据段中偏移地址为BX和BX+1两单元
图 3-4 寄存器寻址示意图
采用寄存器寻址方式,虽然指令操作码在代码段中,但操作数在内部寄存器中,
指令执行时不必通过访问内存就可取得操作数,故执行速度较快。
3.2.4寄存器间接寻址
寄存器间接寻址 ——是用寄存器的内容表示操作数的偏移地址。此时寄存
器中的内容,只是存放数据的偏移地址,操作数本身在内存储器中。

8086指令系统

8086指令系统
• 寄存器相对寻址方式(Register Relative Addressing)
MOV Al, [BX+5]
22
第三章:8086/8088的指令系统— —寻址方式
• 寄存器相对寻址方式(Register Relative Addressing)
• MOV AL,5[BX] • MOV AL,[BX+5] • COUNT EQU 5 • MOV AL,COUNT[BX]
29
第三章:8086/8088的指令系统— —指令系统
• 数据传送指令
1. 通用传送指令(MOV/ MOVZX/ MOVSX) 2. 堆栈操作指令(PUSH/POP、 PUSHA/POPA) 3. 交换指令(XCHG/BSWAP) 4. 输入/输出指令(IN/OUT) 5. 换码指令(XLAT/XLATB) 6. 地址传送指令 (LEA/LDS/LES/LSS/LFS/LGS) 7. 标志传送指令(LAHF/SAHF,PUSHF/POPF) 数据传送指令负责把数据、地址或立即数传送到寄存器或 存储单元中。
有效地址是一个基址寄存器和一个变址寄存 器的内容以及一个8位或16位位移量之和。
26
第三章:8086/8088的指令系统— —寻址方式
• 例如:
MOV AX,COUNT[BX][SI] MOV AX,COUNT[BX+SI] MOV AX,[BX+SI+COUNT] • 以上三者等价 • 若(DS)=3000H,(BX)=2000H, (SI)=1000H,COUNT=0250H, • 则物理地址=16d*(DS)+(BX)+(SI)+COUNT =30000+2000+1000+0250=33250H

第3章 8086指令系统(2)

第3章 8086指令系统(2)
3.3 80X86指令系统
8086/8088指令系统按其功能分为以下类型:数 据传送指令、地址传送指令、标志寄存器传送 指令、算术运算指令、逻辑运算指令、移位指 令、控制转移指令、串操作指令、中断指令和 处理器控制指令。
一.数据传送指令
数据传送指令用于寄存器、存储单元、或输入
输出端口之间传送数据或地址。8086/8088有14
CMP AL,100
29
CMP指令执行后对标志位的影响
操作数类型
带符号的 二进制
CF ZF SF OF
两操作数的关系
01 0 0
等于
-010
小于
- 0 0 1 目的操作数 小于 源操作数
-000
大于
-011
大于
不带符号的 二进制
01 0 0
等于
10 -
- 目的操作数 低于 源操作数
00 -
-
高于
举例: n=8 bit 带符号数(-128~127), 无符号数(0~255)
PUSH AX
PUSH DX
78H
POP AX
56H
POP DX
34H
12H
9
(4)XCHG指令 格式:XCHG OP1,OP2 操作:源、目的操作数之间交换一个字节 或字的数据。源操作数或目的操作数只能 取通用寄存器或通用寄存器与存储器 例: XCHG AX,CX
XCHG AL,BL XCHG AX,[BP+DI]
中的数相乘,结果放在累加器中
乘积为双字节长时,结果放在AX中;乘积为双 字长时,分别放在DX(乘积的高16位)和AX中。 该指令的运行结果只影响标志位CF和OF 例:MOV AL,FIRST
MUL SECOND MOV THIRD,AX (2)IMUL指令 格式:IMUL SRC 该指令为带符号数相乘指令

第3章 80868088的指令系统(字符串操作指令)

第3章 80868088的指令系统(字符串操作指令)
作指令,相关变址寄存器的内容增加。
DF =1时为地址减少加方向,每执行一条串
操作指令,相关变址寄存器的内容减少。
• DF的缺省值为0。
串操作指令 * 段超越问题
• 串操作指令的操作数一般可以缺省,缺
省情形以 DS:SI 指向源串,以 ES:DI指
向目的串。
• 目的串的段址必须为ES,源串允许段超
种:
后缀 B 表示字节串 后缀 W 表示字串
• 字节串操作:相关的变址寄存器改变量
为±1,如果涉及累加器,则为AL。
• 字串操作:相关的变址寄存器改变量为
±2,如果涉及累加器,则为AX。
串操作指令 * 串处理方向
• 串处理过程中,地址变化的方向取决于
标志 DF 的设置
DF =0时为地址增加方向,每执行一条串操
REPZ, REPNZ

说明: 与REP一样专用于串操作,格式相同
但有附加条件,条件满足且(CX)不为零才重
复。 REPZ 的条件是:ZF=1 REPNZ 的条件是:ZF=0
有条件重复前缀一般用于有比较含义的串操
作,即 CMPS 和 SCAS
串操作指令 * 类型后缀
• 串操作指令一般会带有类型后缀,有两
字节串/字串扫描 字节串/字串装入
字节串/字串存储
串操作指令
串操作指令(续)
类别 指令格式 指令功能 无条件重复 当相等/为零时重复
REP
重 复 前 缀
REPE / REPZ
REPNE /REPNZ 当不等/不为零时重复
串操作指令

串操作指令用于存储单元的成批数据处
理,包括串传送、串比较、串扫描、串
串操作指令

微机原理 第3章 8086、8088指令系统

微机原理 第3章 8086、8088指令系统
指令: MOV AX,COUNT[BP] 解:物理地址=16×SS+BP+16位偏移量
=20000H+1000H+2000H=23000H 指令执行结果是将23000H和23001H单元的内容送 入寄存器AX中。
MOV BL,2[BX] 或 MOV BL,[BX+2] ;(DS:[BX+2])BL
27
高地址
20
注意: (1) 直接寻址方式的操作数所在存储单元的段地址
一般在数据段寄存器DS中。 (2) 如果操作数在其他段,则需要在指令中用段超
越前缀指出相应的段寄存器名。
例4:MOV AH, ES∶ [2000H] ;将附加段寄存器ES的内 容乘16,再加上2000H作为操作数所在存储单 元的地址,取出该存储单元的内容送到寄存器 AH中。
运算结果的去向
指令系统:指令系统是计算机能够执行全部命令的 集合,它取决于计算机的硬件设计。指令系统因机 而异,没有通用性。
8
3、指令格式
指令格式: 操作码 [操作数],[操作数]
执行何种操作
目的操作数 源操作数
参加操作的数据
源操作数: 指令加工之前的数据 目的操作数:指令加工之后形成的数据
9
4、指令中的操作数类型: 根据操作数的来源进行分类:
表征参加操作的数据本身 立即数
表征数据存放的地址
寄存器 存储器
10
1)、立即数操作数:
表示参加操作的数据本身,可以是8位或16位 例: MOV AX,1234H ; AX 1234H MOV BL,22H
注意: 1)立即数只能用作源操作数,如 MOV AL,86H ∨ MOV 86H,AL ×
2)立即数必须和另一个操作数位数相等 MOV AL,3456H × MOV AX,34H ∨

03第三章 Intel 80868088 CPU的指令系统04

03第三章 Intel 80868088 CPU的指令系统04

这4条指令的功能如下图示:
最高位 CF (a) ROL 最高位 CF (b) ROR 最低位 CF (d) RCR 最高位 最低位 CF (c) RCL 最低位 最高位 最低位
循环移位指令功能示意图
② 不带进位标志位的循环右移指令 ROR
【格式】 ROR mem/reg,CL ;移位位数≥1时 1 ;移位位数=1时
移位位数1时功能及操作将目的操作数的内容向右移1位或cl所指定的位数操作数最低位移入标志位cfsal将目的操作数视为有符号数因此为了保证符号不丢失算术右移时最高位不是补零而是保持不变
第3章 8086/8088指令系统
3.3.3 逻辑运算和移位指令
要点:
▪ 逻辑运算指令可实现与(测试)、或、非、异或 等四类基本逻辑运算。 ▪ 移位指令可实现指定操作数的左移或右移(包 括算术/逻辑/循环)操作。 ▪ 逻辑运算和移位指令中的绝大多数均会影响OF、 CF、PF、SF和ZF标志,对AF无影响。 ▪ 逻辑运算指令的运算规则是:按位操作,无进/ 借位。
循环移位指令与非循环移位指令不同,循环移位后, 操作数中原来的信息不会丢失,而只是改变了位置而已, 如果需要还可恢复(反向移动即可)。 循环移位指令只影响CF和OF(与非循环移位指令相 同),其余标志不受影响。
① 不带进位标志位的循环左移指令 ROL 【格式】 ROL mem/reg,CL ;移位位数≥1时 1 ;移位位数=1时 【功能及操作】 将目标操作数向左循环移动1位或CL指定 的位数,最高位移入CF,同时再移入最 低位构成循环,CF不在循环圈之内(见 图)。
循环移位指令功能示意图
③ 带进位标志位的循环左移指令 RCL
【格式】 RCL mem/reg,CL ;移位位数≥1时 1 ;移位位数=1时

第3章 8086(8088)CPU指令系统

第3章 8086(8088)CPU指令系统
11
第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

03第三章 Intel 80868088 CPU的指令系统02

03第三章 Intel 80868088 CPU的指令系统02

设(AX)=1020H,执行示意图
低地址
存储区
低地址
存储区
(SS段)
(SS段)
(SP)-2 (SP)-1 (SP) (SP)
20
10
(AL) (AH)
进栈方向
高地址
执行前
(AX)=1020
高地址
执行后
PUSH AX指令执行示意图
注意进栈方向是高地址向低地址发展。
压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg 例如: PUSH AX PUSH [BX] PUSH DS
OF DF IF TF SF ZF
AF
PF
CF
SAHF指令的功能
(3)把标志寄存器推入栈顶指令PUSHF
执行的操作:(SP)-1←标志寄存器高8位 (SP)-2←标志寄存器低8位 (SP)←(SP)-2 (4)从栈顶弹出标志寄存器指令POPF 执行的操作:标志寄存器低8位←(SP) 标志寄存器高8位←(SP)+1 (SP)←(SP)+2 PUSHF和POPF指令用于保护和恢复标志寄 存器内容。
存储器
42000H+0
30 31 32
39 41
...
‘0’ ‘1’ ‘2’
‘9’ ‘A’ ‘B’ ‘E’ ‘F’ 十六进制数ASCII码表
42000H+0BH
42 45 46
... ...
则可用如下几条指令实现:
MOV BX,2000H ;(BX)←表首地址 MOV AL,0BH ;(AL)←序号 XALT ; 查表转换
上程序段存放在代码段中,設(CS)=109EH, 则各条指令存放地址如下:
CS : 109E : 109E : 109E : 109E : 109E : 109E : 109E : 109E : 109E : IP 0100 0103 0106 0108 010A 010B 010C 010E 0110 指令 MOV DI,1000H MOV CX,64H MOV AL,2AH MOV [DI],AL INC DI DEC CX JNZ 0108 HLT
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CD21H 机器语言——机器指令系统+相应的语法规则 汇编指令——指令的助记符形式。例如:INT 21H 汇编语言——汇编指令系统+相应的语法规则
8088/8086指令系统特点: 对硬件控制最彻底、占内存少、运行速度快 了解计算机组成结构和工作过程的工具 8086指令系统是整个x86系列CPU指令的基本集合,
第3章 8086/8088指令系统
mov ax,12h call display Jmp 1234h
主要内容
指令系统的一般概念 对操作数的寻址方式 六大类指令的操作原理
操作码的含义 指令对操作数的要求 指令执行的结果
§ 3.1 概述
指令——控制计算机完成指定操作的命令 指令系统——CPU所有指令及其使用规则的集合 机器指令——指令的二进制代码形式。例如:
IMUL 累加器乘8位寄存器 80~98
0
累加器乘16位寄存器 128~154
0
累加器和内存字节乘 (86~104)+EA
1
累加器和内存字乘 [134(138)~160(164)]+EA
1
DIV 除数在8位寄存器中 80~90
0
除数在16位寄存器中 144~162
0
除数为8位内存数 (86~96)+EA
SUB 寄存器到内存
16(24)+EA
立即数到寄存器
4
立即数到内存
17(25)+EA
MUL 累加器乘8位寄存器 70~77
累加器乘16位寄存器 118~133
累加器和内存字节乘 (76~83)+EA
累加器和内存字乘 [124(128)~139(143)]+EA
访问内存次数
1 1 0 1 1 0 1 0 1 0 1 0 1 2 0 2 0 0 1 1
内存到累加器
10(14)
寄存器到寄存器
2
内存到寄存器
8(12)+EA
寄存器到内存
9(13)+EA
MOV 立即数到寄存器
4
立即数到内存
10(14)+EA
寄存器到段寄存器 2
内存到段寄存器
8(12)+EA
段寄存器到寄存器 2
段寄存器到内存
9(13)+EA
ADD 寄存器到寄存器
3
或 内存到寄存器
9(13)+EA
移位
SHL/SHR/SAR,ROL/ROR,RCL/RCR
串操作
MOVS,CMPS,SCAS,LODS,STOS
控制转移
JMP,JXX,LOOP,CALL/RET, INT/IRET
8088/8086的操作数分为3类
立即数 寄存器操作数 存储器操作数
1、立即数(常数)
取值范围:
8位
16位
一般情况下,只需给出段内偏移地址 地址可以是直接的,也可以是间接的,还可以是地址表达式
一般不允许两个操作数同时为存储器操作数
存储单元的物理地址
CPU通过计算指令给出的 地址表达式得到存储器
操作数的偏移地址
存储单元的物理地址
=段基地址 + 偏移地址
汇编语言中只使用逻辑地址 (段地址:偏移地址)
段基地址
若指令中没有指明所涉及的段寄存器,CPU就采用默认 的段寄存器来确定操作数所在的段。
段寄存器使用的一些基本约定
*这些操作的段和偏移的使用由CPU决定,程序员无法更改。
存储器操作类型
*取指令 通用数据读写 串操作:源串 串操作:目标串 *堆栈操作 BP作为基址寄存器
默认的 段寄存器
CS DS DS ES
向后兼容 应用广泛,资料易于寻找
指令按功能分为六大类(92种)
数据传送类 算术运算类 逻辑运算和移位 串操作 控制转移类 处理器控制
§ 3.1.1 指令的基本构成
目的

说明要执行的 操作对象,可以 是什么操作 有0个、1个或2个
[指令基本构成举例]
MOV AX , BX
操作码 操作数 ADD AX,[SI+6] INC [BX] HLT
内存数据移1位
15(23)+EA
内存数据移若干位 20(28)+EA+4*位数
段内/段间直接转移 15
JMP 段内间接转移
8(12)+EA
段间间接转移
1
除数为16位内存数 [150(154)~168(172)]+EA
1
IDIV 除数在8位寄存器中 101~112
0
除数在16位寄存器中 165~184
0
除数为8位内存数 (107~118)+EA
1
除数为16位内存数 [171(175)~190(194)]+EA
1
循环和移在寄存器中移1位 2
位 在寄存器中移若干位 8+4*位数
无符号数 00H-FFH(0-255) 0000H-FFFFH(0-65535)
80H-7FH
带符号数
(-128~127)
8000H-7FFFH (-32768~32767)
MOV AX,0FA00H MOV 8000H,DX
;正确 ;错误
2、寄存器操作数
放在8个通用寄存器或4个段寄存器中的操作数
AX
16 位
AH
AL
BX
16 位
BH
BL
CX
16 位
CH
CL
DX
DH
16 位
DL
SI
DI
只能存放字操作数
BP
SP
CS
DS
段寄存器存放
当前操作数的
ES
段基地址
SS
不允许将立即数传送到段寄存器
3、存储器操作数
存储器操作数
类型 存储单元个数
字节
1

2
双字
4
指令中实际给出的是存储单元的地址,用[],如[1000H]、 [BX]、[SI+10]
部分8088常用指令
指令类型
助记符
数 数据传送 MOV,PUSH/POP,XCHG等
据 传
地址传送 LEA,LDS,LES
送 输入输出,ADC,INC
术 运
减法 SUB,SBB,DEC,NEG,CMP
算 乘/除法 MUL,IMUL,DIV,IDIV
逻辑
AND,OR,NOT,XOR,TEST
SS SS
允许超越的段寄存器 CS,ES,SS CS,ES,SS
CS,DS,ES
段内偏移来源
IP 由寻址方式指定
SI DI SP 由寻址方式指定
偏移地址
存储器操作数的偏移地址(也称有效地址 )可以通过不同的寻址方式由指令给出。
例:若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令的结果是一样的。
MOV AL, [2A00H] MOV AL, [BX+0A00H] MOV AL, [BX][SI] MOV AL, [DI]
§ 3.1.2 指令的执行时间
一条指令的执行时间=∑
单位用时钟周期数表示
取指令 取操作数 执行指令 传送结果
常用指令执行时间
指令
所需时钟周期数
MOV 累加器到内存
10(14)
相关文档
最新文档