汇编学习笔记11

第11讲讲了剩下两个减法指令: NEG 和 CMP

NEG OP 对OP进行求补,然后将结果送入OP,操作数可以是通用寄存器和存储单元。当OP为8位-128或16位-32768时,结果为它自身。当OP为0时,CF位为0,其他时候都为1。NEG操作其实是 OP = 0 - OP。

CMP OP1, OP2 比较操作,用OP1 - OP2, 与SUB规则相同,不同之处在于不把结果送回OP1,根据标志位来判断比较的结果。ZF = 0时两操作数相等,否则不相等。当不相等时,如果是无符号数,根据CF位来判断大小;如果是有符号数,根据OF和SF来判断大小。有符号数不相等时怎么判断?如果OF = 0,无溢出,SF = 0时OP1 > OP2,否则OP1 < OP2。如果OP = 1,有溢出,SF = 0时,OP1 < OP2, 此时,OP1为负, OP2为正,SF = 1时,OP1 > OP2,此时, OP1为正, OP2为负。

剩下时间讲加减法的应用。

例: 已知 字存储单元 X, Y, Z, 将 X + (Y + Z – 25H) 送入Z中

MOV AX, Y

ADD AX, Z

SUB AX, 25H

ADD AX, X

MOV Z, AX

例: 已知双字存储单元 X, Y, Z, 将 X + (Y + Z – 25H) 送入Z中

MOV AX, Y

MOV DX, Y + 2

ADD AX, Z

ADC DX, Z + 2

SUB AX, 25H

SBB DX, 0

ADD AX, X

ADC DX, X +2

MOV Z, AX

MOV Z+2, DX

原文地址:https://www.cnblogs.com/hailong/p/1899434.html