X86指令系统和寻址方式.ppt
《X86指令系统和寻址方式.ppt》由会员分享,可在线阅读,更多相关《X86指令系统和寻址方式.ppt(99页珍藏版)》请在三一办公上搜索。
1、1,教学重点,第3章是本课程的一个关键内容,是程序设计的基础难点是各种寻址方式基础是熟悉寄存器组重点是掌握8086常用指令的功能及应用,第三章 80 x86的指令系统和寻址方式,2,指令系统:计算机的指令系统就是指该计算机能够执行的全部指令的集合。(一组指令集)。指令的一般格式:,指令由操作码和操作数两部分组成操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分操作数是指令执行的参与者,即各种操作的对象有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数,3,每种指令的操作码:用一个唯一的助记符表示(指令功能的英文缩写)
2、指令中的操作数:可以是一个具体的数值可以是存放数据的寄存器或指明数据在主存位置的存储器地址,指令举例:MOV AX,BX SUB BX,123ADD AX,3 AND DL,80H MUL BL PUSH DXCLD CBW,4,寻址方式:取得操作数地址的方式,指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻址操作数采取哪一种寻址方式,会影响机器运行的速度和效率,如何寻址一个操作数对程序设计很重要,与数据有关的寻址方式与转移地址有关的寻址方式,5,3.1 80 x86的寻址方式,与数据有关的寻址方式与转移地址有关的寻址方式,3.1.1 与数据有关的寻址方式 以 MOV 指令为例,操
3、作码 操作数1,操作数2;注释操作数2,称为源操作数 src,它表示参与指令操作的一个对象操作数1,称为目的操作数 dest,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果分号后的内容是对指令的解释,6,MOV dest,src;destsrc MOV指令的功能是将源操作数src传送至目的操作数dest,例如:MOV AL,05H;AL05HMOV BX,AX;BXAXMOV AX,SI;AXDS:SIMOV AX,BP+06H;AXSS:BP+06HMOV AX,BX+SI;AXDS:BX+SI,7,1.立即寻址方式*操作数在指令中给出 MOV AL,5 MOV AX,306
4、4H*只能用于SRC字段*SRC 和 DST的字长一致 MOV AH,3064H,8,2.寄存器寻址方式*操作数在指定的寄存器中 MOV AX,BX MOV AL,BH*字节寄存器只有 AH AL BH BL CH CL DH DL*SRC 和 DST的字长一致 MOV AH,BX*CS不能用MOV指令改变 MOV CS,AX,9,3.直接寻址方式*有效地址EA由指令直接给出 有效地址EA:操作数的偏移地址 物理地址PA=16d(DS)+EA 例:MOV AX,2000H EA=2000H,假设(DS)=3000H,那么(PA)=32000H 例:操作数地址可由变量(符号地址)表示 MOV A
5、H,VALUE;(VALUE DB 10),50,30,32000,AH AL,30,50,(AX)=3050H,10,3.直接寻址方式*隐含的段为数据段 DS*可使用段跨越前缀 MOV AX,ES:2000H*使用变量时,要注意变量的属性 VALUE DB 10 MOV AX,VALUE MOV AX,WORD PTR VALUE*适于处理单个变量,11,4.寄存器间接寻址方式*EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中 BX,SI,DI(DS)物理地址=16d(DS)+BP(SS)物理地址=16d(SS)+(BP)MOV AX,BX;PA=16d(DS)+(BX)MOV A
6、X,ES:BX;PA=16d(ES)+(BX)MOV AX,BP;PA=16d(SS)+(BP),(BX)(SI)(DI),12,4.寄存器间接寻址方式*不允许使用AX、CX、DX存放EA MOV AX,CX*SRC 和 DST的字长一致 MOV DL,BX;BX指示一个字节单元 MOV DX,BX;BX指示一个字单元*适于数组、字符串、表格的处理,13,5.寄存器相对寻址方式*例:MOV AX,COUNTSI 或 MOV AX,COUNT+SI 假设(DS)=3000H,(SI)=2000H,COUNT=3000H 那么 PA=35000H 假设(35000H)=1234H,那么(AX)=1
7、234H*适于数组、字符串、表格的处理,有效地址=,(BX)(BP)(SI)(DI),+,8位16位,位移量,14,6.基址变址寻址方式*MOV AX,BXDI 或 MOV AX,BX+DI MOV AX,ES:BXSI*适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合 MOV AX,BXBP MOV AX,SIDI,有效地址=,(BX)(BP),+,(SI)(DI),15,7.相对基址变址寻址方式*MOV AX,MASKBXSI 或 MOV AX,MASKBX+SI 或 MOV AX,MASK+BX+SI*适于堆栈处理和数组处理,有效地址=,(BX)(BP),+,(S
8、I)(DI),+,8位16位,位移量,16,3.1.2 与转移地址有关的寻址方式,用来确定 转移指令 及 CALL指令 的转向地址。,段内寻址段间寻址,段内直接寻址段内间接寻址,段间直接寻址段间间接寻址,以 转移(条件转移/无条件转移)指令 为例,段内:转移指令与转向的目标指令在同一代码段中,(CS)不变。段间:转移指令与转向的目标指令在两个代码段中,(CS)变化。,17,1.段内直接寻址 转向的有效地址EA=物理地址=16d(CS)+(IP)新 例:JMP AGAIN(IP)当前 MOV BX,AX AGAIN:例:JMP NEAR PTR NEXT 近转移-32768+32767 JMP
9、SHORT NEXT 短转移-128+127,(IP)当前+位移量(8bit/16bit),(IP)新,(IP)新,18,2.段内间接寻址 转向的有效地址EA是一个寄存器或存储单元的内容。(可用除立即数以外的任何一种数据寻址方式得到)物理地址=16d(CS)+EA 例:(BX)=1256H(SI)=528EH TABLE=20A2H(DS)=2000H(232F8H)=3280H(264E4H)=2450H JMP BX;(IP)=1256H JMP TABLEBX JMP WORD PTR TABLEBX;(IP)=3280H JMP BXSI JMP WORD PTR BXSI;(IP)=
10、2450H,19,3.段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS和IP。物理地址=16d(CS)+(IP)例:,code1 segment jmp far ptr next code1 ends,code2 segment next:.code2 ends,20,4.段间间接寻址 用存储器中的两个相继字的内容取代CS和IP。(存储单元的地址可用除立即数和寄存器以外的任何一种 数据寻址方式得到)物理地址=16d(CS)+(IP)例:JMP DWORD PTR INTERS+BX,21,3.3 80 x86的指令系统,数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机
11、控制指令,注意:1.指令的基本功能 2.指令的执行对标志位的影响 3.对寻址方式或寄存器使用的限制和隐含使用的情况,22,3.3.1 数据传送指令 通用数据传送指令 累加器专用传送指令 地址传送指令 标志寄存器传送指令,23,通用数据传送指令 传送指令:MOV DST,SRC 执行操作:(DST)(SRC)注意:*DST不能是CS*不影响标志位*DST、SRC不同时为存储器*DST、SRC不同时为段寄存器 MOV DS,ES*立即数不能直接送段寄存器 MOV DS,2000H,24,例:MOV AX,DATA_SEG MOV DS,AX例:MOV AL,E;MOV AL,45H例:MOV BX
12、,OFFSET TABLE例:MOV AX,YBPSI,25,进栈指令:PUSH SRC 执行操作:(SP)(SP)-2(SP)+1,(SP)(SRC)出栈指令:POP DST 执行操作:(DST)(SP)+1,(SP)(SP)(SP)+2堆栈:“先进后出”的存储区,存在于堆栈段中,SP在任何 时候都指向栈顶。注意:*堆栈操作必须以字为单位。*不影响标志位*不能用立即寻址方式 PUSH 1234H*DST不能是CS POP CS,26,例:假设(AX)=2107 H,执行 PUSH AX,(SP),低地址,高地址,(SP),07H 21H,低地址,高地址,进栈方向,*,*,*,*,PUSH A
13、X 执行前,PUSH AX 执行后,27,例:POP BX,(SP),低地址,高地址,(SP),07H 21H,低地址,高地址,出栈方向,07H21H,(BX)=2107H,POP BX 执行前,POP BX 执行后,*,*,*,*,28,例:PUSH DS SUB AX,AX PUSH AX RET例:PUSH AXPUSH BX POP BXPOP AX,;其间用到AX和BX寄存器,29,交换指令:XCHG OPR1,OPR2 执行操作:(OPR1)(OPR2)注意:*不影响标志位*不允许使用段寄存器 例:XCHG BX,BP+SI XCHG AL,BH,30,累加器专用传送指令(只限于使
14、用AX或AL)输入指令(I/O CPU)长格式:IN AL,PORT(字节)IN AX,PORT(字)执行操作:(AL)(PORT)(字节)(AX)(PORT+1,PORT)(字)短格式:IN AL,DX(字节)IN AX,DX(字)执行操作:(AL)(DX)(字节)(AX)(DX)+1,(DX)(字),31,输出指令(CPU I/O)长格式:OUT PORT,AL(字节)OUT PORT,AX(字)执行操作:(PORT)(AL)(字节)(PORT+1,PORT)(AX)(字)短格式:OUT DX,AL(字节)OUT DX,AX(字)执行操作:(DX)(AL)(字节)(DX)+1,(DX)(A
15、X)(字),32,注意:*不影响标志位*前256个端口号00HFFH可直接在指令中指定(长格式)如果端口号 256,端口号 DX(短格式)例:IN AX,28H;MOV DX,28H;IN AX,DX MOV DATA_WORD,AX例:MOV DX,3FCH 例:OUT 5,AL IN AX,DX,33,换码指令:XLAT 或XLAT OPR执行操作:(AL)(BX)+(AL)例:MOV BX,OFFSET TABLE;(BX)=0040H MOV AL,3 XLAT TABLE 指令执行后(AL)=33H注意:*不影响标志位*字节表格(长度不超过256)首地址(BX)*需转换代码(AL),
16、34,地址传送指令 有效地址送寄存器指令:LEA REG,SRC 执行操作:(REG)SRC 指针送寄存器和DS指令:LDS REG,SRC 执行操作:(REG)(SRC)(DS)(SRC+2)4个相继字节 寄存器(通常是SI)、DS 指针送寄存器和ES指令:LES REG,SRC 执行操作:(REG)(SRC)(ES)(SRC+2)4个相继字节 寄存器(通常是DI)、ES,35,例:LEA BX,BX+SI+0F62H 例:LDS SI,10H例:LES DI,BX例:,(DS):1000H 40 H,00 H,00 H,30 H,TABLE,MOV BX,TABLE;(BX)=0040HM
17、OV BX,OFFSET TABLE;(BX)=1000HLEA BX,TABLE;(BX)=1000HLDS BX,TABLE;(BX)=0040H;(DS)=3000HLES BX,TABLE;(BX)=0040H;(ES)=3000H,注意:*不影响标志位*REG不能是段寄存器*SRC必须为存储器寻址方式,36,标志寄存器传送指令 标志送AH指令:LAHF 执行操作:(AH)(PSW的低字节)AH送标志寄存器指令:SAHF 执行操作:(PSW的低字节)(AH)标志进栈指令:PUSHF 执行操作:(SP)(SP)-2(SP)+1,(SP)(PSW)标志出栈指令:POPF 执行操作:(PSW
18、)(SP)+1,(SP)(SP)(SP)+2*影响标志位,37,3.3.2 算术指令 加法指令 减法指令 乘法指令 除法指令 十进制调整指令,38,加法指令 加法指令:ADD DST,SRC 执行操作:(DST)(SRC)+(DST)带进位加法指令:ADC DST,SRC 执行操作:(DST)(SRC)+(DST)+CF 加1指令:INC OPR 执行操作:(OPR)(OPR)+1,注意:*除INC指令不影响CF标志外,均对条件标志位 有影响。,39,加法指令对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。,n=8bit 带符号数(-
19、128127)无符号数(0255),41,例:双精度数的加法(DX)=0002H(AX)=0F365H(BX)=0005H(CX)=0E024H 指令序列(1)ADD AX,CX(2)ADC DX,BX(1)执行后,(AX)=0D389H CF=1 OF=0 SF=1 ZF=0(2)执行后,(DX)=0008H CF=0 OF=0 SF=0 ZF=0,42,减法指令 减法指令:SUB DST,SRC 执行操作:(DST)(DST)-(SRC)带借位减法指令:SBB DST,SRC 执行操作:(DST)(DST)-(SRC)-CF 减1指令:DEC OPR 执行操作:(OPR)(OPR)-1 求
20、补指令:NEG OPR 执行操作:(OPR)-(OPR)比较指令:CMP OPR1,OPR2 执行操作:(OPR1)-(OPR2),注意:*除DEC指令不影响 CF标志外,均对条 件标志位有影响。,减法指令对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数减法的溢出。OF位表示带符号数减法的溢出。NEG指令对CF/OF的影响:CF位:操作数为0时,求补的结果使CF=0,否则CF=1。OF位:字节运算对-128求补或字运算对-32768求补时OF=1,否则OF=0。,或,44,例:x、y、z均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实
21、现 w x+y+24-z,并用W,W+2单元存放w。MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2;x+y ADD AX,24 ADC DX,0;x+y+24 SUB AX,Z SBB DX,Z+2;x+y+24-z MOV W,AX MOV W+2,DX;结果存入W,W+2单元,45,乘法指令 无符号数乘法指令:MUL SRC 执行操作:字节操作数(AX)(AL)*(SRC)字操作数(DX,AX)(AX)*(SRC)带符号数乘法指令:IMUL SRC,注意:*AL(AX)为隐含的乘数寄存器。*AX(DX,AX)为隐含的乘积寄存器。*SRC不能为立即数。*除CF
22、和OF外,对条件标志位无定义。,46,乘法指令对CF/OF的影响:,例:(AX)=16A5H,(BX)=0611H(1)IMUL BL;(AX)(AL)*(BL);A5*11 5B*11=060B F9F5;(AX)=0F9F5H CF=OF=1(2)MUL BX;(DX,AX)(AX)*(BX);16A5*0611=0089 5EF5;(DX)=0089H(AX)=5EF5H CF=OF=1,47,除法指令 无符号数除法指令:DIV SRC 执行操作:字节操作(AL)(AX)/(SRC)的商(AH)(AX)/(SRC)的余数 字操作(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)
23、/(SRC)的余数 带符号数除法指令:IDIV SRC 执行操作:与DIV相同,但商和余数带符号,且余数符号与被除数符号相同。注意:*AX(DX,AX)为隐含的被除数寄存器。*AL(AX)为隐含的商寄存器。*AH(DX)为隐含的余数寄存器。*SRC不能为立即数。*对所有条件标志位均无定义。,48,符号扩展指令:CBW AL AX 执行操作:若(AL)的最高有效位为0,则(AH)=00H 若(AL)的最高有效位为1,则(AH)=0FFH CWD AX(DX,AX)执行操作:若(AX)的最高有效位为0,则(DX)=0000H 若(AX)的最高有效位为1,则(DX)=0FFFFH,注意:*无操作数指
24、令*隐含对AL或AX进行符号扩展*不影响条件标志位,例:(AX)=0BA45H CBW;(AX)=0045H CWD;(DX)=0FFFFH(AX)=0BA45H,49,例:x,y,z,v均为16位带符号数,计算(v-(x*y+z-540)/x MOV AX,X IMUL Y;x*y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX;x*y+z SUB CX,540 SBB BX,0;x*y+z-540 MOV AX,V CWD SUB AX,CX SBB DX,BX;v-(x*y+z-540)IDIV X;(v-(x*y+z-540)/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- X86 指令系统 寻址 方式

链接地址:https://www.31ppt.com/p-6523993.html