[计算机软件及应用]ASM0380x86的指令系统和寻址方式课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[计算机软件及应用]ASM0380x86的指令系统和寻址方式课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件 应用 ASM0380x86 指令系统 寻址 方式 课件
- 资源描述:
-
1、13.3 IBM PC机的指令系统机的指令系统l 数据传送数据传送指令指令l 算术算术指令指令l 逻辑逻辑指令指令l 串处理串处理指令指令l 控制转移控制转移指令指令l 处理机控制处理机控制指令指令注意:注意:1.指令的指令的基本功能基本功能 2.指令的执行指令的执行对标志位的影响对标志位的影响 3.对对寻址方式或寄存器使用的限制和隐含使用寻址方式或寄存器使用的限制和隐含使用学习方法:学习方法:1.理解而不是死记理解而不是死记 2.读程序,上机调试读程序,上机调试要求:要求:熟悉熟悉debug的使用的使用2MOV、PUSH、POP、PUSHA/PUSHAD、POPA/POPAD、XCHGIN、
2、OUT、XLATLEA、LDS、LESLAHF、SAHF、PUSHF、POPF CBW、CWD、CWDE、CDQ、BSWAP 3 通用数据传送指令通用数据传送指令 传送指令传送指令:MOV DST,SRC 执行操作:执行操作:(DST)(SRC)符号扩展符号扩展传送指令传送指令:MOVSX DST(16/32),SRC(8/16)执行操作:执行操作:(DST)符号扩展符号扩展(SRC)零扩展零扩展传送指令传送指令:MOVZX DST(16/32),SRC(8/16)执行操作:执行操作:(DST)零扩展零扩展(SRC)注意注意:*不影响标志位不影响标志位 *DST不能是不能是CS或或立即数立即数
3、 *DST、SRC不同时为段寄存器不同时为段寄存器 MOV DS,ES *DST、SRC不同时为存储不同时为存储单元单元 MOV VAR1,X *立即数立即数不能直接送不能直接送段寄存器段寄存器 MOV DS,2000HMOV指令传送功能指令传送功能立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器MOV DS,AXMOV CS,AXMOV CH,4050HMOV DL,5BHMOV DX,5BHMOV DX,ALMOV VA1,VA2MOV 45,DL
4、 目的操作数不允许是目的操作数不允许是CSCS寄存器寄存器 数据类型不匹配数据类型不匹配 数据类型不匹配数据类型不匹配不允许两个操作数都是存储单元不允许两个操作数都是存储单元目的操作数不允许是立即数目的操作数不允许是立即数例:判断下列指令是否合法?例:判断下列指令是否合法?堆栈:堆栈:“先进后出先进后出”的存储区,存在于堆栈段中,的存储区,存在于堆栈段中,SP在任何时候都在任何时候都指向栈顶。堆栈常用来临时存放数据、传递参数、保存和恢复指向栈顶。堆栈常用来临时存放数据、传递参数、保存和恢复寄存器。寄存器。PUSH操作使栈顶向低地址方向移动,操作使栈顶向低地址方向移动,POP则相反。则相反。语语
5、法格式:法格式:PUSH reg16/seg/mem16/reg32/mem32PUSH data ;286新增新增 功功能描述:能描述:将指定的字数据压入栈顶将指定的字数据压入栈顶 7例:例:假设假设(AX)=2107 H,执行执行 PUSH AX(SP)低地址低地址高地址高地址(SP)07H 21H低地址低地址高地址高地址进栈方向进栈方向*PUSH AX 执行前执行前PUSH AX 执行后执行后演示 语语法格式:法格式:POP reg16/seg/mem16/reg32/mem32 ;操操作数不能是作数不能是CS 功功能描述:能描述:将栈顶字数据弹出堆栈将栈顶字数据弹出堆栈注意注意:*不影
6、响标志位不影响标志位 *堆栈操作必须以堆栈操作必须以字字或或双字双字为单位。为单位。9例:例:POP BX(SP)低地址低地址高地址高地址(SP)07H 21H低地址低地址高地址高地址出栈方向出栈方向07H21H (BX)=2107H POP BX 执行前执行前 POP BX 执行后执行后*演示10PUSHA将将 AX,CX,DX,BX,指令执行前的指令执行前的SP,BP,SI,和和 DI依次压入堆栈。依次压入堆栈。POPA从堆栈依次弹出从堆栈依次弹出 DI,SI,BP,SP,BX,DX,CX,和和 AX 寄存寄存器。器。PUSHAD/POPAD 将将PUSHA/POPA中的中的reg16换为
7、换为reg32,其余不变。,其余不变。交换指令交换指令:XCHG OPR1,OPR2 执执行操作:行操作:(OPR1)(OPR2)例:例:XCHG BX,BP+SI XCHG AL,BH 注意注意:*不影响标志位不影响标志位 *不允许使用段寄存器不允许使用段寄存器11 累加器专用传送指令累加器专用传送指令 输入指令输入指令:IN AC,PORT (I/O CPU)长格式长格式:IN AL/AX/EAX,PORT:(AL)(PORT)(字节字节)(AX)(PORT+1,PORT)(字字)(EAX)(PORT+3,PORT+2,PORT+1,PORT)(双字双字)短格式短格式:IN AL/AX/E
8、AX,DX:(AL)(DX)(字节字节)(AX)(DX)+1,(DX)(字字)(EAX)(DX)+3,(DX)+2,(DX)+1,(DX)(双字双字)12 输出指令输出指令:OUT PORT,AC (CPU I/O)长格式长格式:OUT PORT,AL/AX/EAX:(PORT)(AL)(字节字节)(PORT+1,PORT)(AX)(字字)(PORT+3,PORT+2,PORT+1,PORT)(EAX)(双字双字)短短格式:格式:OUT DX,AL/AX/EAX:(DX)(AL)(字节字节)(DX)+1,(DX)(AX)(字字)(DX)+3,(DX)+2,(DX)+1,(DX)(EAX)(双字
9、双字)13例:例:IN AX,28H ;MOV DX,28H ;IN AX,DX例:例:MOV DX,3FCH 例:例:OUT 5,AL OUT DX,AX例例:测试某状态寄存器(端口号测试某状态寄存器(端口号27H)的第)的第2位是否为位是否为1 IN AL,27H TEST AL,00000100B JNZ ERROR ;若若第第2位为位为1,转到,转到ERROR处理处理注意注意:*不影响标志位不影响标志位 *前前256个端口号个端口号00HFFH可直接在指令中指定可直接在指令中指定(长格式)长格式)*如果如果端口号端口号 256,端口号,端口号 DX(短格式)(短格式)14 换码指令换码
10、指令:XLAT (AL)(E)BX)+(AL)例例:MOV BX,OFFSET TABLE ;(BX)=0040H MOV AL,3 XLAT 指指令执行后令执行后(AL)=33H33 H 0046H30 H 0043H31 H 0044H32 H 0045H TABLE(DS)=F000H注意注意:*不影响标志位不影响标志位 *字节表格字节表格(长度不超过长度不超过256)*首地址首地址(BX)需转换代码需转换代码 (AL)(AL)=3(BX)15 地址传送指令地址传送指令 有效地址有效地址送送寄存器寄存器指令指令:LEA REG,SRC 指针指针送送寄存器寄存器和和段寄存器段寄存器指令指令
11、:LDS/LES REG,SRC LSS/LFS/LGS REG,SRC ;386及后继机型及后继机型 例:例:LDS REG,SRC 功能:存储器功能:存储器4个或个或6个相继字节送寄存器、个相继字节送寄存器、DS注意注意:*不影响标志位不影响标志位 *REG不能是不能是段寄存器,段寄存器,SRC必须为必须为存储器寻址方式存储器寻址方式16例:例:LEA BX,BX+SI+0F62H 例:例:LDS SI,10H例:例:LES DI,BXMOV BX,TABLEMOV BX,OFFSET TABLELEA BX,TABLELDS BX,TABLELES BX,TABLE ;(BX)=0040
12、H;(BX)=1000H;(BX)=1000H;(BX)=0040H;(BX)=0040H;(ES)=3000H;(DS)=3000H 00 H 40 H 00 H 30 H TABLE(DS):1000H 例:例:17 标志寄存器传送指令标志寄存器传送指令 标志送标志送AH指令指令:LAHF AH送标志寄存器送标志寄存器指令指令:SAHF 标志进栈标志进栈指令指令:PUSHF 标志出栈标志出栈指令指令:POPF 注意注意:*SAHF和和POPF影响标志位影响标志位 *无操作数无操作数 18注意注意:*不影响标志位不影响标志位 *无操作数无操作数指令指令 *隐含对隐含对AL 或或 AX 进行符
13、号扩展进行符号扩展类型转换指令类型转换指令CBW (8位位扩展到扩展到16位位)CWD (16位位扩展到扩展到32位位)CWDE (16位位扩展到扩展到32位位)CDQ (32位位扩展到扩展到64位位)19例:例:(EAX)=0A234B678H CBW CWD CWDE CDQ BSWAP EAX ;(AX)=0078H;(DX)=0FFFFH (AX)=0B678H;(EAX)=0FFFFB678H;(EDX)=0FFFFFFFFH;(EAX)=0A234B678H;(EAX)=12345678H (EAX)=78563412H203.3.2 算术指令算术指令 加法指令加法指令 ADD、A
14、DC、INC、XADD 减法指令减法指令 SUB,SBB,DEC,NEG,CMP 乘法指令乘法指令 MUL,IMUL 除法指令除法指令 DIV,IDIV 十进制调整指令十进制调整指令 DAA,DAS,AAA,AAS,AAM,AAD21 加法指令加法指令 加法加法指令:指令:ADD DST,SRC 带进位加法带进位加法指令:指令:ADC DST,SRC CF 加加1指令:指令:INC OPR 交换并相加交换并相加指令指令:XADD DST,SRC ;486及后继机型及后继机型注意注意:*影响标志影响标志AF,CF,OF,PF,SF,ZF (INC指令指令不影响不影响CF标志标志)。*操作数可以是
15、操作数可以是8位、位、16位或位或32位。位。主要与主要与ADDADD配配合,实现多精合,实现多精度加法运算度加法运算22CF 表示表示无符号数无符号数相加相加的溢出。的溢出。OF 表示表示带符号数带符号数相加相加的溢出。的溢出。1 结果为结果为负负0 否则否则SF=1 结果为结果为00 否则否则ZF=1 和的和的最高有效位最高有效位有向高位的进位有向高位的进位0 否则否则CF=1 两个操作数符号相同,而结果符号与之相反两个操作数符号相同,而结果符号与之相反0 否则否则OF=加法加法指令对指令对条件标志位条件标志位(CF/OF/ZF/SF)的影响)的影响23无符号数溢出无符号数溢出 0 0 0
16、 0 0 1 1 1 +1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 (+7)+(-5)=+2 OF=0 7+251=2 CF=1 带符号数和无符号数都不溢出带符号数和无符号数都不溢出 0 0 0 0 0 1 0 0 +0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 (+4)+(+11)=+15 OF=0 4+11=15 CF=0带符号数溢出带符号数溢出 0 0 0 0 1 0 0 1 +0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 (+9)+(+124)=-123 OF=1 9+124=133 CF=0 带符号数和无符号数都溢出带符号数和无
17、符号数都溢出 1 0 0 0 0 1 1 1 +1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 (-121)+(-11)=+124 OF=1 135+245=124 CF=1n=8bit 带符号数带符号数(-128127)无符号数无符号数(0255)带:带:无:无:带:带:无:无:带:带:无:无:带:带:无:无:24例:双精度数例:双精度数(32位字位字)的加法的加法 (DX)=0002H (AX)=0F365H (BX)=0005H (CX)=0E024H 指令序列指令序列 (1)ADD AX,CX (2)ADC DX,BX(1)执行后,(执行后,(AX)=0D389H CF
18、=1 OF=0 SF=1 ZF=0 (2)执行后,(执行后,(DX)=0008H CF=0 OF=0 SF=0 ZF=025 减法指令减法指令注意注意:*除除DEC指令指令不影响不影响 CF 标志外,标志外,均均对条件标志位对条件标志位有有影响影响。减法指令:减法指令:SUB DST,SRC 执行操作:执行操作:(DST)(DST)-(SRC)带借位减法指令带借位减法指令:SBB DST,SRC 执行操作:执行操作:(DST)(DST)-(SRC)CF 减减1指令:指令:DEC OPR 执行操作:执行操作:(OPR)(OPR)1 求补指令:求补指令:NEG OPR 执行操作:执行操作:(OPR
19、)(OPR)也可以也可以:(OPR)0FFFFH-(OPR)+1主要与主要与SBBSBB配配合,实现多精合,实现多精度减法运算度减法运算 减法指令减法指令 比较指令:比较指令:CMP OPR1,OPR2 执行操作:执行操作:(OPR1)-(OPR2)比较并交换指令:比较并交换指令:CMPXCHG DST,SRC ;486新增执行操作执行操作:累加器累加器AC与与DST相比较相比较 IF(AC)=(DST)ZF1,(DST)(SRC);ELSE ZF0,(AC)(DST);比较并交换比较并交换8字节指令:字节指令:CMPXCHG8B m64 ;Pentium执行操作执行操作:IF(EDX:EAX
20、)=(m64)ZF1,(m64)(ECX:EBX);ELSE ZF0,(EDX:EAX)(m64);注意注意:*均对条件标志位均对条件标志位有影响有影响。CMP指令指令执行后,通过相关执行后,通过相关标志位标志位的值就可以的值就可以看出比较的结果。看出比较的结果。如如:CMP AX,BX 条件条件(AX)-(BX)转移指令转移指令 标志位标志位 等于等于0 JZ(JE)OPR ZF=1 不等于不等于0 JNZ(JNE)OPR ZF=0 有借位有借位 JB(JNAE,JC)OPR CF=1 无借位无借位 JNB(JAE,JNC)OPR CF=0 有借位或结果为有借位或结果为0 JBE(JNA)O
21、PR CF ZF=1 无借位无借位,结果非结果非0 JNBE(JA)OPR CF ZF=0 关系关系(AX)(BX)(AX)(BX)(AX)(BX)(AX)(BX)(AX)(BX)(AX)(BX)无符号数无符号数比较比较带符号数带符号数的比较的比较 条件条件(AX)-(BX)转移指令转移指令 标志位标志位 等于等于0 JZ(JE)OPR ZF=1 不等于不等于0 JNZ(JE)OPR ZF=0 JL(JNGE)OPR SF OF=1 JNL(JGE)OPR SF OF=0 JLE(JNG)OPR (SF OF)ZF=1 JNLE(JG)OPR (SF OF)ZF=0 关系关系(AX)(BX)(
22、AX)(BX)(AX)(BX)(AX)(BX)(AX)(BX)(AX)(BX)1)(AX),(BX)符号相同时符号相同时:+,+-,-(关系不定关系不定)不会溢出不会溢出:OF=0;当当 (AX)(BX),一定为负一定为负:SF=1;(AX)(BX),一定非负一定非负:SF=0;2)(AX),(BX)符号不同时符号不同时:-,+(小于小于);+,-(大于大于)可能溢出可能溢出 前前-后后+时:若时:若OF=0,则,则SF=1;若若 OF=1,则,则 SF=0;前前+后后-时:若时:若OF=0,则则SF=0;若若 OF=1,则,则 SF=1;(AX)(BX)SF,OF 不同不同 SF OF=1(
23、AX)(BX)SF,OF 相同相同 SF OF=030减法减法指令对指令对条件标志位条件标志位(CF/OF/ZF/SF)的影响:)的影响:CF 表示表示无符号数无符号数减法减法的溢出。的溢出。1)被减数)被减数 减数减数 差为负数差为负数 超出无符号数表示超出无符号数表示范围范围 2)(OPR1)-(OPR2)=(OPR1)+(-OPR2)(OPR1)-(OPR2)补补=(OPR1)补补+(-OPR2)补补 =(OPR1)+0FFH-(OPR2)+1,因因(OPR1)(OPR2)不不会产生会产生进位进位OF 表示表示带符号数带符号数减法减法的溢出。的溢出。1 被减数的最高有效位有向高位的借位被
24、减数的最高有效位有向高位的借位0 否则否则CF=1 两个操作数符号相反,而结果的符号与减数相同两个操作数符号相反,而结果的符号与减数相同0 否则否则OF=1 减法转换为加法运算时无进位减法转换为加法运算时无进位0 否则否则CF=NEG指令对指令对CF/OF的影响:的影响:CF:操作数为:操作数为0时,求补的结果使时,求补的结果使CF=0,否则,否则CF=1。OF:字节运算对:字节运算对80H求补、字运算对求补、字运算对8000H求补或双字求补或双字 运算对运算对80000000H求补时求补时OF=1,否则,否则OF=0。理解:理解:NEG OPR 求补指令求补指令 执行:执行:(OPR)(OP
25、R)或或 (OPR)0FFFFH-(OPR)+1 即:即:0 (OPR)操作数按位取反,末位加一操作数按位取反,末位加一 1)无符号数:)无符号数:n=8 bit 范围范围:0 255 只有只有(OPR)=0时时 0 (OPR)不会产生借位不会产生借位 2)带符号数:)带符号数:n=8 bit 范围范围:-128 +127 只有只有(OPR)=-128 (OPR)=+128 超出范围超出范围 会溢出会溢出32例:例:x、y、z均为均为8字节字,分别存放在地址为字节字,分别存放在地址为X,X+4;Y,Y+4;Z,Z+4的存储单元中,用指令序列实现的存储单元中,用指令序列实现 w x+y+24-z
展开阅读全文