微机原理第3章完整版--戴模板

上传人:今*** 文档编号:107831097 上传时间:2019-10-21 格式:PPT 页数:207 大小:2.19MB
返回 下载 相关 举报
微机原理第3章完整版--戴模板_第1页
第1页 / 共207页
微机原理第3章完整版--戴模板_第2页
第2页 / 共207页
微机原理第3章完整版--戴模板_第3页
第3页 / 共207页
微机原理第3章完整版--戴模板_第4页
第4页 / 共207页
微机原理第3章完整版--戴模板_第5页
第5页 / 共207页
点击查看更多>>
资源描述

《微机原理第3章完整版--戴模板》由会员分享,可在线阅读,更多相关《微机原理第3章完整版--戴模板(207页珍藏版)》请在金锄头文库上搜索。

1、戴小文 邮箱:xwdai678,第三章 8086/8088的寻址方式和指令系统,2,本章内容,3,第一节 指令的基本格式,机器指令:以二进制数即机器码形式存在的指令,操作码(OP)指明计算机所要执行的操作类型。,一、机器指令的基本格式,操作数(OD)指明指令操作对象或操作对象的 地址信息。,机器指令基本格式:,4,二、8086/8088符号指令的书写格式,符号指令:用指令助记符来书写的指令,与机器码指令一一对应。,注意:操作数字段可以是操作数本身,也可以是操作数地址,或者操作数地址的运算方法,还可以是指向操作数地址的指针或其它的有关操作数的信息。,5,目的操作数(dst)、源操作数(src),

2、操作数的分类:,8位操作数、16位操作数,操作数的数量:,0个、1个、2个,操作数的可能存放位置:,立即数,寄存器操作数,存储器操作数,二、8086/8088符号指令的书写格式,6,第二节 8086/8088的寻址方式,注意:要说明一条指令为何种寻址方式,应就目的操作数和源操作数分别加以说明。,指令的寻址方式分类:,7,例如:MOV AX, 1000H,操作数直接包含在指令中,它是一个8位或16位的常数,也叫立即数。立即数作为指令的一部分,紧跟在操作码之后,存放在代码段内。,一、立即数寻址,注意:在任何指令中,目的操作数都不能采用立即数寻址方式。,8,立即数寻址方式的特点:,执行速度快 主要用

3、来给寄存器或存储器赋初值。,例如: MOV SS , AX,操作数包含在CPU内部的8位或16位寄存器中, 指令直接给出寄存器的名称。,二、寄存器寻址,16位寄存器:AX,BX,CX,DX,SI,DI,SPBP,8位寄存器:AH, AL,BH,BL,CH,CL,DH,DL,9,源操作数的长度必须与目的操作数一致,否则会出错。,例如: MOV AX , BL,注意:, CS和IP不能做目的操作数。,例如: MOV CS,AX, 若源操作数为立即寻址,则目的操作数不能是段寄存器。,例如: MOV DS,1234H,寄存器寻址方式的特点:执行速度快,10,三、固定(隐含)寻址, PUSH DS,例如

4、:目的操作数为固定寻址的两个例子:, MUL BL,某些指令的操作数有固定的存放位置(寄存器或内存中),且其存放位置的信息被隐含在指令中。,另如:DAA、POP DX、PUSHF等,11,四、存储器寻址,操作数一般位于代码段之外的数据段、堆栈段或附加段的存储器中,指令中给出的是存储器单元的地址或产生存储器单元地址的信息。,存储器寻址的特点:,段基值一般不直接在指令中给出,而采用默认规定;,指令中采用逻辑地址来寻址操作数;,指令中一般只给出有效地址(EA)或其计算方法;,所寻址单元的物理地址,12,操作数所在内存单元的16位有效地址(EA)直接由指令给出。有效地址紧跟在操作码之后存放在代码段中;

5、如果没有段超越前缀,则操作数本身默认位于数据段,段基值在DS中;否则位于段超越前缀指定的段中。,1. 直接寻址,若要强制指定操作数所在的段,可采用段超越前缀。,EA2000H,PA16DS2000H,则,四、存储器寻址,13,EA2000H,PA16DS2000H,则,EA2000H,PA16ES2000H,则,当操作数位于数据段以外的其它段时,应在操作数地址前使用段超越前缀指出段寄存器名。,四、存储器寻址,14,MOV AX,2000H指令的解释过程:,BIU取指令机器码A1H、00H、20H,EU分析操作码A1H后得知本指令功能为直接寻址的数据传送指令;,BIU计算操作数所在内存单元的物理

6、地址PA16DSEA, BIU执行读操作,从PA地址单元取得数据送到AX寄存器。,四、存储器寻址,15, 在直接寻址方式下,默认操作数位于数据段中,缺省的段基值由DS给出。,注意:,PA=16 DS +AREA2, 在小汇编语言程序中,有效地址EA用数值表示,被包括在方括号 之中,称为数值地址;在宏汇编语言程序中,有效地址用符号表示,称其为符号地址。,例如:MOV AX,AREA2;,四、存储器寻址,16,直接寻址方式常用于寻址存储器中的单个操作数。,操作数的有效地址EA为基址寄存器BX、BP或变址寄存器SI、DI中的任一个寄存器的内容,称这四个寄存器为间址寄存器 。,2. 寄存器间接寻址,四

7、、存储器寻址,17, 当指令指定BX、SI、DI为间址寄存器时,则操作数在数据段中,DS中内容为段基值。操作数的物理地址为:, 指令中若指定BP为间址寄存器,则操作数在堆栈段中。这种情况下,用SS寄存器内容作段基值,操作数的物理地址为:,PA16SSBP,段基值的确定采用默认规定:,四、存储器寻址,18,例如:MOV AX, SI ;,PA16DSSI,四、存储器寻址,19,在指令中,也可指定段超越前缀来取得其它段中的操作数。,注意:,例如:MOV AX,ES:BX,采用寄存器间接寻址方式,可以通过改变间址寄存器BX、BP、SI、DI中的内容,来对一段地址连续的存储器单元进行存取操作。因此,此

8、方式常用于寻址一维数组或表格。,在处理数组时,SI常用于源数组的变址寻址;DI则用于目的数组的变址寻址。,四、存储器寻址,20,在指令中,也可指定段超越前缀来取得其它段中的操作数。,注意:,例如:MOV AX,ES:BX,采用寄存器间接寻址方式,可以通过改变间址寄存器BX、BP、SI、DI中的内容,来对一段地址连续的存储器单元进行存取操作。因此,此方式常用于寻址一维数组或表格。,在处理数组时,SI常用于源数组的变址寻址;DI则用于目的数组的变址寻址。,四、存储器寻址,21,3. 寄存器相对寻址,指定由间址寄存器BX,BP,SI,DI的内容及一个8位或16位的位移量(DISP)共同进行间接寻址,

9、操作数的有效地址EA等于间址寄存器内容和位移量之和,结果按16位归算,即,22, 指令指定BX、SI、DI为间址寄存器时,则操作数在数据段中,用DS寄存器中内容做段基值。操作数的物理地址为:, 指令中若指定BP为间址寄存器,则操作数在堆栈段中。这种情况下,用SS寄存器中内容作段基值,操作数的物理地址为:,段基值的确定采用默认规定 :,23,例如 MOV AX,AREASI ;位移量用符号AREA代表的值表示。,则 PA=DS16+AREA+SI,其寻址的示意图如下图所示:,24,而 MOV AX,AREABP;,PA=SS16+AREA+BP,采用寄存相对寻址的指令,也可使用段超越前缀。,注意

10、:,例如: MOV DL,DS:COUNTBP,寄存器相对寻址通常也用来访问一段地址连续的存储器单元(如数组)中的元素,其中位移量用于定位数组的起点,间址寄存器的值用于选择数组中的某个元素。,25,4. 基址变址寻址,段基值的确定采用默认规定:,当用BX为基址寄存器时:,存储器操作数的有效地址EA由指定的一个基址寄存器(BX或BP)和一个变址寄存器( SI或DI)的内容之和确定,结果按16位归算,即,26,例如: MOV AX,BXSI,或写为: MOV AX,BX+SI,例如 DS2000H,BX0020H,SI10FEH,,则,EA BXSI 0020H10FEH,PA2000H16EA2

11、111EH,111EH,27,当用BP为基址寄存器时,例如: MOV AX,BPSI,或写为: MOV AX,BP+SI,则 EA BP+SI,PASS16EA,28, BX可与SI或DI组合,BP也可与SI或DI组合,但BX不可与BP组合, SI不可与DI组合。即不允许将两个基址寄存器和两个变址寄存器组合在一起寻址。, 基址变址寻址方式同样适合数组或表格的处理,由于基址和变址寄存器中的内容都可以修改,因而在处理二维数组时特别方便。,注意:,例如: MOV AX,BXBP,MOV AX,SIDI, 基址变址寻址方式也可使用段超越前缀;,例如: MOV CX,ES:BXSI,29,5. 相对的基

12、址变址寻址,在基址变址寻址基础上,再加上个8位或16位的位移量,共同确定有效地址EA,其他规定与基址变址寻址方式相同。其物理地址计算公式如下:,或:,30,例如: MOV AX,AREABPSI,或写为: MOV AX,AREA BPSI,也可写为: MOV AX,BXSPAREA,若设SS4000H,BP1000H,SI2000H,AREA0204H,则源操作数的物理地址为:,PA40000H(1000H2000H0204H) 43204H,显然,寻址的是堆栈段;,31,MOV BP,SP MOV AX,BP ;寻址栈顶单元 或MOV AX,DISPBP ;寻址栈中其他单元,PUSH、POP

13、;寻址栈顶单元,存储器寻址:,固定寻址:,注意: 对于堆栈段的寻址,有两种方法:,或MOV AX,DISPBPSI,五、固定寻址,32,数据串操作指令所采用的寻址方式,应用了一种隐含的变址寄存器寻址。用源变址寄存器SI寻址源串,用目的变址寄存器DI寻址目的串。,MOVSB ;隐含使用SI和DI分别指向源串和目的串,实现字节串的传送 MOVSW ;隐含使用SI和DI指向源串和目的串,实现字串的传送,例如:,6. 串寻址,五、固定寻址,33,当8086采用独立编址的I/O端口时,可有64K个字节端口或32K个字端口,用专门的IN和OUT指令访问。I/O端口寻址只用于这两种指令中。,直接端口寻址方式

14、能够寻址的端口地址范围为00H FFH,端口数为0255个。,又称为长格式的I/O指令。,1. 直接端口寻址,六、I/O端口寻址,34,IN AL,50H;字节输入指令,将50H端口的字节输入到AL。 IN AX,60H;字输入指令,将60H端口的数据输入到AL,61H端口的数据输入到AH。,例如:,六、I/O端口寻址,35,2. 寄存器间接端口寻址,寄存器间接端口寻址方式能够寻址的端口地址范围为00000FFFFH,端口数为216个。当端口地址256时,只能采用寄存器间接端口寻址。,又称为短格式的I/O指令。,先把端口号放到寄存器DX中,然后再进行间接寻址。,六、I/O端口寻址,36,例如:

15、,MOV DX,383H ;将端口号383H放入DX。,OUT DX,AL;将AL中的内容输出到DX所指 的端口(383H)中。,六、I/O端口寻址,37,1. 在未加段超越前缀时,方括号 内若包含BP,则隐含段寄存器为SS,否则为DS。,2. 只有BX、BP、SI、DI这四个寄存器可以出现在 内,其他寄存器不能。,3. 方括号有相加的含义,下面几种写法都是等价的:,七、8086CPU寻址方式小结,38,4. 一条指令中的源操作数与目的操作数可使用不同的寻址方式,所以要说明一条指令的寻址方式,需就源操作数、目的操作数分别加以说明。,5.若操作数为存储器操作数,在不太清楚它为那一小类时,可统称为存储器寻址方式,并写出其EA和PA。,39, 数据传送类; 算术运算类; 逻辑运算与移位类; 串操作类; 控制转移类; 处理器控制类。,第三节 8086/8088指令系统,8086/8088指令系统包含133条基本指令这些指令按功能可分为六类:,40,一些符号的含义:,R 通用寄存器。,如果是8位操作,则表示是AH、AL、BH、BL、CH、CL、DH、DL; 若是16位操作,则表示是AX、BX、CX、DX、SP、BP、SI、DI。,M 存储器操作数。 port 输入输出(I/O)端口,端口号255。,段R 段寄存器CS、DS、ES、SS。,41,Im 8位或16位立即数。 src

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号