80386与8086的区别

升级的方向
    增强指令集
    增强硬件能力,如寄存器变宽
    增加运行保护

升级点
    处理器概要
        支持保护模式,同时支持实模式和虚拟模式
        在保护模式下,支持内存分页管理、优先级保护、多任务等
    总线
        数据总线,32位
        地址总线,32位
    寄存器
        通用寄存器
            都是32位宽度
            用途
                EAX: Accumulator Register,累加寄存器,可存储指令参数(如乘法)
                EBX: Base Register,基址寄存器,常保存数据段中的偏移地址
                ECX: Counter Register,计数寄存器,常用于循环指令
                EDX: 常用于指向IO端口
                ESI: Source Index,源变址寄存器,常保存数据段中的偏移地址
                EDI: Destination Index,目的变址寄存器,常保存数据段中的偏移地址
                ESP: Stack Pointer,栈顶寄存器
                EBP: Base Pointer,栈底寄存器
        段寄存器
            CS  代码段寄存器
            SS  堆栈段寄存器
            DS  数据段寄存器
            ES  附加数据段寄存器
            FS  附加数据段寄存器
            GS  附加数据段寄存器
        仍然还是16位,保存的是段选择符(selector),包含了段的权限和信息位置
            0 1     RPL,权限位组,0为最高等级,3为一般程序级别
            2       TI,段信息所在的描述符表,TI=0则在GDT,TI=1则在LDT
            3~15    在描述符表中的位置,
            一共可识别16384个段,14位宽
        指令寄存器
            EIP
            32位
            EIP与CX找到的段地址,相加得到下一指令的物理地址
        标志寄存器
            EFLAGS
            32位
            Intel x86 FLAGS register
                Bit#  Abbreviation  Description             Category
                0       CF          Carry flag                  S
                2       PF          Parity flag                 S
                4       AF          Adjust flag                 S
                6       ZF          Zero flag                   S
                7       SF          Sign flag                   S
                8       TF          Trap flag (single step)     X
                9       IF          Interrupt enable flag       C
                10      DF          Direction flag              C
                11      OF          Overflow flag               S
                12,13   1,1 / IOPL  I/O privilege level (286+ only) always 1 on 8086 and 186        X
                14      1 / NT      Nested task flag (286+ only) always 1 on 8086 and 186           X
                15      1 on 8086 and 186, should be 0 above    Reserved 
                16      RF          Resume flag (386+ only)                     X
                17      VM          Virtual 8086 mode flag (386+ only)          X
                18      AC          Alignment check (486SX+ only)               X
                19      VIF         Virtual interrupt flag (Pentium+)           X
                20      VIP         Virtual interrupt pending (Pentium+)        X
                21      ID          Able to use CPUID instruction (Pentium+)    X 
                Source : www.wikipedia.org
                X – System Flags, S – Status Flags, C – Control Flags
        描述符寄存器
            全局描述符表寄存器GDTR
                48位
                高32位,全局描述符表GDT的基址
                低16位,GDT的大小
            中断描述符表寄存器IDTR
                48位
                高32位,中断描述符表IDT的基址
                低16位,IDT的大小
            描述符表寄存器LDTR
                16位
                描述符表LDT的段选择符
            任务状态寄存器TR
                16位
                任务状态段TSS的段选择符
            控制寄存器
                CR0, CR1, CR2, CR3, CR4
            调试寄存器
                DR0, DR1, ..., DR8
            CE测试寄存器
                TR6, TR7
    寄存器的变址能力
        8个通用寄存器,都支持变址
        mov bx, [ax]
    寻址机制
        GDT和LDT
            每个程序有自己的LDT,所有程序共享GDT
            物理地址=段地址*10h+偏移地址
            保护模式下,必须为每个段建立一个描述符
                每个描述符,8个字节,在内存中连续存放,构成描述符表
        寻址过程
            由段寄存器,得到段选择器
            由段选择器,得到段描述符位置
                TI和表索引
            由段描述符位置,得到32位段地址
            物理地址=段地址*10h+偏移地址
        段寄存器的指定
            显示指定
            缺省值
                [EBX+...]   EBX开头,则为DS
                [EBP+...]   EBP开头,则为SS
                [ESP+...]   ESP开头,则为SS
    数据传送指令
        数据传送指令
            传送方向
                通用寄存器,可到段寄存器,存储器,立即数,自身
                存储器,可到通用寄存器,段寄存器,立即数
        扩展传送指令
            MOVSX,有符号扩展传送,高位00,11
            MOVZX,无符号扩展传送,高位补0
        交换指令
            XCHG OPR1, OPR2
                交换OPR1和OPR2中的数据
            BSWAP REG
                反字节序
    堆栈传送指令
        压栈
            PUSH (通用寄存器、段寄存器、内存、立即数)
                ESP单字减2,双字减4
            PUSHA
                将16位通用寄存器压栈
                顺序为ACDBS(P)BS(I)D
            PUSHAD
                将32位通用寄存器压栈
                顺序为ACDBS(P)BS(I)D
        出栈
            POP (通用寄存器、段寄存器、内存)
                ESP单字加2,双字加4
            POPA
                将16位通用寄存器出栈
                顺序与压栈相反
            POPAD
                将32位通用寄存器出栈
                顺序与压栈相反
    地址传送指令
        LEA REG, MEM
        操作数REG为16位或32位通用寄存器
        源操作数MEM为16位或32位内存
    标志寄存器传送指令
        LAHF    AH到FLAGS低8位
        SAHF    FLAGS低8位到AH
        PUSHF   FLAGS压栈
        POPF    FLAGS出栈
        PUSHF   EFLAGS压栈
        POPFD   EFLAGS出栈
    算术指令
        ADD, ADC, SUB, SBB, CMP
            源操作数为通用寄存器,内存,立即数
            目的操作数为通用寄存器,内存
        INC, DEC
            目的操作数为通用寄存器,内存
        XADD DEST, REG
            交换相加指令
            REG = DEST + REG
            XCHG DEST, REG
            源操作数为通用寄存器
            目的操作数为通用寄存器,内存            
        NEG DEST
            求补指令
            DEST = 0 - DEST
            目的操作数为通用寄存器,内存
        MUL SRC
            源操作数为通用寄存器,内存,立即数
            被乘数放在AL,AX,EAX
            乘积放在AX,DX:AX,EDX:EAX
            byte ptr, word ptr, dword ptr
        IMUL SRC
            有符号乘法
        DIV SRC
        IDIV SRC
            有符号除法
            源操作数为除数,为通用寄存器,内存,立即数
            被除数放在AX,DX:AX,EDX:EAX
            商放在AL,AX,EAX
            余数放在AH,DX,EDX
            byte ptr, word ptr, dword ptr
            被除数扩展高位时
                无符号数,按0扩展
                有符号数,按补码扩展,CBW,CWD,CWDE,CDQ
            对于有符号除法
                商和余数,使用补码表示
                余数和被除数,同符号
            当除数为0或商溢出时,将产生0号中断
    逻辑运算
        AND, OR, XOR, 
            源操作数为通用寄存器,内存,立即数
            目的操作数为通用寄存器,内存
        NOT, 
            目的操作数为通用寄存器,内存
        TEST DEST, SRC
            不存结果的AND
        移位指令
            循环移位
                ROL, ROR
                RCL, RCR
            算术/逻辑左移指令
                SAL DEST, OPRD
                SHL DEST, OPRD
                高位进CF,低位补0
            算术右移指令
                SAR DEST, OPRD
                低位进CF,高位不变
            逻辑右移指令
                SHR DEST, OPRD
                低位进CF,高位补0
            目的操作数为通用寄存器,内存
            OPRD为立即数或CL
    控制转移指令
        中断指令
            INT n
                软中断,包含中断操作码,中断类型码
                过程
                    标志寄存器(FLAGS或EFLAGS)入栈
                    清除TF和IF
                    CS,指令寄存器(IP或EIP)入栈
                    实模式下,获取中断向量表地址(n*4);保护模式下,获取中断描述符表地址(n*8)
                    取出中断例程的地址,装入指令寄存器(IP或EIP)和CS
                    执行中断例程
            中断返回指令
                IRET
                    数据出栈,IP,CS,FLAGS
                IRETD
                    数据出栈,EIP,CS,EFLAGS
    串操作指令
        基本串操作指令
            LODSD
            STOSD
            MOVSD
            SCANSD
            CMPSD
        重复前缀
            REP, REPZ, REPE
            REPNZ, REPNE
        串输入指令
            INSB, INSW, INSD
        串输出指令
            OUTSB, OUTSW, OUTSD

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值