算术运算类指令
    六个状态标志
    1.进位标志CF (Carry Flag)
    当加减运算结果的最高有效位进位或借位时,CF=1
    进位标志是针对无符号整数运算设计的,反映无符号数据加减运算结果是否超出范围
    2.溢出标志OF (Overflow Flag)
    用于表达有符号整数进行加减运算的结果是否超出范围
    3.零状态标志ZF (Zero Flag)
    运算结果为0,ZF=1
    4.符号标志SF (Sign Flag)
    反映运算结果是正数还是负数,最高位的值是什么SF就是什么
    5.奇偶标志PF (Parity Flag)
    反映运算结果最低字节中1的个数是奇数还是偶数,是偶数(包括0)时,PF=1
    6.调整表示AF (Adjust Flag)
    反映加减运算时最低半字节有无进位或借位(一般不用 忽略掉)

    加法指令
    1加法指令ADD
    add dest,src ;dest=dest+src
    2.带进位加法指令ADC
    adc dest,src ;dest=dest+src+CF
    3.增量指令INC
    inc edx ;edx自增1

    减法指令
    1.减法指令SUB
    sub dest,src ;dest=dest-src
    2.带借位减法指令SBB
    sbb dest,src ;dest=dest-src-CF
    3.减量指令DEC
    dec eax ;eax自减1

    大小写字母转换程序
    ; eg3.12.asm in Windows Console
    include io32.inc
    .data
    msg byte ‘welcome’,0
    .code

    start:
    mov ecx,(lengthof msg)-1

    mov ebx,0
    again:
    sub msg[ebx],’a’-‘A’
    inc ebx
    loop again
    mov eax,offset msg
    call dispmsg
    exit 0
    end start
    image.png
    image.png

    求补指令
    NEG 它对操作数进行求补运算,即用0减去操作数,然后结果返回操作数

    比较指令
    CMP 它使目的操作数减去源操作数,差值不送回到目的操作数,但按照减法结果影响状态标志(后续会有应用)

    乘法指令
    mul 无符号数乘法
    imul 有符号数乘法
    指出源操作数,隐含目的操作数

    若src是8位的数,则AL与src相乘得到16积,存入AX中;若src是16的数,则AX与src相乘得到32位积,高16位存入DX,低16位存入AX中;若src是32位的数,则EAX与src相乘,得到64的积,高32位存入EDX,低32位存入EAX中

    除法指令
    div
    idiv
    同乘法

    (乘法除法大致了解 见到具体应用再详细添加)

    零位扩展和符号扩展指令

    mov al,82h ;AL=82H
    movzx bx,al ;AL=82H 零位扩展 BX=0082H
    movzx ebx,al ;AL=82H 零位扩展 EBX=00000082H

    mov al,82h
    movsx bx,al ;AL=82H 符号扩展 BX=FF82H
    movsx ebx,al ;AL=82H 符号扩展 EBX=FFFFFF82H