【教学课件】第3章80x86指令系统和寻址方式.ppt
《【教学课件】第3章80x86指令系统和寻址方式.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章80x86指令系统和寻址方式.ppt(148页珍藏版)》请在三一办公上搜索。
1、1,第3章 80 x86指令系统和寻址方式,教学要求:掌握一般指令系统的基本概念:指令格式、功能和注意事项。重点掌握8086/8088指令系统中,各指令的格式、寻址方式、指令类型。3.了解其他(奔腾等)的寻址方式和指令类型。,2,3.1 指令系统的基本概念,计算机的指令系统就是指该计算机能够执行的全部指令的集合。每种计算机都有它支持的指令集合。16位8086指令系统是整个Intel 80 x86 系列微处理器指令系统的基础。,3.1.1 指令系统,3,操作码 说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。,指令由操作码和操作数两部分组成。,操作数 是指
2、令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数,通常称为一地址指令、二地址指令、三,3.1.2 指令格式,4,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。指令对标志的影响该指令执行后是否对各个标志位(OV、Z、C、P等)有影响,以及如何影响。,3.1.3 学习指令的注意事项,5,3.2 80 x86寻址方式,操作数可以跟随在指令操作码之后,称为立即数;操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数。绝大多数的操作数存
3、放在内存储器中,称为存储器操作数。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。,3.2.1 寻址、寻址方式的概念,寻址就是寻找操作数的地址。,寻址方式就是寻找操作数的方法。,6,指令助记符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令确定,可以没有操作数,也可以有一个、二个或三个操作数。,3.2.2 80X86的指令格式,指令助记符 操作数1,操作数2,操作数3;注释,7,3.2.3 与数据有关的寻址方式,以 MOV 指令为例:立即寻址 MOV AX,3069H寄存器寻址 MOV AL,BH直接寻址 MOV AX,2000H
4、寄存器间接寻址 MOV AX,BX 寄存器相对寻址 MOV AX,COUNT SI 基址变址寻址 MOV AX,BP DI 相对基址变址寻址 MOV AX,MASK BX SI,8,1)立即寻址方式,图形表示:,定义:操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数),功能:操作数存放在存储器,指令下一单元的内容为立即操作数n。,9,【例3.1】MOV AX,4576H 执行后(AX)=?,OP,76H,45H,76,45,该例中源操作数为立即寻址方式,立即数为4576H,
5、存放在指令的下一单元。,执行:4576HAX,执行后:(AX)=4576H,10,2)寄存器寻址方式,定义:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助记符)的寻址方式称为寄存器寻址方式。,汇编格式:R(其中R表示寄存器名,如AX、BX等。),功能:操作数直接存放在寄存器R中。,图形表示:,11,指令中可以引用的寄存器及其符号名称如下:8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;,注:由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存
6、器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。,12,【例3.2】下列程序执行后,(AX)=?,(BX)=?MOV AX,1234H MOV BX,5678H ADD AX,BX,执行:1234HAX,执行后:(AX)=68ACH,(BX)=5678H,5678HBX,(AX)+(BX)AX,13,3)直接寻址方式,定义:指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。,汇编格式:含有变量的地址表达式
7、。,功能:指令下一字单元的内容是操作数的偏移地址EA。,图形表示:,14,【例3.3】执行指令:MOV BX,1234H 设(DS)=2000H。执行后:(BX)=?,34H,12H,执行:(21234H)BX,执行后:(BX)=5213H,13,52,15,在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。例如:MOVES:1000H,AX,16,注意:立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号“”,“”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX
8、,VARW,其中,VARW是内存字变量。试比较下列指令中源操作数的寻址方式(VARW是内存字变量):,作业,17,4)寄存器间接寻址方式,定 义:操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。,汇编格式:R,功 能:操作数存放在存储器,寄存器R存放操作数的偏移地址EA。,图形表示:,18,【例3.4】假设有指令:MOV BX,DI,在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?,解:寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应
9、由DS和DI的值形成,即:PA=(DS)*16+DI=1000H*16+2345H=12345H。,该指令的执行效果是:把从物理地址为12345H开始的一个字的值传送给BX。,43,54,19,在不使用段超越前缀的情况下,有下列规定:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。该寻址方式物理地址的计算方法如下:BX 物理地址PA=16DS+SI DI或 物理地址PA=16SS+BP,20,作业教材P107 3.1 3.2 3.4 1)2)3),21,5.寄存器相对寻址方式,定 义:操作数在存储器中,其有效地
10、址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。汇编格式:XR(X表示位移量,是8位或16位二进制补码表示的有符号数)功 能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。图形表示如下:,22,10000H,12345H,DS,CS,10000H,12345H,23,【例3.5】假设指令:MOV BX,SI+100H,在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)*
11、16+EA=1000H*16+2445H=12445H。所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。,24,6.基址变址寻址方式,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。汇编格式:BR+IR功 能:操作数存放在存储器,BR的内容加IR的内容是操作数的偏移地址EA。图形表示:,25,【例3.6】假设指令:MOV BX,BX+SI,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么?解:操作数的物理地
12、址PA为:PA=(DS)*16+(BX)+(SI)=1000H*16+2100H+0011H=12111H所以,该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。,26,7.相对基址变址寻址方式,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。汇编格式:X BR+IR功 能:操作数存放在存储器,BR内容加IR内容加位移量X是操作数的偏移地址EA。图形表示:,存储器,27,【例3.7】假设指令:MOV AX,BX+SI+200H,在执行时,(DS)=1000H,(BX)=2100H,
13、(SI)=0010H,内存单元12310H的内容为1234H。问该指令执行后,AX的值是什么?解:该操作数的物理地址应由DS和EA的值形成,即:PA=12310H所以,该指令的执行效果是:把从物理地址为12310H开始的一个字的值传送给AX。,28,跨段越问题,凡是使用寄存器为BX、SI、DI时,其默认段为DS,使用BP时,默认段为SS。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。汇编格式:段寄存器名:操作数地址。功能:冒号“:”之前的段寄存器名指明操作数所在的段。【例3.8】MOV AX,DS:BP MOV CX,SS:SI 该例中,
14、DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为:PA1=(DS)左移4位+BP PA2=(SS)左移4位+SI,29,3.1.2 与转移地址有关的寻址方式,用来确定转移指令及转子(call)指令的转向地址。转移地址是由各种寻址方式得到的有效地址和段地址相加而成的,有效地址存入IP寄存器中,段地址指定为CS段寄存器内容。段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLE BX 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWO
15、RD PTR BX,30,(1)段内直接寻址,转向的有效地址=当前(IP)+位移量(8bit/16bit),31,【例3.8】(1)JMP SHORT QUEST 其中QUEST表示转移的符号地址,操作符SHORT表示是个8位带符号数,数的范围是80H 7FH,即-128+127。它只能相对于当前IP(转移指令的下一条指令的首地址)所指的位置作-128+127范围内跳转,所以称为短跳转。(2)JMP NEAR PTR PROGA 其中PROGA表示转移的符号地址,操作符NEAR PRT表示是个16位带符号数,数的范围是8000H 7FFFH,即-32768+32767。它只能相对于当前IP所指
16、的位置作-32768+32767范围内跳转,所以称为近跳转。,32,(2)段内间接寻址,转向的有效地址是一个寄存器或存储单元的内容。可用除立即数以外的任何一种数据寻址方式得到,所得到的转向的有效地址取代IP寄存器的内容。,33,【例3.9】已知 TABLE=20A2H,(BX)=1256H,(SI)=528EH,(DS)=2000H,(232F8H)=3280H,(264E4H)=2450H JMP BX;(IP)=1256H JMP WORD PTR TABLEBX;(IP)=3280H JMP WORD PTR BXSI;(IP)=2450H,34,(3)段间直接寻址,用指令中提供的转向段
17、地址和偏移地址取代CS 和 IP。,35,【例3.9】JMPFAR PTR NEXTROUNT,32,EA,01,00,10,10,CS=0000H,CS,00000,02000,IP,IP=2000H,CS,CS=1000H,NEXTROUNT,IP=0132H,10132,10000,新IP,新CS,36,(4)段间间接寻址,用存储器中的两个相继字的内容取代CS 和 IP,存储单元的地址可用存储器寻址方式得到。,37,【例3.10】JMPDWORD PTR INTERS+BX 如DS=3000H,BX=1200H,INTERS=0020H,则存储单元的物理地址PA=30000+0020+1
18、200=31200H 指令执行前,CS=0000H,IP=1000H,(31220H)=40H,(31221)=01H,(31222H)=00H,(31223)=10H。指令执行后,CS=1000H,IP=0140H,(31220H)=40H,(31221)=01H,(31222H)=00H,(31223)=10H。,38,指令存储和执行情况:,39,3.2 程序占有的空间和执行时间,40,3.80 x86的指令系统,80X86指令系统分为以下6组:数据传送指令 串处理指令 算术指令 控制转移指令 逻辑指令 处理机控制与杂项操作指令 在学习汇编指令时,指令的功能是我们学习和掌握的重点,但要准确
19、、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。因此,对指令要掌握以下几个方面内容:指令操作数的寻址方式;指令对标志位的影响、标志位对指令的影响;指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令。,41,3.数据传送指令,数据传送指令负责把数据、地址或立即数传送到寄存器、存储器或端口号寄存器。它相对于高级语言里的赋值语句。通用数据传送:MOV PUSH POP 累加器专用传送(输入输出):IN OUT XLAT地址传送:LEA LDS LES标志寄存器传送:LAHF SAHF PUSHF POPF类型转换指令:CBW CWD,42,MOV 传送指令,格 式:MO
20、V Reg/Mem,Reg/Mem/Imm 其中:RegRegister(寄存器),MemMemory(存储器),ImmImmediate(立即数),它们可以是8位、16位。功 能:指令的功能是把源操作数(第二操作数)的值传给目的操作数(第一操作数)。指令执行后,目的操作数的值被改变,而源操作数的值不变。在存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。,43,在汇编语言中,主要的数据传送方式如下图所示。虽然一条MOV指令能实现其中大多数的数据传送方式,但也存在MOV指令不能实现的传送方式。,44,对MOV指令有以下几条具体规定,其中有些规定对其它指令也同样有
21、效。(1)两个操作数的数据类型要相同,要同为8位、16位,如:MOV BL,AX等是不正确的;(2)两个操作数不能同时为段寄存器,如:MOV ES,DS等;(3)代码段寄存器CS不能为目的操作数,但可作为源操作数,如:指令MOV CS,AX等不正确,但指令MOV AX,CS等是正确的;(4)立即数不能直接传给段寄存器,如:MOV DS,100H等;(5)立即数不能作为目的操作数,如:MOV 100H,AX等;(6)指令指针IP,不能作为MOV指令的操作数;(7)两个操作数不能同时为存储单元,如:MOV VARA,VARB等,其中VARA和VARB是同数据类型的内存变量。,45,PUSH进栈指令
22、,堆栈是一个重要的数据结构,它具有“先进后出”的特点,通常用来保存程序的返回地址。它主要有两大类操作:进栈操作和出栈操作。指令格式:PUSHReg/Mem 一个字进栈,系统自动完成两步操作:SPSP-2,(SP)操作数;功 能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2。,46,【例】PUSH AX,47,POP进栈指令,指令格式:POPReg/Mem 弹出一个字,系统自动完成两步操作:操作数(SP),SPSP+2;功 能:将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。,48,【例】POP BX,49,IN输入指令,输入指令用来从指定的外设寄存器
23、取信息送入累加器。它有几种形式:长格式:IN AL,PORT(字节)IN AX,PORT(字)执行操作:(AL)(PORT)(字节)(AX)(PORT+1,PORT)(字)短格式:IN AL,DX(字节)IN AX,DX(字)执行操作:(AL)(DX)(字节)(AX)(DX)+1,(DX)(字),50,注意:该指令的作用是从端口中读入一个字节或字,并保存在寄存器AL或AX中。如果某输入设备的端口地址在0255范围之内,那么,可在指令IN中直接给出,否则,要把该端口地址先存入寄存器DX中,然后在指令中由DX来给出其端口地址。,51,例如:IN AL,60H;从端口60H读入一个字节到AL中IN
24、AX,20H;把端口20H、21H按“高高低低”组成的 字读入AXMOV DX,2F8HIN AL,DX;从端口2F8H读入一个字节到AL中IN AX,DX;把端口2F8H、2F9H按“高高低低”组成 的字读入AX,52,OUT输出指令,输出指令用来把累加器的内容送往指定的外设存储器,它有几种形式:长格式:OUT PORT,AL(字节)OUT PORT,AX(字)执行操作:(PORT)(AL)(字节)(PORT+1,PORT)(AX)(字)短格式:OUT DX,AL(字节)OUT DX,AX(字)执行操作:(DX)(AL)(字节)(DX)+1,(DX)(AX)(字),53,注意:该指令的作用是
25、把寄存器AL或AX的内容输出到指定端口。如果某输出设备的端口地址在0255范围之内,那么,可在指令OUT中直接给出,否则,要把该端口地址先存入寄存器DX中,然后在指令中由DX来给出其端口地址。,例如:OUT 61H,AL;把AL的内容输出到端口61H中OUT 20H,AX;把AX的内容输出到端口20H、21H中MOV DX,3C0HOUT DX,AL;把AL的内容输出到端口3C0H中OUT DX,AX;把AX的内容输出到端口3C0H、3C1H中,54,XLAT 换码指令,转换指令有两个隐含操作数BX和AL。格 式:XLAT OPR 或 XLAT执行操作:(AL)(BX)+(AL)功 能:其功能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 80 x86 指令系统 寻址 方式
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5658489.html