编辑: 鱼饵虫 2014-12-31
微机原理与接口技术

第三章 8086CPU指令系统 董明皓 dminghao@xidian.

edu.cn 2018版 汇编语言基本概念

1 2

3 8086的六类指令

4 总结

5 汇编语言指令分类 数据与转移地址的寻址方式 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] 汇编语言基本概念

1 2

3 8086的六类指令

4 总结

5 汇编语言指令分类 数据与转移地址的寻址方式 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] 4. 8086的指令系统 b 数据传送指令 b 算术运算指令 b 逻辑运算指令 b 循环指令 b 串操作指令 b 控制转移指令 b 处理器控制指令 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] 8086指令系统中的控制转移指令有两大类: ? 无条件转移指令:有JMP、CALL、RET、IRET (可以段内/间) ? 条件转移指令:如JZ、JC、JCXZ、LOOP等 (只能在段内,且为short型-指令长度为2字节) 基础知识引入 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?段内转移=近程转移=NEAR型转移:程序转移后IP发生改 变,适用于:条件/无条件转移指令 ?段内转移后,IP=[-128~127]:则称为short型转移,用一 个字节表示. ?段间转移=远程转移=FAR型转移:程序转移后CS、IP均发 生改变,适用于:条件转移指令 基础知识引入 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] 4.6 控制转移指令 指令学习三套路: ? 指令做什么? ? OPR哪里来,哪里去? ? 对PSW有何影响? ? 用于改变程序执行的顺序 ? OPR作地址用,给IP或给CS:IP,实现程序在CS段的转移 ? 不改变PSW 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?1. 无条件转移指令 4.6 控制转移指令 JMP LABEL ;

转移到标号LABEL处执行程序 JMP REG16;

转移到由通用寄存器REG指定的位置执行程序 JMP MEM;

转移到由存储单元MEM指定的位置执行程序 字单元实现段内转移 双字单元实现段间转移 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?1. 无条件转移指令 4.6 控制转移指令 (1) JMP LABEL 这时并不需要特别指出转移指令是Near型、Far型的 转移,宏汇编程序(MASM)会根据标号L1的位置, 自动生成相应的指令代码. . JUMP L1 . . L1: MOV AX, BX 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?1. 无条件转移指令 4.6 控制转移指令 (2) JMP REG16 如果要根据BX的内容进行转移,即BX中存放有转移的 目的地址,则采用 JMP BX指令. MOV BX,

2 JMP BX ;

转移到CS:0002H 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?1. 无条件转移指令 4.6 控制转移指令 (3) JMP MEM 设字变量VAR1存放有转移的目的偏移地址, 则可以采用 JMP VAR1 完成程序的段内转移 设双字变量VAR2存放有转移的目的段地址和偏移地址, 则可以采用 JMP VAR2 完成程序的段间转移 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?1. 无条件转移指令 4.6 控制转移指令 DBT1 DW 0400H DBT2 DD 01000020H TAB DW 0600H,0640H,06A0H 则在代码段中有: MOV BX,

2 JMP DBT1 JMP DBT2 JMP TAB[BX+2] JMP WORD PTR[BX] 段地址不变 ;

转移到CS:0400H ;

转移到0100:0020H ;

转移到CS:06A0H ;

转移到本段,偏移地址保存在DS:0002H 与DS:0003H中 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?2. 有条件转移指令 4.6 控制转移指令 ? 只有当给定的条件满足时,才转移到指定的地址,否则 执行下一条指令. ? 条件往往由PSW中的标志位产生,这些标志位是由上一 条指令执行时产生的. ? 所有的有条件转移只有一种寻址方式:段内直接转移, [-128~127] 微机原理与系统设计 8086CPU的指令系统 董明皓 [email protected] ?2. 有条件转移指令 4.6 控制转移指令 指令格式 测试条件 功能 英文描述 JC LABEL (CF=1) 有进/借位 Jump if carry JNC LABEL (CF=0) 无进/借位 Jump if not carry JE/JZ LABEL (ZF=1) 相等 Jump if equal/zero JNE/JNZ LABEL (ZF=0) 不相等 Jump if not equal/not zero JS LABEL (SF=1) 负数 Jump if sign JNS LABEL (SF=0) 正数 Jump if not sign 根据单个标志位(CF、ZF、SF、OF、PF)的状态进行转移 ?2. 有条件转移指令 4.6 控制转移指令 JO LABEL (OF=1) 有溢出 Jump if overflow JNO LABEL (OF=0) 无溢出 Jump if not overflow JP/JPE LABEL (PF=1) 有偶数个1 Jump if parity/parity equal JNP/JPO LABEL (PF=0) 有奇数个1 Jump if not parity/parity odd 根据单个标志位(CF、ZF、SF、OF、PF)的状态进行转移 ?2. 有条件转移指令 4.6 控制转移指令 JA/JNBE LABEL (CF=0)∧(ZF=0) 高于/不低 于等于 Jump if above/not below nor zero JAE/JNB LABEL (CF=0) 高于等于/ 不低于 Jump if above or equal /not below JB/JNAE LABEL (CF=1) 低于/不高 于等于 Jump if below /not above nor equal JBE/JNA LABEL (CF=1) ∨(ZF=1) 低于等于/ 不高于 Jump if below or equal /not above ? ? ? ? 无符号数比较高低:ABOVE EQUAL BELOW ?2. 有条件转移指令 4.6 控制转移指令 OF)=1 OF)=0 ? (SF Jump if less or equal/not greater 小于等于/ 不大于 (OF ∨ZF)=0 JLE/JNG LABEL Jump if less /not greater nor equal 小于/不大 于等于 JL/JNGE LABEL Jump if greater or equal/not less 大于等于/ 不小于 JGE/JNL LABEL Jump if greater /not less nor equal 大于/不小 于等于 (OF ∨ZF)=0 JG/JNLE LABEL ? (SF ? ? ? ? 有符号数比较大小:GREATER EQUAL LESS ?2. 有条件转移指令 4.6 控制转移指令 在使用有条件转移指令时,应该注意下列几点: 1.由于有条件转移指令的指令转移范围为-128~+127,因 此为了转移到更远的位置,需要将条件转移指令与JMP指 令结合起来使用, 例:当(AL)等于1时要转移到较远的KS1处,应该采用: CMP AL,

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题