微机原理与接口技术chap3pptConvertor.docx
- 文档编号:25213450
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:39
- 大小:25.76KB
微机原理与接口技术chap3pptConvertor.docx
《微机原理与接口技术chap3pptConvertor.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术chap3pptConvertor.docx(39页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术chap3pptConvertor
1
第三章8086指令系统
1
2
8086指令系统
数据传送类
算术运算类
逻辑运算与移位类
串操作类
控制转移类
处理器类
2
3
第三章8086指令系统
§3.1指令的基本格式
§3.2寻址方式
§3.3指令的执行时间
§3.48086指令系统
§3.5中断类指令和DOS功能调
用
3
4
§3.1指令的基本格式
操作码字段操作数或操作数地址
Op-code
oprand
4
5
指令的助记符格式
操作数2,常被称为源操作数src,它表示参与指令操作的一个对象
操作数1,常被称为目的操作数dest,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果
分号后的内容是对指令的解释
操作码操作数1,操作数2;注释
5
6
§3.1指令的基本格式
操作码OP
LOWDISP或DATA
HIGHDISP或DATA
LOWDATA
HIGHDATA
B1
B2
B3
B4
B5
B6
6
7
3.1指令的基本格式
操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分
操作数是指令执行的参与者,即各种操作的对象
有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数
7
8
指令的助记符格式
操作数2,常被称为源操作数src,它表示参与指令操作的一个对象
操作数1,常被称为目的操作数dest,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果
分号后的内容是对指令的解释
操作码操作数1,操作数2;注释
8
9
每种指令的操作码:
用一个助记符表示(指令功能的英文缩写)
对应着机器指令的一个或多个二进制编码
指令中的操作数:
可以是一个具体的数值
可以是存放数据的寄存器
或指明数据在主存位置的存储器地址
9
10
§3.2寻址方式
固定寻址(InherentAddressing)
立即数寻址(ImmediateAddressing)
寄存器寻址(RegisterAddressing)
存储器寻址(MemoryAddressing)
I/O端口寻址
10
11
§3.2寻址方式
寻找操作数的过程就是操作数的寻址
寻找指令中所需的操作数或操作数地址的方式称为寻址方式
系统设计了多种操作数的来源
直接给出所使用的操作数本身
给出操作数所在的寄存器、存储器或I/O端口的地址
给出操作数所在的寄存器、存储器或I/O端口的地址的计算方法。
11
12
1.固定寻址
指令中的操作数是使用CPU中某个固定的寄存器,该寄存器被隐含于操作码中。
不需要访问存储器,执行速度快
12
13
2.立即数寻址
指令中的操作数直接存放在机器代码中,紧跟在操作码之后
立即数可以是8位、16位或32位数值
立即数寻址方式只允许源操作数为立即数,目标操作数必须是寄存器或存储器
不需要访问存储器,执行速度快
MOVAX,0102H;AX←0102H
13
14
立即数
操作码
低8位
高8位
存储器
MOV操作码
02H
31H
AH
AL
代码段
代码段
立即寻址指令在存储器中的存放形式
AX
指令操作例:
MOVAX,3102H;AX3102H
执行后,(AH)=31H,(AL)=02H
14
15
3.寄存器寻址
操作数存放在CPU的内部寄存器reg中:
8位寄存器r8:
AH、AL、BH、BL、CH、CL、DH、DL
16位寄存器r16:
AX、BX、CX、DX、SI、DI、BP、SP
4个段寄存器seg:
CS、DS、SS、ES
无需访问存储器,执行速度快
源操作数和目的操作数可同时使用寄存器寻址
MOVAX,BX;AX←BX
15
16
AX
SI
2233H
2233H
指令操作例:
MOVSI,AX;SI(AX)
指令执行前:
(AX)=2233H
指令执行后:
(AX)=2233H,(SI)=2233H
16
17
只能存放字操作数
段寄存器存放当前操作数的段基地址
不允许将立即数传送到段寄存器
SI
DI
BP
SP
CS
DS
ES
SS
17
18
4.存储器寻址
8086设计了多种存储器寻址方式
1、直接寻址
2、寄存器间接寻址
3、寄存器相对寻址
4、基址变址寻址
5、相对基址变址寻址
6、串寻址
18
19
(1)直接寻址
指令中直接给出操作数的16位偏移地址
偏移地址也称为有效地址(EA,EffectiveAddress)
默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀
偏移地址也可用符号地址来表示,如AREA等
用中括号包含有效地址,表达存储单元的内容
MOVAX,[2000H];AX←DS:
[2000H]
MOVAX,ES:
[2000H];AX←ES:
[2000H]
19
20
指令操作例:
MOVAX,[3102H]
AL(3102H),AH(3103H)
如果(DS)=2000H,(23012H)=CDH,(23013H)=ABH
则操作数的物理地址为:
20000H+3102H=23102H
指令执行后:
(AX)=ABCDH
MOV操作码
02H
31H
AH
AL
23102H
CDH
ABH
存储器
代码段
数据段
.
.
20
21
(2)寄存器间接寻址
有效地址存放在基址寄存器BX或变址寄存器SI、DI中,默认的段地址在DS段寄存器,可使用段超越前缀改变
MOVAX,[BX];AX←DS:
[BX]
21
22
如果指令中指定的寄存器是BP,则操作数在堆栈段SS中
物理地址=(SS)*16+(BP)
MOV[BP],AX
假设(SS)=1000H,
(BP)=3000H,
(AX)=1234H
22
23
1000H
3000H
SS
BP
13000H
堆栈段
低地址
高地址
MOVAX,[BP]
假设(SS)=1000H,
(BP)=3000H,
(AX)=1234H
物理地址=(SS)*16+(BP)
23
24
指令操作例:
MOVAX,[SI]
若(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H
则指令执行后,(AX)=3344H。
24
25
(3)寄存器相对寻址
有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI
段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变
(BX)
(SI)
(DI)
25
26
MOVAX,[SI+06H];AX←DS:
[SI+06H]
MOVAX,06H[SI]或MOVAX,[SI]06H
物理地址=(SS)*16+(BP)+
DISP8
DISP16
MOVAX,[BP+10H];AX←SS:
[BP+10H]
26
27
指令操作例:
MOVAX,DATA[BX]
若(DS)=6000H,(BX)=1000H,DATA=2A00H,
(63A00H)=66H,(63A01H)=55H
则物理地址=60000H+1000H+2A00H=63A00H
指令执行后:
(AX)=5566H
27
28
操作码
00偏移量低
2A偏移量高
DS6000
BX1000
+DATA2A00
63A00
63A00H
AH
AL
AX
代码段
数据段
.
.
.
.
.
.
.
.
.
66H
55H
MOVAX,DATA[BX]
28
29
(4)基址变址寻址
有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:
段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变
29
30
基址-变址寻址
若操作数的偏移地址:
由基址寄存器(BX或BP)给出——基址寻址方式
由变址寄存器(SI或DI)给出——变址寻址方式
由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。
EA=
(BX)
(BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
30
31
例:
MOVAX,[BX][SI]
MOVAX,[BX+SI]
MOVAX,DS:
[BP][DI]
错误例:
×MOVAX,[BX][BP]
×MOVAX,[DI][SI]
MOVAX,[BX+DI];AX←DS:
[BX+DI]
MOVAX,[BX][DI]
MOVAX,[BP+SI];AX←SS:
[BP+SI]
31
32
83000
操作码
DS8000
BX2000
+SI1000
83000H
AH
AL
AX
代码段
数据段
.
.
.
.
.
.
.
.
.
YY
XX
指令操作例:
MOVAX,[BX][SI]
假定:
(DS)=8000H,(BX)=2000H,SI=1000H
则物理地址=80000H+2000H+1000H=83000H
指令执行后:
(AL)=[83000H]
(AH)=[83001H]
32
33
(5)相对基址变址寻址
有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:
段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变
33
34
MOVAX,[BX+DI+6];AX←DS:
[BX+DI+6]
MOVAX,6[BX+DI]
MOVAX,6[BX][DI]
MOV20H[BP+SI],AX;SS:
[BX+SI+6]←AX
34
35
指令操作例:
MOVAX,DATA[DI][BX]
若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H
则指令执行后(AH)=[83021H],(AL)=[83020H]
83200
83200H
AH
AL
AX
+DATA0200
操作码
代码段
数据段
.
.
.
.
.
.
.
.
.
YY
XX
DS8000
BX2000
DI1000
35
36
(5)串寻址
串寻址方式仅在8086的串指令中使用。
源操作数的逻辑地址为DS:
SI;目的操作数的逻辑地址为ES:
DI。
当执行串指令的重复操作时,根据设定的方向标志(DF),SI和DI会自动调整。
MOVSB;字节串传送
MOVSW;字串传送
36
37
段寄存器使用规则
存储器存取方式
约定段
段跨越
偏移地址
取指令
CS
不允许
IP
堆栈操作
SS
不允许
SP
数据存取
DS
ESSSCS
EA
BP间址、基址数据存取
SS
DSESCS
EA
字符串处理指令的源串
DS
ESCSSS
SI
字符串处理指令目的串
ES
不允许
DI
37
38
注意不允许使用段超越前缀的情况
1、与栈操作有关的指令(PUSH,POP,CALL,RET,
INT,IRET)使用SP作为偏移地址指针,只能使
用SS作为段寄存器
2、串操作指令规定用DS:
SI来指定源数据区,
用ES:
DI来定目的数据区。
段超越前缀只能用于源而不能用于目的,
即SI可更换段寄存器,而DI则只能使用ES
3、指令只能存放在代码段中
38
39
存储器操作数的偏移地址(也称有效地址)可以通过不同的寻址方式由指令给出。
例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,则以下指令的结果是一样的:
MOVAL,[2A00H]
MOVAL,[BX+0A00H]
MOVAL,[BX][SI]
MOVAL,[DI]
39
40
§3.2寻址方式
固定寻址(InherentAddressing)
立即数寻址(ImmediateAddressing)
寄存器寻址(RegisterAddressing)
存储器寻址(MemoryAddressing)
I/O端口寻址
40
41
5.I/O(输入/输出)端口寻址
8086CPU与外设之间通过I/O接口芯片进行联系
一个n位端口实际上是存取数据的一个n为寄存器
端口用专门的IN和OUT指令访问
有两种不同的寻址方式
(1)直接端口寻址
(2)寄存器间接端口寻址
41
42
小结
指令由()和()构成
如何取得操作数——称为()
操作码
操作数
寻址方式
42
43
§3.3指令执行时间
指令执行总时间=基本执行时间+计算有效地
址EA时间+执行总线读/写周期时间
对存储器操作数有效
43
44
计算有效地址的时间因寻址方式不同而不同
寻址方式
时钟周期数
直接寻址
6
寄存器间接寻址
5
寄存器相对间接位移量
9
基址变址寻址
7-8
相对基址变址寻址
11-12
44
45
不同功能的指令基本执行时间不同
指令
寻址方式
时钟周期数
传送MOV
寄存器,寄存器
2
加法ADD
寄存器,寄存器
3
减法SUB
寄存器,寄存器
3
整数乘法IMUL
16位寄存器
128-154
逻辑运算
寄存器,寄存器
3
移位
寄存器移1位
2
45
46
同一指令,寻址方式不同,访问存储器的次数不同,执行时间也不同
寻址方式
时钟
周期数
访问
存储器次数
指令长度(B)
寄存器,寄存器
3
0
2
寄存器,存储器
9+EA
1
2-4
存储器,寄存器
16+EA
2
2-4
寄存器,立即数
4
0
3-4
存储器,立即数
17+EA
2
3-6
累加器,立即数
4
0
2-3
46
47
指令的时/空指标
指令的时间指标:
对同一指令,因寻址方
式不同,执行指令的时间相差甚远
指令的空间指标:
同一类指令使用不同的
寻址方式,其指令的长度也不一样,
即占有的内存的字节数相差也很大
47
48
§3.48086指令系统
1数据传送类指令(DataTransfer)
2算术运算类指令(Arithmatic)
3逻辑运算与位移类指令(Logicandshift)
4串操作类指令(StringManipulation)
5控制转移类指令(ControlJump)
6处理器控制类(ProcessorControl)
包括133条基本指令
基本指令+不同寻址方式+不同的数据形式(字或字节)
=上千条指令
48
49
1.数据传送类指令
数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令
传送指令把数据从一个位置传送到另一个位置
除标志寄存器传送指令外,均不影响标志位
49
50
1.数据传送类指令
功能:
实现寄存器之间
实现寄存器与存储器
实现累加器AX或AL和I/O端口之间
的数据传送
可分为4类
通用传送指令
累加器专用传送指令
地址——目标传送指令
标志传送指令
均含两个操作数
50
51
(1)通用传送指令
提供方便灵活的通用传送操作
有4条指令
(传送指令)MOV
(数据交换指令)XCHG
(堆栈操作指令)PUSH、POP
51
52
功能:
常用来赋值、对数据进行传送、对
数据暂存
①MOV指令
格式:
MOVdst,src;(dst)(src)
即把源操作数的内容送入
目的操作数
说明:
可以进行8位或16位数据的传送
源操作数可为立即数、寄存器、存储器操作数
目的操作数可为寄存器、存储器操作数
52
53
①MOV指令
53
54
MOV指令--通用寄存器传送
MOVAH,AL;AH←AL,字节传送
MOVBVAR,CH;BVAR←CH,字节传送
MOVAX,BX;AX←BX,字传送
MOVDS,AX;DS←AX,字传送
MOV[BX],AL;[BX]←AL,字节传送
寄存器具有明确的字节和字类型
54
55
MOV指令--立即数传送
MOVCL,4;CL←4,字节传送
MOVDX,0FFH;DX←00FFH,字传送
MOVWORDPTR[SI],200H;[SI]←0200H,字传送
MOVBVAR,0AH;字节传送
MOVWVAR,0BBH;字传送
55
56
MOV指令--存储器传送
MOVAL,[BX];AL←DS:
[BX]
MOVDX,[BP];DX←SS:
[BP]
MOVDX,[BP+4];DX←SS:
[BP+4]
MOVES,[SI];ES←DS:
[SI]
不存在存储器向存储器的传送指令
56
57
MOV指令--段寄存器传送
MOV[SI],DS;[SI]←DS
MOVAX,DS;AX←DS
MOVES,AX;ES←AX←DS
对段寄存器的操作不灵活
57
58
MOV指令使用规则:
1)IP不能作目的寄存器
2)两操作数必有一个寄存器,不允许
mem←mem
3)不允许seg←seg
4)立即数不允许作为目的操作数
5)不允许seg←立即数
6)源操作数与目的操作数类型要一致
58
59
几个不能传送的解决办法:
用AX或AL作桥梁
存储器←存储器:
MOVAX,MEM1
MOVMEM2,AX
段寄存器←段寄存器:
MOVAX,DS
MOVES,AX
段寄存器←立即数:
MOVAX,DATA
MOVDS,AX
59
60
②堆栈操作指令
功能:
用于程序保护或恢复数据,或用于转子程序或中断时保护现场和恢复现场
格式:
PUSHsrc
POPdst
堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定
60
61
什么是堆栈?
按“后进先出(LIFO)”方式工作的存储区域。
堆栈以字为单位进行压入弹出操作。
为什么要设置堆栈?
为什么要按“后进先出”方式工作?
参见下图
②堆栈操作指令
61
62
主程序
IP
继续执行
主程序
执行子程序
转子程序
压栈
弹出
返回主程序
主程序
IP
IP(下)
继续执行
主程序
转子程序1
返回主程序
IP’
执行子程序2
转子程序2
返回子程序1
IP’(下)
执行子
程序1
继续执行
子程序1
(a)
(b)
子程序调用示意图
(a)主程序调子程序;(b)子程序嵌套示意图
压栈
弹出
IP(下)
62
63
规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。
堆栈的最高地址叫栈底。
SP
SS
堆栈段
进栈方向
退栈方向
栈底
栈顶
63
64
①压栈指令
PUSHsrc;src为16位操作数
例:
PUSHAX;将AX内容压栈
执行操作:
(SP)-1←高字节AH
(SP)-2←低字节AL
(SP)←(SP)-2
64
65
设(AX)=1020H,执行示意图如图
低地址
存储区
(SS段)
执行前
(AX)=1020
(SP)
存储区
(SS段)
进栈方向
执行后
20
10
(AL)
(AH)
PUSHAX指令执行示意图
(SP)-2
(SP)
高地址
低地址
高地址
(SP)-1
65
66
压栈指令的格式为:
PUSHr(寄存器)
PUSHmem(存储单元)
PUSHseg(段寄存器)
例如:
PUSHAX
PUSH[BX]
PUSHDS
注意进栈方向是高地址向低地址发展。
66
67
②弹出指令
POPdst
例:
POPBX;将栈顶内容弹至BX
执行操作:
(BL)←(SP)
(BH)←(SP)+1
(SP)←(SP)+2
67
68
POPBX的执行示意图如下图所示
低地址
存储区
(SS段)
出栈方向
执行前
20
10
POPBX指令执行示意图
(SP)
存储区
(SS段)
执行后
(BX)=1020
(SP)
(SP)+1
(SP)+2
BX
20
10
高地址
低地址
高地址
68
69
堆栈指令使用时应注意几点:
堆栈操作总是按字进行,不允许对字节操作
不能从栈顶弹出一个字给CS
堆栈指针为SS:
SP,SP永远指向栈顶
SP自动进行增减量(-2,+2)
有一个操作数是隐含的,该操作数就是(SP)指示的栈顶存储单元
进行堆栈操作时,遵循“先进后出”原则
69
70
例:
有一主程序调用一子程序,子程序中会用到AX、BX、CX、DX,为了使主程序中这些寄存器内容不被迫坏,进入子程序是应先入栈保护,子程序执行完之后,再出栈恢复原来的数据。
试写出子程序中保护现场和恢复现场的程序段
70
71
③交换指令
功能:
实现寄存器之间
寄存器与存储单元之间
内容(字或字节)的交换
格式:
XCHGOPR1,OPR2;(OPR1OPR2)
71
72
要求:
两操作数中必须有一个在寄存器中;不能同时为存储器操作数
操作数不能为段寄存器和立即数;
源和目地操作数类型要一致。
72
73
(2)累加器专用传送指令
累加器是数据传输的核心
有3条指令
IN(输入指令)
OUT(输出指令)
XLAT(换码指令)
73
74
①输入输出(I/O)指令
只限于用累加器AL或AX来传送信息。
按指令长度可分为长格式或短格式
功能:
(累加器)←→I/O端口
输入指令IN
格式:
INacc,PORT;PORT端口号0~255
INacc,DX;DX表示的端口范围达64K
例:
INAL,80H;(AL)←(80H端口)
INAL,DX;(AL)←((DX))
74
75
例:
OUT68H,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 chap3pptConvertor