第3章80x86指令系统和寻址方式2.算术运算指令(1)加法类指令.ADD dest,src; dest ← dest+srcADC dest,src; dest ← dest+src+CF(Add with Carry)例3.38 ADD AX,BXADD AX,OFOFOHADC AX, BXADC AL,4ADC EXTMEM.AXADC EXTMEM,23例3.392个4字节数相加MOV AX, FIRSTADD AX,SECONDMOV FIRST,AXMOV AX, FIRST+2ADC AX.SECOND+2MOV FIRST+2,AX16
16 2. 算术运算指令 (1) 加法类指令 ◼ ADD dest, src ; dest dest+src ◼ ADC dest, src ; dest dest+src+CF(Add with Carry) 例 3.38 ADD AX, BX ADD AX, 0F0F0H ADC AX, BX ADC AL, 4 ADC EXTMEM, AX ADC EXTMEM, 23 例 3.39 2个4字节数相加 MOV AX, FIRST ADD AX, SECOND MOV FIRST, AX MOV AX, FIRST+2 ADC AX, SECOND+2 MOV FIRST+2, AX 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式-INC reg/mem; reg/mem <reg/mem+1(Increment by 1)例:INC AXINC BXINCBYTEPTRMEMLOCINC AL17
17 ◼ INC reg/mem ; reg/mem reg/mem+1 (Increment by 1 ) 例: INC AX INC BX INC BYTE PTR MEMLOC INC AL 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式(2)减法类指令-SUB dest,src; dest← dest-srcSBB dest, src; dest ←dest-src-CF(Integer Subtractionwith Borrow)SUB AX, BXSUB SI,DS:[100H]SUB AL,30HSUB DS:[20H],1000HSUB SS:[1000H+2],CLSUB SI,DS:[100H]SBB AX, BXSBB AX,2010HDEC reg/mem; reg/mem ← reg/mem-1 (Decrement by 1)DEC CXDEC DS:[100H+2]18
18 (2) 减法类指令 ◼ SUB dest, src ; dest dest-src ◼ SBB dest, src ; dest dest-src-CF (Integer Subtraction with Borrow) SUB AX, BX SUB SI, DS:[100H] SUB AL, 30H SUB DS:[20H], 1000H SUB SS:[1000H+2], CL SUB SI, DS:[100H] SBB AX, BX SBB AX, 2010H ◼ DEC reg/mem ; reg/mem reg/mem-1 (Decrement by 1) DEC CX DEC DS:[100H+2] 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式(3)取补指令-NEGreg/mem; reg/mem <← 0-reg/mem (Two'sComplementNegation)例:M0VAL,00000001BNEG ALNEG WORDPTR[SI+1](4) 比较指令-CMP dest,src; dest-src例:CMP AX, BXCMP AL,20HCMP EXTMEM, 61FAHCMP AX,0FF00HCMP AL, 5JZ ABCABC:19
19 (3) 取补指令 ◼ NEG reg/mem ; reg/mem 0-reg/mem (Two's Complement Negation) 例: MOV AL, 00000001B NEG AL NEG WORD PTR[SI+1] (4) 比较指令 ◼ CMP dest, src ; dest-src 例: CMP AX, BX CMP AL, 20H CMP EXTMEM, 61FAH CMP AX, 0FF00H CMP AL, 5 JZ ABC . ABC: . 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式(5)乘法指令-MUL reg/mem; AX ←ALxreg/mem8 (Unsigned Multiply);或DX:AX←AXxreg/mem16例:MOVAL.NUMBER1MUL NUMBER2MOVAX.NUMBER1MULNUMBER2IMUL reg/mem;AX←ALxreg/mem8 (Signed Multiply);或DX:AX←AXxreg/mem16-IMUL dest(r16),src(r/m16/imm8/imm16)-IMUL dest(r16), src(r/m16), imm(8/16)例:MOV AX. 1234HIMULNUMBER20
20 (5) 乘法指令 ◼ MUL reg/mem ; AX ALreg/mem8 (Unsigned Multiply) ; 或DX:AX AXreg/mem16 例: MOV AL, NUMBER1 MUL NUMBER2 MOV AX, NUMBER1 MUL NUMBER2 ◼ IMUL reg/mem ; AX ALreg/mem8 (Signed Multiply) ; 或DX:AX AXreg/mem16 ◼ IMUL dest(r16), src(r/m16/imm8/imm16) ◼ IMUL dest(r16), src(r/m16), imm(8/16) 例: MOV AX, 1234H IMUL NUMBER 第3章 80x86指令系统和寻址方式