第3章(2) 微机接口技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

医药信息工程学院何永玲第3章(2)Pentium的指令系统重点内容:•寻址方式;•传送指令中的堆栈指令、交换指令、换码指令、输入/输出指令;•算术运算指令中的比较指令;•串操作指令;医药信息工程学院何永玲3.1Pentium的寻址方式•指令的两个问题–指出进行什么操作–涉及的操作数和操作结果放在何处•两种情况下涉及寻址方式–操作数寻址–转移地址和调用地址进行寻址医药信息工程学院何永玲寻址方式•3.1.1立即数寻址比如:MOVAL,80HMOVAX,1090HMOVEAX,10002000H•3.1.2寄存器寻址比如:INCCXROLAH,1MOVECX,EAX操作数是由指令中的寄存器决定医药信息工程学院何永玲寻址方式•3.1.3输入/输出端口寻址–I/O直接寻址比如:INAL,82HOUT80H,AXINEAX,80H–I/O间接寻址INAL,DXOUTDX,AXOUTDX,EAX医药信息工程学院何永玲寻址方式•3.1.4存储器寻址EA=基址+变址×比例因子+位移量医药信息工程学院何永玲存储器寻址1直接寻址MOVAX,[1070H]MOVEAX,ES:[1000H]2寄存器间接寻址MOVAX,[BX]MOVEAX,[EBX]3寄存器相对寻址比如:MOVAX,[SI+100H]4基址加变址的寻址MOVAX,[BX+SI]MOVEDX,[EBX+ESI]MOVEDX,[EBX][ESI]医药信息工程学院何永玲存储器寻址5相对的基址加变址寻址MOVAX,[BP+SI+0050]6相对的带比例因子的变址寻址IMULEBX,[ESI*4+7]7基址加比例因子的变址寻址MOVEAX,[EBX][ESI*4]MOVECX,[EDI*8][EAX]8相对的基址加比例因子的变址寻址MOVEAX,[EDI*4][EBP+80]医药信息工程学院何永玲3.2Pentium指令系统•Pentium的指令分为如下几类:–传送指令;–串操作指令;–算术运算指令;–逻辑运算和移位指令;–转移和调用指令;–标志操作和处理器指令;–控制指令;–条件测试和字节设置指令;–系统管理指令;–支持高级语言的指令。医药信息工程学院何永玲3.2.1传送指令(1)•通用传送指令MOV和MOVZX/MOVSX–两个操作数的数位相同的传送指令MOVMOVAL,BLMOVES,DXMOVAX,[BX]MOV[DI],AXMOVCX,[1000]MOVWORDPTR[SI],6070HMOVDX,5040HMOVEAX,[EBX+ECX*2+1000H]MOVCRn,EAXMOVDRn,EAX–两个操作数的数位不相同的传送指令MOVZX/MOVSXMOVZXEAX,BLMOVSXEAX,BL医药信息工程学院何永玲3.2.1传送指令(2)•堆栈操作指令PUSH/POP、PUSHA/POPA和PUSHAD/POPAD–普通堆栈操作指令PUSH/POPPUSHEAXPUSHCSPUSH[BX+DI]PUSH0870HPUSHDWORDPTR[EBX+ESI]POPBXPOPESPOPEAX医药信息工程学院何永玲3.2.1传送指令(3)•堆栈操作指令PUSH/POP、PUSHA/POPA和PUSHAD/POPAD–堆栈成组操作指令PUSHA/POPA和PUSHAD/POPADPUSHEAXPUSHEBXPUSHEDIPUSHESI则子程序返回前,应如下恢复寄存器的值:POPESIPOPEDIPOPEBXPOPEAX医药信息工程学院何永玲3.2.1传送指令(4)•交换指令XCHG/BSWAP–字节、字和双字交换指令XCHGXCHGAL,BLXCHGBX,CXXCHG[2530],CXXCHGEAX,EDIXCHGESI,[EBX]–寄存器内部双字交换指令BSWAP[EAX]=01234567H,执行指令BSWAPEAX,使[EAX]=76543210H医药信息工程学院何永玲3.2.1传送指令(5)•累加器专用传送指令IN/OUT和XLAT/XLATB–输入/输出指令IN/OUT直接的I/O指令比如:INAL,50HINAX,70HINEAX,70HOUT80H,AX间接的I/O指令INAL,DXINAX,DXINEAX,DXOUTDX,AXOUTDX,EAX医药信息工程学院何永玲3.2.1传送指令(6)•累加器专用传送指令IN/OUT和XLAT/XLATB–换码指令XLAT/XLATB格雷码编码规则如下:0——110001——000112——001013——001104——010015——010106——011007——100018——100109——10100医药信息工程学院何永玲3.2.1传送指令(7)•地址传送指令LEA和LDS/LES/LSS/LFS/LGS比如:LEAAX,[2728]LEABX,[BP+SI]LEAESI,[EBX+ECX+2530H]LEAEDI,[BX+1946H]取段码和偏移量的指令LDS/LES/LSS/LFS/LGS比如:LDSDI,[2530H]LESEDI,[1000H]LSSESP,[EDX]LFSEDX,[EDX]LGSESI,[EDX]医药信息工程学院何永玲3.2.1传送指令(8)•标志传送指令LAHF/SAHF、PUSHF/POPF和PUSHFD/POPFD–读取低8位标志和设置低8位标志指令LAHF/SAHF–对标志寄存器的推入和弹出堆栈指令PUSHF/POPF和PUSHFD/POPFD医药信息工程学院何永玲3.2.2算术运算指令•无符号数和有符号数采用同一套加法指令及减法指令有两个条件:–同为无符号数或有符号数–用不同的方法检测无符号数或有符号数的运算结果是否溢出医药信息工程学院何永玲3.2.2算术运算指令(1)•加法类指令ADD/ADC/XADD/INC–不带进位位的加法指令ADD比如:ADDCX,1000HADDDI,SIADD[BX+DI],AXADDEAX,[BX+2000H]–带进位位的加法指令ADC比如:ADCAX,SIADCDX,[SI]ADCBX,3000H医药信息工程学院何永玲3.2.2算术运算指令(2)•加法类指令ADD/ADC/XADD/INC–字交换加法指令XADD比如:[AX]=1234H,[BX]=1111H,执行指令XADDAX,BX比如:[EAX]=20000002H,而1000H开始的内存单元中为30000003H,执行指令XADD[1000H],EAX–增量指令INC比如:INCALINCECXINCBYTEPTR[BX+DI+500]医药信息工程学院何永玲3.2.2算术运算指令(3)•减法类指令SUB/SBB/DEC/NEG和CMP/CMPXCHG/CMPXCHG8B–1)不考虑借位的减法指令SUB,比如:SUBEBX,ECXSUB[BP+2],CLSUBSI,5010HSUBWORDPTR[DI],1000H–2)考虑借位的减法指令SBBSBBAX,2530HSBBWORDPTR[EDI+2],1000H医药信息工程学院何永玲3.2.2算术运算指令(4)•减法类指令SUB/SBB/DEC/NEG和CMP/CMPXCHG/CMPXCHG8B–3)减量指令DEC比如:DECEBXDECAXDECBYTEPTR[DI+2]–4)求补指令NEG比如:NEGEAXNEGECX–5)比较指令CMP比如:CMPAX,2000HCMPEAX,[EBX+EDI+100]CMPEDX,EDI医药信息工程学院何永玲3.2.2算术运算指令(5)•减法类指令SUB/SBB/DEC/NEG和CMP/CMPXCHG/CMPXCHG8B–6)比较并交换指令CMPXCHG比如:[AL]=11H,[BL]=24H,[1000H]=22H,执行指令CMPXCHG[1000H],BL又如:[EBX]=76543210H,[ECX]=01234567H,[EAX]=01234567H,则执行指令CMPXCHGECX,EBX–7)8字节比较指令CMPXCHG8B比如:[EAX]=11111111H,[EBX]=22222222H,[ECX]=33333333H,[EDX]=44444444H,设DS段1000H所指单元开始的8字节为4444444411111111H,执行指令CMPXCHG8B[1000H]医药信息工程学院何永玲3.2.2算术运算指令(6)•乘法指令MUL/IMUL–无符号数的乘法指令MULMULCXMULBYTEPTR[DI]MULWORDPTR[SI]–有符号数的乘法指令IMULIMULCLIMULBX,100IMULBYTEPTR[BX]IMULWORDPTR[DI]医药信息工程学院何永玲3.2.2算术运算指令(7)•有符号数乘法指令的扩充形式第一组指令:IMULBX,CXIMULEDX,ECXIMULDI,MEM_WORDIMULEDX,MEM_DWORD第二组指令:IMULDX,BX,300IMULCX,23IMULEBP,200IMULECX,EDX,2000IMULBX,MEM_WORD,300IMULEDX,MEM_DWORD,20医药信息工程学院何永玲3.2.2算术运算指令(8)•除法指令DIV/IDIV–无符号数的除法指令DIVDIVCLDIVWORDPTR[DI]–有符号数的除法指令IDIVIDIVBXIDIVBYTEPTR[DI]医药信息工程学院何永玲3.2.2算术运算指令(9)•类型转换指令CBW/CWD/CWDE/CDQ–CBW–CWD–CWDE–CDQ医药信息工程学院何永玲3.2.2算术运算指令(10)•两类BCD码–组合的BCD码–非组合的BCD码•BCD码指令AAA/DAA、AAS/DAS、AAM和AAD–BCD码的加法十进制调整指令AAA/DAA–BCD码的减法十进制调整指令AAS/DAS–BCD码的乘法十进制调整指令AAM–BCD码的除法十进制调整指令AAD医药信息工程学院何永玲3.2.3逻辑运算和移位指令•逻辑指令分为两类:–逻辑运算指令–移位指令医药信息工程学院何永玲3.2.3逻辑运算和移位指令(1)•逻辑运算指令AND/OR/NOT/XOR/TEST比如:ANDAX,1000HANDEAX,EBXANDEDX,[EBX+ESI]ORAX,00F0HXORAL,0FHXOREAX,EAXXORECX,100XORECX,10000000HTESTEAX,80000000HTESTAL,01NOTALNOTEBXNOTWORDPTR[1000H]医药信息工程学院何永玲3.2.3逻辑运算和移位指令(2)•移位指令SAL/SAR/SHL/SHR和OL/ROR/RCL/RCR–非循环移位指令SAL/SAR/SHL/SHRSALEDX,8SALEAX,CLSALAL,1(a)算术左移指令SAL;(b)逻辑左移指令SHL(c)算术右移指令SAR;(d)逻辑右移指令SHR医药信息工程学院何永玲3.2.3逻辑运算和移位指令(2)•移位指令SAL/SAR/SHL/SHR和OL/ROR/RCL/RCR–循环移位指令ROL/ROR/RCL/RCRROLWORDPTR[DI],CLRCREBX,CLROLBX,1(a)不带CF的循环左移指令ROL;(b)不带CF的循环右移指令ROR;(b)(c)带CF的循环左移指令RCL;(d)带CF的循环右移指令RCR医药信息工程学院何永玲3.2.3逻辑运算和移位指令(3)•双移位指令SHLD/SHRDSHLDEAX,EBX,3SHLDMEM_WORD,DX,8SHLDECX,EDX,21SHLDMEM_DWORD,EAX,2SHLDAL,BL,CLSHRDEAX,EBX,10SHRDECX,EDX,19SHRDEAX,EBX,CL医药信息工程学院何永玲3.2.4串操作指令(1)•字符串传送指令MOVSB/MOVSW/MOVSD比如下面的程序段:MOVSI,1000HMOVDI,2000HMOVCX,100CLDREPMOVSB医药信息工程学院何永玲3.2.

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功