




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章8086 8088指令系统 4 18086 8088指令系统概述4 28086 8088的寻址方式4 38086 8088的指令系统 指令系统 计算机的指令系统就是指该计算机能够执行的全部指令的集合 一组指令集 指令的一般格式 指令由操作码和操作数两部分组成操作码说明计算机要执行哪种操作 如传送 运算 移位 跳转等操作 它是指令中不可缺少的组成部分操作数是指令执行的参与者 即各种操作的对象有些指令不需要操作数 通常的指令都有一个或两个操作数 也有个别指令有3个甚至4个操作数 操作码操作数 操作数 4 18086 8088指令系统概述 每种指令的操作码 用一个唯一的助记符表示 指令功能的英文缩写 指令中的操作数 可以是一个具体的数值可以是存放数据的寄存器或指明数据在主存位置的存储器地址 指令举例 MOVAX BXSUBBX 123ADDAX 5ANDDL 80HMULBLPOPDXCLDCBW 4 28086 8088的寻址方式 与数据有关的寻址方式 与数据有关的寻址方式与转移地址有关的寻址方式 1 立即寻址方式操作数直接存放在指令中 紧跟在操作码之后 常用于给寄存器赋初值 MOVAL 10MOVAX 3064H 例4 1 MOVAL 10执行后 AL 该例中源操作数为立即寻址方式 立即数为10 存放在指令的下一单元 图形表示 执行 10 AL执行后 AL 0AH 2 寄存器寻址方式 操作数在指定的寄存器中 例4 2 MOVAX BX指令执行前 AX 3064H BX 1234H指令执行后 AX 1234H BX 1234H 3 直接寻址方式 有效地址EA由指令直接给出 有效地址EA 操作数的偏移地址物理地址PA 16d DS EA例 MOVAX 2000H EA 2000H 假设 DS 3000H 那么 PA 32000H例 操作数地址可由变量 符号地址 表示MOVAH VALUE VALUEDB10 隐含的段为数据段DS可使用段跨越前缀MOVAX ES 2000H 使用变量时 要注意变量的属性VALUEDB10 MOVAX VALUE MOVAX WORDPTRVALUE适于处理单个变量 4 寄存器间接寻址 操作数的偏移地址EA在基址寄存器 BX BP 或变址寄存器 SI DI 中 操作数则在存储器中 BX SI DI DS 物理地址 16d DS BP SS 物理地址 16d SS BP BX SI DI 例 MOVAX BX 如果DS 3000H BX 1010H 31010H 12H 31011H 24H 则操作数的20位物理地址 30000H 1010H 31010H 操作的示意图如下图所示 指令执行完以后 AX 2412H 5 寄存器相对寻址方式 操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16位偏移量之和 即 例 MOVAX COUNT SI 或MOVAX COUNT SI 假设 DS 3000H SI 2000H COUNT 3000H那么物理地址 30000H 2000H 3000H 35000H假设 35000H 1234H 那么AX 1234H 6 基址变址寻址方式 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和 即 例 MOVAX BX SI 或写为 MOVAX BX SI 例 MOVAX BX SI 或MOVAX BX SI 若DS 2000H BX 0500H SI 0010H则偏移地址 0500H 0010H 0510H20位物理地址 20000H 0510H 20510H如 20510H 12H 20511H 34H 则指令执行后 AX 3412H 7 相对基址变址寻址方式 操作数的有效地址是一个基址寄存器的内容 一个变址寄存器的内容和8位或16位偏移量之和 即 例 MOVAX MASK BX SI 或MOVAX MASK BX SI 或MOVAX MASK BX SI 适于堆栈处理和数组处理 例 MASK是数据段中定义的一个符号地址 假设它在数据段中的偏移地址是1000H MOVAX MASK BX DI 若DS 2000H BX 0100H DI 0020H则偏移地址 1000H 0100H 0020H 1120H20位物理地址 20000H 1120H 21120H如 21120H 12H 21121H 34H 操作的示意图如图所示 执行完指令以后 AX 3412H 按功能可分为6大类 数据传送指令算术运算指令位处理指令串操作指令控制转移指令处理器控制指令 4 38086 8088指令系统 通用数据传送指令累加器专用传送指令地址传送指令标志寄存器传送指令 4 3 1数据传送指令 1 通用数据传送指令 1 传送指令格式 MOVDST SRC B W执行操作 DST SRC 注意 DST不能是CS 不影响标志位 DST SRC不同时为段寄存器 MOVDS ES 立即数不能直接送段寄存器 MOVDS 2000H 例 MOVAX DATA SEGMOVDS AX例 MOVAL E MOVAL 45H例 MOVBX OFFSETTABLE例 MOVAX Y BP SI 返回 2 堆栈操作指令进栈指令 PUSHSRC执行操作 SP SP 2 SP 1 SP SRC 出栈指令 POPDST执行操作 DST SP 1 SP SP SP 2堆栈 先进后出 的存储区 存在于堆栈段中 SP在任何时候都指向栈顶 注意 堆栈操作必须以字为单位 不影响标志位 不能用立即寻址方式 PUSH1234H DST不能是CS POPCS 例 假设 AX 2107H 执行PUSHAX SP 低地址 高地址 SP 07H21H 低地址 高地址 进栈方向 PUSHAX执行前 PUSHAX执行后 例 POPBX SP 低地址 高地址 SP 07H21H 低地址 高地址 出栈方向 07H21H BX 2107H POPBX执行前 POPBX执行后 例 PUSHDSSUBAX AXPUSHAX RET 例 PUSHAXPUSHBX POPBXPOPAX 其间用到AX和BX寄存器 3 交换指令指令格式 XCHGOPR1 OPR2执行操作 OPR1 OPR2 注意 不影响标志位 不允许使用段寄存器例 XCHGBX BP SI XCHGAL BH 指令格式 XLAT或XLATOPR执行操作 AL BX AL 例 MOVBX OFFSETTABLE BX 0040HMOVAL 3XLATTABLE指令执行后 AL 33H注意 不影响标志位 字节表格 长度不超过256 首地址 BX 需转换代码 AL 2 换码指令 3 地址传送指令有效地址送寄存器指令 LEAREG SRC执行操作 REG SRC指针送寄存器和DS指令 LDSREG SRC执行操作 REG SRC DS SRC 2 4个相继字节 寄存器 通常是SI DS指针送寄存器和ES指令 LESREG SRC执行操作 REG SRC ES SRC 2 4个相继字节 寄存器 通常是DI ES 例 LEABX BX SI 0F62H 例 LDSSI 10H 例 LESDI BX 例 DS 1000H40H 00H 00H 30H TABLE MOVBX TABLE BX 0040HMOVBX OFFSETTABLE BX 1000HLEABX TABLE BX 1000HLDSBX TABLE BX 0040H DS 3000HLESBX TABLE BX 0040H ES 3000H 注意 不影响标志位 REG不能是段寄存器 SRC必须为存储器寻址方式 标志送AH指令 LAHF执行操作 AH PSW的低字节 AH送标志寄存器指令 SAHF执行操作 PSW的低字节 AH 标志进栈指令 PUSHF执行操作 SP SP 2 SP 1 SP PSW 标志出栈指令 POPF执行操作 PSW SP 1 SP SP SP 2 4 标志寄存器传送指令 加法指令减法指令乘法指令除法指令十进制调整指令 4 3 2算术指令 1 加法指令加法指令 ADDDST SRC执行操作 DST SRC DST 带进位加法指令 ADCDST SRC执行操作 DST SRC DST CF加1指令 INCOPR执行操作 OPR OPR 1 注意 除INC指令不影响CF标志外 均对条件标志位有影响 例 ADDAH BH指令执行前 AH 56H BH 24H指令执行01010110 0010010001111010执行后 AH 7AH BH 24HCF 0 OF 0 ZF 0 SF 0 PF 0 AF 0 例 双精度数的加法若DX 0002HAX 0F365HBX 0005HCX 0E024H指令序列 1 ADDAX CX 2 ADCDX BX 1 执行后 AX 0D389HCF 1OF 0SF 1ZF 0 2 执行后 DX 0008HCF 0OF 0SF 0ZF 0 2 减法指令减法指令 SUBDST SRC执行操作 DST DST SRC 带借位减法指令 SBBDST SRC执行操作 DST DST SRC CF减1指令 DECOPR执行操作 OPR OPR 1求补指令 NEGOPR执行操作 OPR OPR 比较指令 CMPOPR1 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 或 例 减法运算 MOVAX 5678H AX 5678HSUBAX 1234H AX 4444HMOVBX 3354H BX 3354HSUBBX 3340H BX 0014H 例 求补运算 MOVAX 0FF64HNEGAL AX 0FF9CHSUBAL 9DH AX 0FFFFHNEGAX AX 0001HDECAL AX 0000HNEGAX AX 0000H 比较指令语句格式 CMPOPD OPS功能 目的操作数减源操作数 结果只影响标志位 不送入目的地址 即 OPD OPS 例 比较AL的内容数值大小 CMPAL 50 AL 50JBBELOW AL 50 AL 50 ALINCAH AH 1 AHBELOW 例 x y z均为双精度数 分别存放在地址为X X 2 Y Y 2 Z Z 2的存储单元中 用指令序列实现w x y 24 z 并用W W 2单元存放w MOVAX XMOVDX X 2ADDAX YADCDX Y 2 x yADDAX 24ADCDX 0 x y 24SUBAX ZSBBDX Z 2 x y 24 zMOVW AXMOVW 2 DX 结果存入W W 2单元 3 乘法指令无符号数乘法指令 MULSRC执行操作 字节操作数 AX AL SRC 字操作数 DX AX AX SRC 带符号数乘法指令 IMULSRC 注意 AL AX 为隐含的乘数寄存器 AX DX AX 为隐含的乘积寄存器 SRC不能为立即数 除CF和OF外 对条件标志位无定义 乘法指令对CF OF的影响 例 AX 16A5H BX 0611H 1 IMULBL AX AL BL A5 11 5B 11 060B F9F5 AX 0F9F5HCF OF 1 2 MULBX DX AX AX BX 16A5 0611 00895EF5 DX 0089H AX 5EF5HCF OF 1 4 除法指令无符号数除法指令 DIVSRC执行操作 字节操作 AL AX SRC 的商 AH AX SRC 的余数字操作 AX DX AX SRC 的商 DX DX AX SRC 的余数带符号数除法指令 IDIVSRC注意 AX DX AX 为隐含的被除数寄存器 AL AX 为隐含的商寄存器 AH DX 为隐含的余数寄存器 SRC不能为立即数 例 写出实现无符号数0400H 0B4H运算的程序段 MOVAX 0400H AX 0400HMOVBL 0B4H BL 0B4HDIVBL 商 AL 05H 余数 AH 7CH 例 写出实现有符号数0400H 0B4H运算的程序段 MOVAX 0400H AX 0400HMOVBX 0B4H BX 0B4HIDIVBX AL 0F3H AH 24H 5 符号扩展指令CBWAL AX执行操作 若 AL 的最高有效位为0 则 AH 00H若 AL 的最高有效位为1 则 AH 0FFHCWDAX DX AX 执行操作 若 AX 的最高有效位为0 则 DX 0000H若 AX 的最高有效位为1 则 DX 0FFFFH 注意 无操作数指令 隐含对AL或AX进行符号扩展 不影响条件标志位 例 AX 0BA45HCBW AX 0045HCWD DX 0FFFFH AX 0BA45H 例 x y z v均为16位带符号数 计算 v x y z 540 xMOVAX XIMULY x yMOVCX AXMOVBX DXMOVAX ZCWDADDCX AXADCBX DX x y zSUBCX 540SBBBX 0 x y z 540MOVAX VCWDSUBAX CXSBBDX BX v x y z 540 IDIVX v x y z 540 x 6 十进制调整指令BCD码 用二进制编码的十进制数 又称二 十进制数压缩的BCD码 用4位二进制数表示1位十进制数例 59 10 01011001 BCD非压缩的BCD码 用8位二进制数表示1位十进制数例 59 10 0000010100001001 BCD数字的ASCII码是一种非压缩的BCD码DIGITASCIIBCD030H00110000131H00110001232H00110010 939H00111001 例 写出 3590 10的压缩BCD码和非压缩BCD码 并分别把它们存入数据区PAKED和UNPAK 压缩BCD 3590 10 0011010110010000 BCD非压缩BCD 3590 10 00000011000001010000100100000000 BCD 压缩的BCD码调整指令 加法的十进制调整指令 DAA执行操作 AL AL 压缩BCD减法的十进制调整指令 DAS执行操作 AL AL 压缩BCD 19压缩BCD 00011001 08 00001000 2700100001 110 00100111 BCD AF 1 问题的提出 注意 隐含的操作寄存器为AL 紧接在加减指令之后使用 影响条件标志位 对OF无定义 调整方法 AF 1或 AL 0 3 A F 则 AL AL 06H AF 1CF 1或 AL 4 7 A F 则 AL AL 60H CF 1 DAA做 DAS做 例 DATASEGMENTBCD1DB34H 18H 1834 BCDBCD2DB89H 27H 2789 BCDBCD3DB2DUP DATAENDS 1 BCD3 BCD1 BCD2 4623 BCD 2 BCD3 BCD1 BCD2 9045 BCD 955 1 MOVAL BCD1 AL 34HADDAL BCD2 AL 34 89 BDHDAA AL BD 60 06 23HAF CF 1MOVBCD3 AL BCD3 23HMOVAL BCD1 1 AL 18HADCAL BCD2 1 AL 18 27 1 40HAF 1CF 0DAA AL 40 06 46HMOVBCD3 1 AL BCD3 1 46H 2 MOVAL BCD1 AL 34HSUBAL BCD2 AL 34 89 ABHDAS AL AB 60 06 45HAF CF 1MOVBCD3 AL BCD3 45HMOVAL BCD1 1 AL 18HSBBAL BCD2 1 AL 18 27 1 F0HDAS AL F0 60 90HMOVBCD3 1 AL BCD3 1 90H 非压缩的BCD调整指令加法调整指令 AAA AL AL 非压缩BCD减法调整指令 AAS AL AL 非压缩BCD注意 隐含的操作寄存器为AL 紧接在加减指令之后使用 除AF CF外 对其它条件标志位无定义调整方法 若 AL 0 3 0 9 且AF 0 则 AL 4 7 0 AF CF 0若 AL 0 3 A F 或AF 1 则 AL AL 6 AL 4 7 0 AH AH 1 AF CF 1 AAA做 AAS做 乘法调整指令 AAM AL AX 非压缩BCD注意 隐含的操作寄存器为AL 紧接在MUL指令之后使用 对OF CF AF无定义调整方法 AL 除以0AH 商 AH 余数 AL 除法调整指令 AAD被除数 AX 0000 xxxx0000 xxxx 非压缩BCD除数 0000 xxxx 非压缩BCD在DIV指令之前 AL 2 0AH AH AL AH 2 0 例 AX 0504H BL 03H 1 AL BL MULBL AX 000CHAAM AH 01H AL 02H 2 AX BL AAD AH 00H AL 36HDIVBL AH 00H AL 12HAAM AH 01H AL 08H 1 逻辑运算 4 3 3逻辑运算和移位指令 逻辑非指令 NOTOPR OPR不能为立即数执行操作 OPR OPR 不影响标志位逻辑与指令 ANDDST SRC执行操作 DST DST SRC 逻辑或指令 ORDST SRC执行操作 DST DST SRC 异或指令 XORDST SRC执行操作 DST DST SRC 测试指令 TESTOPR1 OPR2执行操作 OPR1 OPR2 与 的结果不保存 影响标志位 例 屏蔽AL的0 1两位ANDAL 0FCH例 置AL的第5位为1ORAL 20H例 使AL的0 1位变反XORAL 3例 测试某些位是0是1TESTAL 1JZEVEN AND11111100 00 OR00100000 1 XOR00000011 移位指令非循环移位SHL SAL 逻辑左移 算术左移 实现相同操作 功能 SHR逻辑右移SAR算术右移 实现带符号数被2除 朝小取整 SH shift A arithmetic 循环移位ROL小循环左移ROR小循环右移 RCL带进位位左移 大循环左移 RCR带进位位右移 大循环右移 注意 移位和循环移位后移出位都送标志位CF指令格式 SHL RORreg mem countcount 1 移位次数为1时 count CL 移位次数大于1时 例如 AL逻辑右移4次的指令为 MOVCL 4SHRAL CL 例 AX 0012H BX 0034H 把它们装配成AX 1234H MOVAX 0012HMOVBX 0034HMOVCL 8ROLAX CLADDAX BX 4 3 4串操作指令 串传送指令存入串指令从串取指令串比较指令串扫描指令 配合使用的前缀有 REP重复REPE REPZ相等 为零则重复REPNE REPNZ不相等 不为零则重复 1 MOVSB DS SI B ES DI B SI DI 1CMPSB DS SI B ES DI B SI DI 1STOSB AL ES DI B DI 1LODSB DS SI B AL SI 1SCASB AL ES DI B DI 1 2 若MOVSB改为MOVSW 则改为字操作 DS SI B和 ES DI B改为 DS SI W和 ES DI WCMPSW同MOVSW STOSW LODSW和SCASW指令中将原来的AL改为AX而SI DI 1改为SI DI 2 3 若五条串操作指令中来标明B或W 则指令格式为 MOVSdest srcCMPSsrc dest src destSTOSdestLODSsrcSCASdest式中dest和src都为变量名 变量定义时所定义的类型属性决定串操作中的操作类型 4 5条重复前缀指令例题 要求把内存区中2000H 5000H开始的100个字节数传送到3000H 4000H中 用串操作指令实现之 注意 MOVSB指令每执行一次只能传送一个字节 所以必须编写一段循环程序 MOVAX 2000HMOVDS AXMOVAX 3000HMOVES AXMOVSI 5000HMOVDI 4000HMOVCX 100LOP MOVSBDECCXJNZLOP 若采用重复前缀REP 则最后三条指令可改为 REPMOVSBREP的功能是 重复执行右边的串操作指令CX次另有4条重复前缀指令 REPZ 若CX 0 且ZF 1 则重复执行右边的串操作指令 每执行一次CX 1若CX 0 或ZF 0 则结束串操作REPNZ 若CX 0 且ZF 0 则重复执行右边的串操作指令 每执行一次CX 1若CX 0 或ZF 1 则结束串操作 REPE与REPZ功能一样 REPNE与REPNZ功能一样 通常REP前缀用于MOVS MOVSB MOVSW和STOS SORSB STOSW而REPZ REPE REPNZ REPNE前缓用于CMPS CMPSB CMPSW和SCAS SCASB SCASW 4 3 5输入输出指令 输入指令 I O CPU 只限于使用AX或AL 长格式 INAL PORT 字节 INAX PORT 字 执行操作 AL PORT 字节 AX PORT 1 PORT 字 短格式 INAL DX 字节 INAX DX 字 执行操作 AL DX 字节 AX DX 1 DX 字 输出指令 CPU I O 长格式 OUTPORT AL 字节 OUTPORT AX 字 执行操作 PORT AL 字节 PORT 1 PORT AX 字 短格式 OUTDX AL 字节 OUTDX AX 字 执行操作 DX AL 字节 DX 1 DX AX 字 注意 不影响标志位 前256个端口号00H FFH可直接在指令中指定 长格式 如果端口号 256 端口号 DX 短格式 例 INAX 28H MOVDX 28H INAX DXMOVDATA WORD AX例 MOVDX 3FCH例 OUT5 ALINAX DX例 测试某状态寄存器 端口号27H 的第2位是否为1INAL 27HTESTAL 00000100BJNZERROR 若第2位为1 转到ERROR处理 4 3 6控制转移指令 无条件转移指令条件转移指令循环指令子程序调用和返回指令中断指令 1 无条件跳转 1 JMP标号 reg mem 标号 label 是代码段中一条指令的符号地址 它可以作为程序转移指令的操作数使用 标号有三属性 段属性 段基值 偏移量属性 偏移地址 类型属性 NEAR或FAR 标号的类型属性为FAR 则实现段间转移 指令为5字节长 标号的类型属性为NEAR 则实现段内转移 指令为3字节长 标号的类型属性为NEAR中的SHORT 则实现段内短转移 指令为2字节长 段间跳转时机器指令中的地址为绝对地址 是二个16位地址 偏移地址在前 段基值在后 段内跳转时机器指令中的地址为相对地址 是偏移地址的差值 16位 段内短跳转时机器指令中的地址为相对地址 是偏移地址的差值 8位 JMPBX NEAR 功能为 IPBX JMP BX BX 必须写明 是WORDPTR BX 还是DWORDPTR BX 若为WORDPTR BX 则为段内跳转 功能是用 BX W送IP 若为DWORDPTR BX 则为段间跳转 功能是用 BX DW送CS IP JMP指令的汇编表示 2 CALL标号 reg mem调用指令 用来调用一个子程序 过程 又称为转子指令 CALL指令的格式同JMP指令 区别在于CALL指令必须保存断点 CS IP 这是由硬件来实现的 3 RET返回指令 从子程序返回主程序 2 条件转移指令JC JZ JS JO JP当CF ZF SF OF PF 1时跳转 JNC JNZ JNS JNO JNP当CF ZF SF OF PF 0时跳转JP与JPE等价 JNP与JPO等价 JZ与JE等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林消防监督管理课件
- 森林安全知识培训内容课件
- 风湿免疫试题及答案解析
- 调度员考试试题及答案
- 2025年项目经理实战技能测试模拟题及答案
- 2025年高考语文阅读理解训练题目集
- 2025年财务管理专业资格认证考试模拟题集与答案详解
- 2026届河南省六市化学高三第一学期期中联考试题含解析
- 桑果苗春季养护知识培训课件
- 2025年继电保护员中级考试重点难点解析
- 小儿上呼吸道感染
- 2025年CCAA国家注册审核员考试(产品认证基础)历年参考题库含答案详解(5卷)
- 2025-2030中国骨科手术导航机器人医生培训体系与手术量增长关联报告
- 《智能建造概论》高职完整全套教学课件
- 妇科常规手术器械处理流程
- 北京大学情报学考研真题汇总
- 生猪屠宰加工项目可行性研究报告
- 劳动力、机械设备、材料投入计划
- GB/T 8627-2007建筑材料燃烧或分解的烟密度试验方法
- GB/T 3280-2015不锈钢冷轧钢板和钢带
- GA 576-2018防尾随联动互锁安全门通用技术条件
评论
0/150
提交评论