文档详情

微机原理与接技术 第三章3.ppt

发布:2018-10-11约7.77千字共37页下载文档
文本预览下载声明
(1) 根据Z标志,可判断两者是否相等 例: CMP AX, BX ZF=1, (AX) = (BX),两者相等 ZF=0, (AX) = (BX),两者不相等 (2) 根据CF标志, 判断两个无符号数的大小 例: 比较AX,BX寄存器, 将大数 ? (AX) … CMP AX,BX JNC NEXT ; CF=0转NEXT XCHG AX,BX NEXT:…… 结论:CF=0 ,(AX) (BX); CF=1, (AX) (BX) (3) 用SF、OF标志,判断二个带符号数的大小 设:被比较二个带符号数分别为 : A、B 分四种情况讨论: ? A0, B0 ? A0, B0 ? A0, B0 ? A0, B0 四种情况讨论(操作数以8位为例): A B CMP A, B 结论 7 5 A0, B0 SF=0,OF=0 则:AB 5 7 情 况 A0, B0 SF=1,OF=0 则:AB -5 2 5 -7 -2 -5 -7 1 -7 -5 -5 -(-7) +2 A0,B0 SF=1,OF=0 则:AB A0,B0 SF=0,OF=0 则:AB -7 -(-5) -2 3 +127 -63 A0,B0 OF=1,SF=1 则:AB +127 -(-63) +190 4 -63 +127 A0,B0 SF=0,OF=1 则:AB -63 -(+127) -190 7 -5 2 分析以上四种情况得出如下结论: (1) OF=0 时: SF=0, 则:AB SF=1, 则:AB OF=1时: SF=1 , 则:AB SF=0,则:AB (2)O=S=0或S=O=1时: 记作 S?O=0 , 则:AB; O、S异号时: 记作 S?O=1 , 则: AB。 (3) S?O=0 同时ZF=0时, AB, 用JG/JNLE转移指令; S?O=1时, AB, 用JL/JNGE转移指令。 CMP指令应用举例:带符号数找最大值 若自BLOCK开始的内存缓冲区中,有100个带符号数。找出最大值。并存放到MAX单元中。 思路: 第一个数取出? ( AX), 取出第二个数(第二个字单元内容)与(AX)比较 : (AX)第二个数,不做交换, 否则,(第二个字单元内容) ? (AX)。 再取第三个数, … 经过99次比较,在(AX)中得到最大数。 … 编 程: … MOV BX,OFFSET BLOCK MOV AX,[BX] INC BX INC BX MOV CX,99 AGAIN:CMP AX,[BX] JG NEXT ;(AX) (16d?(ds)+(BX))转NEXT MOV AX,[BX] NEXT: INC BX INC BX DEC CX JNE AGAIN MOV MAX,AX ;MAX单元存放最大值 … * 第三节 8086/8088的指令系统(续) 二、算术运算指令(Arithmetic) 1. 加法指令 2. 减法指令 二. 算术运算指令(Arithmetic) 内容: 8086/8088提供加、减、乘、除、转换五种基本算术操作; 利用十进制调整指令和ASCII调整指令对BCD码表示的 十进制数进行算术运算; 对带符号数与无符号数进行乘、除运算。 (一)加法指令(Arithmetic) (二)减法指令(Subtraction) (三)乘法指令(Multiplication) (四)除法指令(Division) (五)转换指令 特
显示全部
相似文档