- 2
- 0
- 约1.29万字
- 约 71页
- 2019-11-29 发布于天津
- 举报
算术运算指令之二:减法运算指令 SUB dest,src ;(dest)?(dest)-(src) 减法指令 例 不带借位的减法指令 SUB AX,3000H ;(AX)←(AX)-3000H SUB BX,[SI+100H] ;(BX)←(BX)-[SI+100H] SBB dest,src ;(dest)?(dest)-(src)-(CF) 带借位位减法 例 带借位的减法指令 SBB AX,BX ;(AX)←(AX)-(BX)-CF SBB WORD PTR [SI],1068H ;(SI)←(SI)-1068H-CF 以上两条指令影响A,C,O,P,S,Z 6个标志位 算术运算指令之二:减法运算指令 例:x、y、z均为32位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现w?x+y+24-z,结果放在W, W+2单元中。 MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ; x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 结果存入W, W+2单元 算术运算指令之二:减法运算指令 DEC dest ;(dest)?(dest)-1 减1指令 影响A,O,P,S,Z 5个标志位,操作数为寄存器或内存 例 减1指令 DEC BL ;(BL)←(BL)-1 DEC BYTE PTR[DI+2] ;[DI+2]←[DI+2]-1 NEG dest ;(dest)?0-(dest) 求补指令 操作数可以是内存或寄存器,影响所有标志位 例 设(AL)=02H,(BX)2212H NEG AL ;(AL)←0-(AL),结果(AL)=0FEH NEG BX ;(BX)←0-(BX),结果(BX)=DDEEH 算术运算指令之二:减法运算指令 AAS 减法的ASCII调整指令 对在AL中的由两个非压缩的BCD码相减的结果进行校正,结果仍以非压缩BCD码的形式存放,各位在AL,十位在AH 。 DAS 减法的十进制调整指令 对在AL中的由两个压缩的BCD码相减的结果进行校正,产生一个正确的BCD码的差。 算术运算指令之二:减法运算指令 例 两个未组合BCD码的减法运算 MOV AX,0608H ;AX←0608H SUB AL, 09H ;AL←0FFH AAS ;AL←09H,AH←05H 例:两个组合BCD码的减法运算 MOV AL,73H ;AL←73H SUB AL,27H ;AL←4CH DAS ;AL←46H 算术运算指令之二:减法运算指令 CMP dest,src ; (dest)-(src) 比较指令。完成两个操作数相减,结果反映在标志位上,但不送回结果。用于比较两个操作数的大小关系。 CMP A,B (1)若任意两个数 ZF=0 AB (JNZ 不等转移) ZF=1 A=B (JZ 相等转移) (2)若两个数都是无符号数 CF=0 A≥B (JNC) CF=1 AB (JC) (3)若两个数都是带符号数正数 SF=0 A≥B (JNS) SF=1 AB (JS) (4)若两个数是任意带符号数 SF⊕OF=0 A≥B (
原创力文档

文档评论(0)