公 NEG指令 NEG指令把操作数当成一个带符号数,如果原操 作数是正数,NEG指令则将其变成负数用补码表 示);如果原操作数是负数(用补码表示),NEG 指令则将其变成正数。 方法:“各位(包括符号位)求反,末位加1
NEG指令 • NEG指令把操作数当成一个带符号数,如果原操 作数是正数,NEG指令则将其变成负数(用补码表 示);如果原操作数是负数(用补码表示),NEG 指令则将其变成正数。 • 方法:“各位(包括符号位)求反,末位加1
公 Example 若AL=00010001B=+17,执行 NEG AL后, AL=11101111B=[—17]补 若AL=11010001B=[-47]1补,执行 NEG AL后, AL=00101111B=+47
Example • 若AL=00010001B=+17,执行NEG AL后, AL=11101111B=[-17]补 • 若AL=11010001B=[-47]补,执行NEG AL后, AL=00101111B=+47
公 比较指令 ·比较指令实际上是做减法,但不回送相减的结 果,只是根据结果置标志。通常,把CMP指令安 排在条件转移指令(如JZ,JG,JO等)之前。 ·例:如果X>50,转移到ToO-HGH;如果带符号減 法X一Y引起溢出,则转移到 OVERFLOW;帟 则,计算XY,并将结果存放在 RESULTI中。(其 中,ⅩY、 RESULT均为字变量)
比较指令 • 比较指令实际上是做减法,但不回送相减的结 果,只是根据结果置标志。通常,把CMP指令安 排在条件转移指令(如JZ , JG , JO 等)之前。 • 例:如果X>50,转移到TOO-HIGH; 如果带符号减 法X-Y引起溢出,则转移到OVERFLOW; 否 则,计算 X-Y ,并将结果存放在RESULT中。(其 中,X、Y、RESULT均为字变量)
公 程序段 ·下述程序段使用了前面介绍的几条指令,也用到了后面即将 介绍的条件转移指令 MOVA以,X;将(X)移入AX CMP AX,50;比较 JG TOO-HIGH;如果(X)大于50,则转向 TOO-HIGH SUB AX,Y;否则减去(Y) JO OVERFLOW;溢出则转移 JNS NONNEG NEG AX NONNEG:MO∨ RESULT,AX;无溢出,取绝对值并将结果存入 RESULT TOO-HIGH OVERFLOW
程序段 • 下述程序段使用了前面介绍的几条指令,也用到了后面即将 介绍的条件转移指令. MOV AX , X ;将(X)移入AX CMP AX , 50 ; 比较 JG TOO-HIGH ; 如果(X)大于50,则转向 TOO-HIGH SUB AX, Y ; 否则减去(Y) JO OVERFLOW ;溢出则转移 JNS NONNEG NEG AX NONNEG: MOV RESULT , AX ;无溢出,取绝对值并将结果存入RESULT … TOO-HIGH: … OVERFLOW: …
公 (3)乘法指令 ()带符号乘法 格式:| MUL SRC 所执行的操作: 字节操作数:AX一(A)(SRC) 字操作数:DX:AX(AX)*(SRC (乘积带符号,并符合一般代数符号规则) (i)无符号乘法 格式: MUL SRC 所执行的操作: 同MUL,但操作数和乘积均不带符号
(3) 乘法指令 (i) 带符号乘法 格式:IMUL SRC 所执行的操作: 字节操作数: AX (Al)*(SRC) 字操作数:DX:AX (AX)*(SRC) (乘积带符号,并符合一般代数符号规则) (ii) 无符号乘法 格式:MUL SRC 所执行的操作: 同IMUL,但操作数和乘积均不带符号