汇编语言指令集.doc_第1页
汇编语言指令集.doc_第2页
汇编语言指令集.doc_第3页
汇编语言指令集.doc_第4页
汇编语言指令集.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8088指令系统总结预备知识:符号含意、数据传送原则符号含意符号含意opr操作数src源操作数dst目的操作数mem存储器im立即数seg段寄存器reg通用寄存器EA偏移地址PA物理地址nn直接地址DISP8:8位偏移地址DISP16:16位偏移地址数据传送原则口诀数据传送原则寄段储间互传数,seg、reg、mem之间的数据可以相互传送。立即只入寄和储。im可入reg、mem只有寄间互换数,reg之间的数据可以传送。Mem间、seg间不可自传CS立即不可目,CS和立即数不可入,不能当目的操作数8088指令系统8088指令系统分六大类一、数据传送指令二、算术运算指令三、逻辑运算与位移指令四、串操作指令五、控制与转移指令六、CPU控制指令一、数据传送指令1 通用传送指令(1)传送指令MOV dst, src功能:dstsrc(2)堆栈操作指令 人WPUSH src作用:SPSP2 ((SP+1)SP)src src(reg seg mem)POP dst 作用: dst((SP+1)SP) SPSP2 dst(reg seg mem)(3)交换指令XCHG OPR1,OPR2 OPR1OPR2108088指令系统总结第 10 页 共 10 页MOV 传送字或字节. 文字MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位寄存器里字节的顺序 XCHG 交换字或字节.( 至少有一个*作数为寄存器,段寄存器不可作为*作数) CMPXCHG 比较并交换*作数.( 第二个*作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个*作数里 ) XLAT 字节查表转换. BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果. ( BX+AL-AL )2 累加器传送指令(1)输入输出指令256B短格式:直接寻址,64K长格式:直接、间接寻址, PORT为8位口地址输入指令:直接寻址 IN AX,PORT IN AL,PORT间接寻址 IN AX,DX IN AL,DX输出指令:直接寻址 OUT AX,PORT OUT AL,PORT间接寻址 OUT AX,DX OUT AL,DX(2)换码指令 XLAT AL(BXAL) (BX)为mem地址IN I/O端口输入. ( 语法: IN 累加器, 端口号DX ) OUT I/O端口输出. ( 语法: OUT 端口号DX,累加器 ) 输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535.3 地址传送指令(1)有效地址传送寄存器 LEA reg16, mem作用:mem的EAreg16(2)指针送寄存器和DS指令 LDS reg16, mem32 作用:reg16mem32的低字 高字DS(3)指针送寄存器和有ES指令LES reg16, mem32 作用:reg16mem32的低字 高字ESLEA 装入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS 传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 传送目标指针,把指针内容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4 标志寄存器传送指令(1)取标志指令:LAHF F的低字节AH(2)置标志指令:SAHF AHflag的低字节(3)标志入栈指令:PUSHF SP2SP F(SP+1):SP(4)标志出栈指令:POPF (SP+1):SPF SP2SPLAHF 标志寄存器传送,把标志装入AH. SAHF 标志寄存器传送,把AH内容装入标志寄存器. PUSHF 标志入栈. POPF 标志出栈. PUSHD 32位标志入栈. POPD 32位标志出栈.二、算术运算指令1加法类指令(Add)opr-reg mem B/W(1)不带进位加法ADD dst, src dstdstsrc 影响OSZAPC(2)带进位加法 ADC dst, src dstdstsrcCF影响OSZAPC(3)加1指令 INC opr opropr1影响OSZP(4)组合十进制调整DAA 放在ADD后(5)非组合十进制调整AAA 放在ADC后原理:2个十进制数相加,可能出现非法数(A到F),需用调整指令,进行加6调整变成合法十进制数。十进制BCD组合压缩组合BCD占4位非组合BCD占8位2 . 减法类指令(substract)(1)减法指令SUB dst, src ;dstdstsrc 影响标志位OSZAPC(2)带借位减法指令SBB dst, src;dstdstsrcCF 影响标志位OSZAPC(3)减1指令DECsrc 影响OSZP(4)求补指令NEGsrc ;negatesrc0src 0src=FFHsrc1FFHsrc求反(5)比较指令COMPdst, src难在带符号数比较: SFOF0 AB, SFOF1,AB(6)组合十进制减法调整指令DAS(7)非组合十进制减法调整指令AAS3乘法类指令multiplication(1)无符号数乘法MULsrc ;AXsrc8AL DX:AXsrc16AX,影响F:OC(2)有符号数乘法IMULsrc ;AXsrc8AL DX:AXsrc16AX,影响F:OC(3)组合十进制乘法调整指令AAM注意:1乘数和被乘数都是非组合BCD码。2 AAM用于乘法指令MUL之后。3影响F:SZP原理:AHAL/0AH AHAL%0AH(%为取余操作)4 除法类指令(Division)(1)无符号数除法DIV src ; AXsrc8商进AL,余数进AH;(DX:AX)src16商进AX,余数进DX,不影响F。(2)有符号数除法IDIV src ;算法同上。注意:1不影响F;2余数的符号与被除数相同,3若被除数和除数都是8位,被除数需扩展成16位;若被除数和除数都是16位,被除数需扩展成32位。(3)非组合十进制乘法调整指令AA D注意:1除数和被除数都是非组合BCD码。2AAD放在除法指令前。原理:(AL)(AH)0AH(AL)(AH)0(4)字节扩展成字指令CBW;AL中的符号扩展为AX,不影响F原理:(AL)80H(正数)使AH00H;(AL)80H(负数)使AHFFH(5)字扩展成双字指令CWB;AX中的符号扩展为DX:AX,不影响F原理:(AH)8000H(正数)使DX0000H;(AX)8000H(负数)使DXFFFFHADD 加法. ADC 带进位加法. INC 加 1. AAA 加法的ASCII码调整. DAA 加法的十进制调整. SUB 减法. SBB 带借位减法. DEC 减 1. NEC 求反(以 0 减之). CMP 比较.(两*作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整. DAS 减法的十进制调整. MUL 无符号乘法. IMUL 整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整. DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算). AAD 除法的ASCII码调整. CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算与位移指令1 逻辑运算(1)与 ANDdst, src ;dstdst AND src 影响F: SZP(2)或 OR dst, src ;dstdst OR src 影响F: SZP(3)异或 XORdst, src ;dstdst XOR src 影响F: SZP(4)非 NOTopr ;dstopr逐位求反 不影响F(5)测试 TEST reg, src ;dst AND src 影响F: SZP 不入dst 逻辑运算dst src opr符合基本传输原则(不允许seg)2 移位(1)逻辑左移SHLopr, 1 或SHL opr, CL0填最右位(2)逻辑右移 SHRopr, 1 或SHR opr, CL0填最左位(3)算术左移SALopr, 1 或SAL opr, CL0填最右位(4)算术右移SARopr, 1SAR opr, CL最左位不变注意:opr: reg mem 3 循环移位(1)无进位左循环 ROL opr, 1 ROL opr, CL(2)无进位右循环 ROR opr, 1 ROR opr, CL(3)有进位左循环 RCL opr, 1 RCL opr, CL(4)有进位右循环 RCR opr, 1 RCR opr, CL注意:opr: reg mem B/W AND 与运算. OR 或运算. XOR 异或运算. NOT 取反. TEST 测试.(两*作数作与运算,仅修改标志位,不回送结果). SHL 逻辑左移. SAL 算术左移.(=SHL) SHR 逻辑右移. SAR 算术右移.(=SHR) ROL 循环左移. ROR 循环右移. RCL 通过进位的循环左移. RCR 通过进位的循环右移. 以上八种移位指令,其移位次数可达255次. 移位一次时, 可直接用*作码. 如 SHL AX,1. 移位1次时, 则由寄存器CL给出移位次数. 如 MOV CL,04 SHL AX,CL四、串操作和重复指令(唯一的src dst 可以均为mem的指令)特点:A源操作数src在DS:SI,目的操作数在dst ES:DI B修改指针决定于DF,0增1减,字节1字2C串长置于CXD重复靠REP1串操作指令(1)串传送MOVS / MOVSB / MOVSW dst, src ;dstsrc(2)串比较 COMP / COMPB / COMPW dst, src ;dstsrc影响F: OSZAPC(3)串搜索SCAS / SCASB / SCASW dst ;ALdst或AXdst影响F: OSZAPC(4)串进A LODS / LODSB /LODSW src ;ALsrc或AXsrc(5)A进串 STOS / STOSB / STOSW dst ;dstAL或dstAX(6)重复指令REP,RETZ / REPE,REPNZ / REPNE2重复指令(1)REP 与MOVS/B/W,STOS/B/W联用若CX0则重复,执行下一条,否则退出串操作 CX(CX1)执行字符串命令重复13(2)RETZ / REPE与CMPS/B/W,SCAS/B/W联用若CX0且ZF1则重复,执行下一条,若CX0或ZF0(两数不等)退出串操作CX(CX1)执行字符串命令重复13(3)REPNZ / REPNE与CMPS/B/W,SCAS/B/W联用若CX0且ZF0则重复,执行下一条,若CX0或ZF1(两数不等)退出串操作CX(CX1)执行字符串命令重复13DS:SI 源串段寄存器 :源串变址. ES:DI 目标串段寄存器:目标串变址. CX 重复次数计数器. AL/AX 扫描值. D标志 0表示重复*作中SI和DI应自动增量; 1表示应自动减量. Z标志 用来控制扫描或比较*作的结束. MOVS 串传送. ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) CMPS 串比较. ( CMPSB 比较字符. CMPSW 比较字. ) SCAS 串扫描. 把AL或AX的内容与目标串作比较,比较结果反映在标志位. LODS 装入串. 把源串中的元素(字或字节)逐一装入AL或AX中. ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串. 是LODS的逆过程. REP 当CX/ECX0时重复. REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX0时重复. REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX0时重复. REPC 当CF=1且CX/ECX0时重复. REPNC 当CF=0且CX/ECX0时重复.五、控制与转移指令1无条件转移指令注意: SHORT为运算符,页内,128127。偏移量用补码表示, 8位偏移量与IP相加需扩展成16位(1)段内直接短转移JMPSHORT偏移量8;IPIP8位偏移量(2)段内直接近转移JMP NEATPTR偏移量16注意:NEATPTR为运算符偏移量用补码表示:64K范围3276832767(3)段内间接寻址JMPsrc ;IPsrcsrc: reg mem 注意:mem寻址要加WORDPTR(4)段间直接寻址JMPFARPTRLABEL;CS下2字节IP上2字节注意:FARPTR为段内转移运算符LABEL为四字节转移地址的首地址,下CS上IP(5)段间间接寻址JMPDWORDPTRmem注意:与段间直接寻址一样,仅mem需要寻址去找,如相对寻址、基址加变址等2条件转移指令(共19条)特点:双字节指令,短转移。转移范围128127 ,IPopr opr: reg mem,通常为标号(1) 以标志位为条件(F: OSZPC 十种情况)JOopr ;OF1转移,溢出转移, JNO opr ;OF0转移,不溢出转移JS opr ;SF1转移,负数转移JNS opr ;SF0转移,正数转移JZ opr ;ZF1转移,结果为0转移又JEJNZ opr ;ZF0转移,结果不为0转移又JNEJP opr ;PF1转移,偶数转移JNP opr ;PF0转移,奇数转移JC opr ;CF1转移,有进(借)位转移又JBJNAJNC opr ;CF0转移,无进(借)位转移又JAJNB(2)无符号数比较大于用A,小于用B,等于用E,四种情况:设参与比较的两数按序为M、NJA opr ;MN转移到地址oprCF0且ZF0JAE opr ;MN转移到地址oprCF0或ZF1JB opr ;MN转移到地址oprCF1且ZF0JBE opr ;MN转移到地址oprCF1或ZF1(3)有符号数比较大于用G,小于用L,等于用E,四种情况:设参与比较的两数按序为M、NJG opr ;MN转移到地址oprSFOF0且ZF0JGE opr ;MN转移到地址oprSFOF0或ZF1JL opr ;MN转移到地址oprSFOF1且ZF0JLE opr ;MN转移到地址oprSFOF1或ZF1(4)根据CX值转移JCXZopr ;当CX0转移到地址opr3循环控制指令 以CX为计数器,短转移,不影响F,IPLabel或 IPIP+扩展的opr8Label通常为符号地址(1)循环指令LOOPSHORT Label CX1若CX0,则循环,改变IP若CX0执行下一条指令零循环指令LOOPZ SHORT Label 或LOOPE SHORT Label CX1若CX0且ZF1,则循环,改变IP若CX0或ZF1执行下一条指令(2)非零循环指令LOOPNZ SHORT Label 或LOOPNE SHORT Label CX1若CX0且ZF0,则循环,改变IP若CX0或ZF0执行下一条指令4子程序调用指令子程序过程调用转子返回返子(1)段内直接调用CALLdst ;dst为子程序入口地址(D16范围)现IP入栈:SP(SP2)(SP1)SPIP子程序入口地址入IP:IPdst(2)段内直接调用CALLdst ;dst:各种reg mem寻址的EA,D16现IP入栈:SP(SP2)(SP1)SPIP子程序入口地址入IP:IPEA(3)段间直接调用CALLdst ;dst为子程序入口地址(D32范围)现CS入栈:SP(SP2)(SP1)SPCS现IP入栈:SP(SP2)(SP1)SPIP子程序入口有效地址入IP:IP有效地址子程序入口段地址入IP:CS段地址(4)段间间接调用CALLdst ;dst为各种mem寻址的EA,D32范围现CS入栈:SP(SP2)(SP1)SPCS现IP入栈:SP(SP2)(SP1)SPIP子程序入口有效地址入IP:IPEA子程序入口段地址入IP:CSEA25子程序返回指令(1)段内返回指令RET;与CALLdst成对出现原IP出栈:IP(SP1)SP 修改SP指针:SP(SP2)(2)段内带立即数返回指令RETim;与CALLdst成对出现,im为D16原IP出栈:IP(SP1)SP修改SP指针:SP(SP2)IP加立即数:IPIP im(3)段间返回指令RET;与CALLdst成对出现原IP出栈:IP(SP1)SP 修改SP指针:SP(SP2)原CS出栈:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论