https://blog.youkuaiyun.com/weixin_45609535/article/details/124499616
以上是各种字母标志的综合
普通减法SUB,带借位减法SBB,减1DEC,求补NEG,比较CMP,减法ASCII调整ASS,十进制调整DAS。
1.1 SUB
SUB dest,src;(dest)<--(dest)-(src)
目标-源,结果送到目标。
无符号数小减大,产生借位,CF=1.有符号数相减结果溢出,OF=1.(溢出标志位)
1.2 SBB
SBB dest,src;(dest)<--(dest)-(src)-(CF)
带借位减法,主要用于多字节减法。
1.3 DEC
eg:DEC dest
目标操作数自减1,不影响进/借位标志CF。常用于循环程序中修改循环次数。
目标操作数不能是段寄存器。与自增指令INC的操作对象一样。
1.4 NEG
eg:NEG dest;(dest)<---0 -(dest)
求补指令 ,可以得到负数的绝对值。p71 2.4
1.5 CMP
CMP dest,src;(dest)-(src)
目标操作数减源操作数但结果不送到源操作数中,只影响标志位。
两个被比较的内容相同,(ZF)= 1。(ZF是零标志位)
1.6 AAS
减法ASCII调整,调整之后得到的结果是正确结果。个位在AL,十位在AH。不压缩BCD码(加法AAA)
如果得到的AL大于9或者AF(四位运算,辅助进位标志,BCD码专用,为1时有进位/借位,否则为0) 八位运算是CF。
AL-6,AH-1,AF,CF置1。
否则不变。
1.7 DAS
十进制调整,隐含寄存器操作数AL。压缩BCD码(加法DAA)
如果AL大于9或者进/借位标志AF=1
AL-6,AF置1。
如果AL大于9FH,或者进/借位标志CF=1
AL-60H,CF置1。