微机接口ppt课件第3章8086指令系统(上).ppt
《微机接口ppt课件第3章8086指令系统(上).ppt》由会员分享,可在线阅读,更多相关《微机接口ppt课件第3章8086指令系统(上).ppt(168页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理与接口技术微机原理与接口技术作者:徐建平作者:徐建平 成贵学成贵学第第3 3章章 80868086指令系统(上)指令系统(上)n计算机能识别并执行的基本操作命令称为计算机能识别并执行的基本操作命令称为计算机指令计算机指令n计算机所能执行的全部指令的集合称为指计算机所能执行的全部指令的集合称为指令系统令系统n而程序由按一定顺序排列的指令序列构成。而程序由按一定顺序排列的指令序列构成。【本章内容提要本章内容提要】n掌握掌握8086指令的分类与格式指令的分类与格式n掌握掌握8086指令中操作数和程序转移地址指令中操作数和程序转移地址的寻址方式的寻址方式n掌握调试程序掌握调试程序DEBUG的使
2、用方法的使用方法n掌握数据传送类指令的功能与用法掌握数据传送类指令的功能与用法n掌握算术运算与逻辑运算类指令的功能掌握算术运算与逻辑运算类指令的功能与用法与用法3.1 8086指令系统入门指令系统入门3.1.1 指令分类指令分类 n计算机指令计算机指令是指计算机所能识别并执行是指计算机所能识别并执行的基本操作命令,这些全部操作命令的的基本操作命令,这些全部操作命令的集合被称为计算机的集合被称为计算机的指令系统指令系统。n对于不同类型的微处理器,其指令系统对于不同类型的微处理器,其指令系统各不相同。各不相同。8086指令系统是指令系统是80 x86系列系列微处理器的基础指令系统,微处理器的基础指
3、令系统,8086后续微后续微处理器均继承了此指令系统,并在此基处理器均继承了此指令系统,并在此基础上进行了扩充。础上进行了扩充。8086指令系统按功能可以分为指令系统按功能可以分为六大类,分别是:六大类,分别是:n数据传送类指令数据传送类指令n算术运算类指令算术运算类指令n逻辑运算类指令逻辑运算类指令n字符串操作指令字符串操作指令n处理器控制类指令处理器控制类指令n程序控制类指令程序控制类指令n由于计算机指令实质上均为二进制形式,由于计算机指令实质上均为二进制形式,其缺点是不便于理解和记忆。其缺点是不便于理解和记忆。n为此,人们发明了助记符来辅助记忆和为此,人们发明了助记符来辅助记忆和书写指令
4、,这就是汇编指令。书写指令,这就是汇编指令。3.1.2 3.1.2 指令格式指令格式n计算机指令通常由操作码和操作数计算机指令通常由操作码和操作数两部分组成,其格式如下:两部分组成,其格式如下:操作码操作码 目的操作数目的操作数,源操作数源操作数 n在在8086指令系统中,操作码的长度指令系统中,操作码的长度一般为一般为12个字节,指令的总长度个字节,指令的总长度一般为一般为16个字节。个字节。n我我们们把把一一条条指指令令中中所所包包含含的的二二进进制制代代码码的的位位数数称称为为指指令令字字长长,它它通通常常是是机机器器字字长的一倍、两倍、多倍或半倍。长的一倍、两倍、多倍或半倍。n另另外外
5、,即即使使对对于于同同一一条条指指令令,由由于于其其操操作作数数寻寻址址方方式式的的不不同同,其其长长度度也也是是变变化化的,这样的指令被称为的,这样的指令被称为不定长指令不定长指令。n反反之之,如如果果某某些些指指令令长长度度始始终终不不变变,我我们则称其为们则称其为定长指令定长指令。3.1.3 3.1.3 操作数寻址操作数寻址n在在8086指令中,操作数可以存放在存指令中,操作数可以存放在存储器、寄存器或指令中。储器、寄存器或指令中。n要执行指令,就要通过操作数存放的地要执行指令,就要通过操作数存放的地址找到操作数,我们把指令中寻找操作址找到操作数,我们把指令中寻找操作数的方式称为数的方式
6、称为寻址方式寻址方式。1 1立即寻址立即寻址n指令中直接给出指令的操作数(跟在操指令中直接给出指令的操作数(跟在操作码的后面),取出指令的同时就可以作码的后面),取出指令的同时就可以获得操作数,这种寻址方式称为获得操作数,这种寻址方式称为立即寻立即寻址址,这种操作数称为,这种操作数称为立即数立即数。【例例3-13-1】2 2寄存器寻址寄存器寻址n操作数存放在某个寄存器内,在指令操作数存放在某个寄存器内,在指令中直接给出寄存器的名字,这种寻址中直接给出寄存器的名字,这种寻址方式称为方式称为寄存器寻址寄存器寻址。n源寄存器和目的寄存器的位数必须一源寄存器和目的寄存器的位数必须一致。例如,致。例如,
7、MOV CL,BX是一条非法是一条非法指令。指令。【例例3-23-2】nMOV AX,BX;源源操操作作数数和和目目的的操操作作数数都都是是寄寄存存器器寻寻址址方方式式,指指令令执行后,执行后,(AX)(BX),BX中的内容不变。中的内容不变。nMOV AL,AH;源源操操作作数数和和目目的的操操作作数数都都是是寄寄存存器器寻寻址址方方式式,指指令令执行后,执行后,;(AL)(AH),AH中的内容不变。中的内容不变。nMOV AX,1234H;目的操作数是寄存器寻址方式目的操作数是寄存器寻址方式3 3直接寻址直接寻址n操作数存放在存储器中,指令中直接给出操作操作数存放在存储器中,指令中直接给出
8、操作数所在存储单元的偏移地址,这种寻址方式称数所在存储单元的偏移地址,这种寻址方式称为为直接寻址直接寻址。n默认情况下,操作数存放在数据段中。要使用默认情况下,操作数存放在数据段中。要使用其他段中操作数,则应在指令中增加段前缀其他段中操作数,则应在指令中增加段前缀(称为段超越),如(称为段超越),如ES:2000H等。等。n寻址时,用于存放操作数的存储单元的物理地寻址时,用于存放操作数的存储单元的物理地址为:段地址址为:段地址16(即左移四位)偏移地(即左移四位)偏移地址。址。【例例3-33-3】MOV AX,2000H;将将DS段偏移量为段偏移量为2000H中内容送入中内容送入AX寄存器寄存
9、器MOV AX,ES:2000H;将将ES段偏移量为段偏移量为2000H中内容送入中内容送入AX n在汇编语言中,经常用符号地址取代数在汇编语言中,经常用符号地址取代数值地址,例如:值地址,例如:MOV AX,BUFFERn表示把表示把BUFFER中存放的数据送入中存放的数据送入AX寄寄存器。另外,该指令也可写成如下形式,存器。另外,该指令也可写成如下形式,二者是等效的。二者是等效的。MOV AX,BUFFERn若指令中指定的寄存器是若指令中指定的寄存器是SI、DI和和BX,则操作数默认存放在当前数据段则操作数默认存放在当前数据段DS中;中;n若指令中指定的寄存器是若指令中指定的寄存器是BP,
10、则操作数,则操作数默认存放在当前堆栈段默认存放在当前堆栈段SS中中【例例3-43-4】n已知:已知:(DS)3000H,(BX)1100H,(31100H)3412H,执行指令:,执行指令:MOV AX,BXn操作数的物理地址为:操作数的物理地址为:(DS)16(BX)3000H161100H31100Hn指令执行后指令执行后(AX)3412H。5 5寄存器相对寻址寄存器相对寻址n操作数存放在存储器中,指令中指定的操作数存放在存储器中,指令中指定的基址或变址寄存器的内容,加上指令中基址或变址寄存器的内容,加上指令中给出的给出的8位或位或16位偏移量作为操作数的位偏移量作为操作数的偏移地址偏移地
11、址,这种寻址方式称为,这种寻址方式称为寄存器相寄存器相对寻址对寻址。n操作数的物理地址为:操作数的物理地址为:段地址段地址16(寄存器寄存器)偏移量。偏移量。【例例3-53-5】n已知:已知:(DS)3000H,(BX)1000H,COUNT2000H,(33000H)13H,(33001H)24H,执行指令:,执行指令:MOV AX,COUNTBXn操作数的物理地址为:操作数的物理地址为:(DS)16(BX)COUNT 3000H161000H2000H 33000Hn指令执行后,指令执行后,(AX)2413H。6 6基址加变址寻址基址加变址寻址n操作数存放在存储器中,指令中操作数存放在存储
12、器中,指令中基址寄存器基址寄存器(BX或或BP)的内容加上)的内容加上变址寄存器变址寄存器(SI或或DI)的内容作为操作数的偏移地址,这种寻)的内容作为操作数的偏移地址,这种寻址方式称为址方式称为基址加变址寻址基址加变址寻址。n操作数的物理地址为:段地址操作数的物理地址为:段地址16(基址(基址寄存器)(变址寄存器)。寄存器)(变址寄存器)。【例例3-6】n已知:已知:(DS)3000H,(BX)1000H,(DI)2000H,(33000H)13H,(33001H)24H,执行指令:,执行指令:MOV AX,BXDIn操作数的物理地址为:操作数的物理地址为:(DS)16(BX)(DI)300
13、0H161000H2000H 33000Hn指令执行后,指令执行后,(AX)2413H。7 7相对基址加变址寻址相对基址加变址寻址n操作数存放在存储器中,指令中操作数存放在存储器中,指令中基址寄存器基址寄存器(BX或或BP)的内容加上)的内容加上变址寄存器变址寄存器(SI或或DI)的内容,再加上指令中给出的)的内容,再加上指令中给出的偏移量偏移量作作为操作数的偏移地址,这种寻址方式称为为操作数的偏移地址,这种寻址方式称为相对相对基址加变址寻址基址加变址寻址。n操作数的物理地址为:操作数的物理地址为:段地址段地址16(基址寄存器)(变址寄存(基址寄存器)(变址寄存器)偏移量。器)偏移量。【例例3
14、-7】n已知:已知:(DS)3000H,(BX)1000H,(DI)2000H,COUNT100H,(33100H)12H,(33101H)34H,指令:,指令:MOV AX,COUNTBXDIn操作数的物理地址为:操作数的物理地址为:(DS)16COUNT(BX)(DI)3000H16100H1000H2000H 33100Hn指令执行后,指令执行后,(AX)3412H。3.1.4 3.1.4 程序转移地址寻址程序转移地址寻址n8086指令系统中,有一类指令是用来控制指令系统中,有一类指令是用来控制程序执行顺序的。程序执行顺序的。n这些指令的操作数实际上是程序转移地址。这些指令的操作数实际上
15、是程序转移地址。n对程序转移地址的寻址方式有以下对程序转移地址的寻址方式有以下4种。种。1 1段内直接寻址段内直接寻址n指令中直接给出程序转移地址(指令中直接给出程序转移地址(8位或位或16位位偏移量)的寻址方式称为偏移量)的寻址方式称为段内直接寻址段内直接寻址。n程序顺序执行时,当前要执行的指令的地址程序顺序执行时,当前要执行的指令的地址为:为:CS:IP,n即其物理地址为即其物理地址为(CS)16(IP)。n执行转移指令后,执行转移指令后,CS寄存器中的内容不变,寄存器中的内容不变,IP寄存器中的内容被更新为寄存器中的内容被更新为IP寄存器原值寄存器原值加加上上指令中给出的指令中给出的偏移
16、量偏移量,作为指令的新偏移,作为指令的新偏移地址。地址。【例例3-8】n已知:已知:(CS)3000H,(IP)2000H,OPR的偏移量为的偏移量为0100H,执行指令:,执行指令:JMP NEAR PTR OPRn如下图所示,执行指令后,如下图所示,执行指令后,n(CS)3000Hn(IP)2003H0100H2103H nNEAR PTR用来指明的偏移量为用来指明的偏移量为16位,称为位,称为近转移,其转移范围为近转移,其转移范围为8000H7FFFH。nNEAR PTR可省略。可省略。n指令中的偏移量指的是当前指令中的偏移量指的是当前IP值(即值(即JMP指指令的下一条指令)到目标地址
17、之间的距离,令的下一条指令)到目标地址之间的距离,因此,执行因此,执行JMP指令时,当前(指令时,当前(IP)2003H。2 2段内间接寻址段内间接寻址n将存放在指令中指定的将存放在指令中指定的16位寄存器的位寄存器的内容内容或或存储器中字存储单元的存储器中字存储单元的内容内容赋于赋于IP,CS的的内容保持不变,内容保持不变,n这种寻址方式称为这种寻址方式称为段内间接寻址段内间接寻址。【例例3-9】n已知:已知:(CS)3000H,(DS)=4000H,(IP)1000H,(BX)0100H,(40103H)=2000H,执行指令:,执行指令:JMP WORD PTR 3BXn此时,程序转移地
18、址存放在存储器中。如图此时,程序转移地址存放在存储器中。如图3-4所示。所示。n执行指令后,存放偏移地址的物理地址为:执行指令后,存放偏移地址的物理地址为:DS:BX+3HDS:3H0100HDS:0103H40103Hn因此,因此,(IP)2000H,(CS)3000H。n指令:指令:JMP CX 表示执行指令后将表示执行指令后将CX中的中的内容赋于内容赋于IP,而,而CS中的内容不变。中的内容不变。nWORD PTR表明存储器操作数为一个字单表明存储器操作数为一个字单元(元(16位)。位)。3 3段间直接寻址段间直接寻址n指令中直接给出指令中直接给出16位段地址和位段地址和16位偏移地位偏
19、移地址。址。n指令中的段地址(操作码后第二个字)作指令中的段地址(操作码后第二个字)作为当前指令的段地址,指令中的偏移地址为当前指令的段地址,指令中的偏移地址(操作码后第一个字)被赋给(操作码后第一个字)被赋给IP寄存器作寄存器作为指令的偏移地址。为指令的偏移地址。nFAR PTR表明指令的目标地址在另一个代表明指令的目标地址在另一个代码段中,称为远转移码段中,称为远转移【例例3-10】n已知:已知:(CS)3000H,(IP)0100H,OPR的地址为的地址为4000H:1000H,执行指令:,执行指令:JMP FAR PTR OPRn执行指令后,当前指令的执行指令后,当前指令的(CS)40
20、00H,(IP)1000Hn其物理地址为:其物理地址为:4000H161000H41000H。4 4段间间接寻址段间间接寻址n程序转移的偏移地址和段地址存放在存储器程序转移的偏移地址和段地址存放在存储器中两个连续的字存储单元中。中两个连续的字存储单元中。n其中,第一个字存放偏移地址,被赋于其中,第一个字存放偏移地址,被赋于IP寄寄存器;存器;n第二个字存放段地址,被赋于第二个字存放段地址,被赋于CS寄存器。寄存器。nDWORD PTR表明存储器操作数为双字单元表明存储器操作数为双字单元(32位)。位)。【例例3-11】n已知:已知:(CS)3000H,(IP)0100H,DATA指向的存储单元
21、的内容为指向的存储单元的内容为00H、10H、00H和和40H,执行指令:,执行指令:JMP DWORD PTR DATAn如下图所示,执行指令后,当前指令的如下图所示,执行指令后,当前指令的CS被赋于被赋于4000H,IP被赋于被赋于1000H,n其物理地址为:其物理地址为:4000H161000H41000H。3.1.5 DEBUG的使用的使用标志名标志名设置设置(1)清除清除(0)溢出溢出ovnv方向方向dn(减)(减)up(增)(增)中断中断ei(启用)(启用)di(禁用)(禁用)正负正负ng(负)(负)pl(正)(正)零零zrnz辅助进位辅助进位acna奇偶校验奇偶校验pe(偶校验)
22、(偶校验)po(奇校验)(奇校验)进位进位cync3.2 3.2 数据传送类指令数据传送类指令n数据传送类指令是数据传送类指令是8086指令系统中最基本、指令系统中最基本、使用最频繁的一类指令,其主要功能是将数使用最频繁的一类指令,其主要功能是将数据或地址传送到寄存器或存储单元中。据或地址传送到寄存器或存储单元中。3.2.1 3.2.1 传送指令传送指令n格式:格式:MOV DST,SRCn功能:将源操作数传送给目的操作数。功能:将源操作数传送给目的操作数。n数据传送类指令可以在数据传送类指令可以在CPU内部寄存器、存内部寄存器、存储器与立即数之间进行数据传送,传送方式储器与立即数之间进行数据
23、传送,传送方式如下:如下:在在CPUCPU内部寄存器之间进行内部寄存器之间进行数据传送数据传送n例如,例如,MOV BL,AL MOV BX,AX MOV DS,AX 在在CPUCPU内部寄存器与存储器之内部寄存器与存储器之间进行数据传送间进行数据传送n例如例如:MOV AX,1000HMOV BX,SIBXMOV DATABP,ES 将立即数传送给寄存器将立即数传送给寄存器n例如,例如,MOV AX,1234HMOV SI,1000H 将立即数传送给存储单元将立即数传送给存储单元n例如,例如,nMOV WORD PTR BX,1000H注意:注意:n不允许不允许CS、IP作为目的操作数。作为
24、目的操作数。MOV CS,AX 或者或者 MOV IP,AX(均错均错)n源操作数和目的操作数不能同时为段寄源操作数和目的操作数不能同时为段寄存器。存器。MOV DS,CS (错错)n源操作数和目的操作数的类型必须匹配。源操作数和目的操作数的类型必须匹配。MOV BL,AX (错错)n源操作数和目的操作数不能同时为存源操作数和目的操作数不能同时为存储器单元。储器单元。MOV 2000,3000n立即数只能作为源操作数,不能作为立即数只能作为源操作数,不能作为目的操作数。目的操作数。n不允许直接向段寄存器传送立即数。不允许直接向段寄存器传送立即数。n该指令不影响标志位。该指令不影响标志位。【例例
25、3-12】n指出下列指令中的错误指出下列指令中的错误n(1)MOV DI,SIn(2)MOV DS,1000Hn(3)MOV 2000H,AX3.2.2 堆栈操作指令堆栈操作指令n堆栈堆栈是存储器中按照是存储器中按照“后进先出后进先出”原则工作原则工作的一个区域的一个区域n最后一个压入堆栈的数据所在的存储单元称最后一个压入堆栈的数据所在的存储单元称为为栈顶栈顶n数据的存入和弹出操作都是在栈顶进行的。数据的存入和弹出操作都是在栈顶进行的。n堆栈位于堆栈段中堆栈位于堆栈段中n在堆栈操作中,段寄存器在堆栈操作中,段寄存器SS指示指示段地址段地址,n堆栈指针寄存器堆栈指针寄存器SP指示指示栈顶栈顶,从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 接口 ppt 课件 8086 指令系统
限制150内