微机原理第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指令格式
  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)
相关文档
最新文档