8086寄存器详解

8086寄存器详解

    

        因为现在的PC机处理器,都是向下一直兼容到8086,编语言是针对微处理器(即CPU)的,如INTEL8088/8086,8051/8031,Z80等...,我们不可能掌握所有的汇编,无必要也不可能,所以我们选择8086来学习汇编语言。
        而对于一个汇编程序员来说,CPU 中主要可以使用的也就是寄存器而已,汇编程序员可以使用指令来读写 CPU 中的寄存器,从而可以实现对于 CPU 的控制,当然,不同的 CPU ,寄存器的个数和结构都是不一样的,比如 8086 CPU 中,寄存器的个数也就 14 个而已,并且 8086 CPU 中所有的寄存器的结构为 16 位,即一个寄存器中可以存放下 2B 即 2 个字节。
        8086  CPU 中寄存器总共为 14 个,且均为 16 位 。即   
AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 个。
而这 14 个寄存器按照一定方式又分为了通用寄存器,控制寄存器和段寄存器。
  
      
             AX (Accumulator):累加寄存器,也称之为累加器;在乘除指令中指定用来存放操作数。
                                              另外,所有的I/O指令都使用AX或AL与外部设备传送信息。
             BX (Base):基地址寄存器,在计算存储器地址时,可作为基址寄存器使用,BX 寄存器中存放的
                               数据一般是用来作为偏移地址使用的;
             CX (Count):计数器寄存器,常用来保存计数值,如在移位指令、循环指令和串处理指令中用
                                  作隐含的计数器。;
             DX (Data):数据寄存器,使用 DIV 指令进行除法运算时,如果除数为 16 位时,被除数将会是 
                                32 位,而被除数的高 16 位就是存放在 DX 中,而且执行完 DIV 指令后,本次除
                                法运算所产生的余数将会保存在 DX 中,同时,在执行 MUL 指令时,如果两个相
                                乘的数都是 16 位的话,那么相乘后产生的结果显然需要 32 位来保存,而这 32 位
                                的结果的高 16 位就是存放在 DX 寄存器中 ;
     
            SP (Stack Pointer):堆栈指针寄存器;
            BP (Base Pointer):基指针寄存器;
     
            SI (Source Index):源变址寄存器;
            DI (Destination Index):目的变址寄存器;

           IP (Instruction Pointer):指令指针寄存器;
           FLAG:标志寄存器;

           CS (Code Segment):代码段寄存器;
           DS (Data Segment):数据段寄存器;
           SS (Stack Segment):堆栈段寄存器;
           ES (Extra Segment):附加段寄存器;
时间: 2024-10-29 19:05:41

8086寄存器详解的相关文章

16位汇编语言第二讲系统调用原理,以及各个寄存器详解

昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题? helloworld怎么显示出来了. 一丶显卡,显存的概念 1.显示hello就要操作显示器,这是非常原始的,那个时候的程序员,并没有像现在的RGB(红绿蓝)这样的三色真彩色,那个时候就是操作显卡的,定义了一个标准 这个标准就是我们要往固定的地址写入数据,就会显示出来 具体流程 操作显卡 -> 显卡有自己的缓存 -> 把数据写入到显存中, - > 显示数据 (显示到屏幕上) 但是那个时候是没有字的,

Modbus读写模拟量寄存器详解

读可读写模拟量寄存器: 发送命令(主机向从机)格式: [设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][03][00][6B][00][03][CRC低][CRC高] 意义如下: 11:设备地址,例子中的地址是11,溶氧传感器端默认的地址是1,. 03:读模拟量的命令号固定为03,这是Modbus协议规定的. 00.6B:起始地址高8位(00).低8位(6B):表示想读取的模拟量

x86—EFLAGS寄存器详解[转]

鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EFLAGS寄存器有关的内容将直接从本文引用.众所周知,IA-32体系结构为通用系统(general system)提供了16个基本的程序执行寄存器:包含一些通用目的寄存器(General-purpose registers).段寄存器(Segment registers)以及EFLAGS和EIP寄存器

80X86寄存器详解<转载>

引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识, 自然,还是得从最基础的开始,那就从汇编语言开刀吧, 从汇编语言开刀的话,我们必须还先要了解一些其他东西, 像  CPU ,内存这些知识点还是理解深刻一点的比较好, 所以这一篇博文就绕着 80x86  CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍 . 同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长, 如果有兴趣想了解这一块的话,还请自行斟酌

80X86寄存器详解

引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识, 自然,还是得从最基础的开始,那就从汇编语言开刀吧, 从汇编语言开刀的话,我们必须还先要了解一些其他东西, 像  CPU ,内存这些知识点还是理解深刻一点的比较好, 所以这一篇博文就绕着 80x86  CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍 . 同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长, 如果有兴趣想了解这一块的话,还请自行斟酌

[转载]ARM协处理器CP15寄存器详解

用于系统存储管理的协处理器CP15  原地址:http://blog.csdn.net/gameit/article/details/13169405 MCR{cond}     coproc,opcode1,Rd,CRn,CRm,opcode2 MRC {cond}    coproc,opcode1,Rd,CRn,CRm,opcode2 coproc         指令操作的协处理器名.标准名为pn,n,为0~15 opcode1      协处理器的特定操作码. 对于CP15寄存器来说,

2.3 ARM寄存器详解

一共有37个寄存器 1. 31个通用寄存器 2. 6个状态寄存器 R13作为堆栈指针 R14链接寄存器 1.保存函数返回地址 2. 异常返回地址 R15程序计数器(PC指针) 程序状态寄存器 只有在异常时才有程序状态寄存器 ? 为什么有两个CPSR SPSR当异常发生时保存CPSR的地址 当异常结束时SPSR将之前保存的地址给CPSR 程序状态寄存器的数据格式 N????Is set to bit 31 of the result of the instruction. If this resu

022 ARM寄存器详解

R13:堆栈指针寄存器 SP R14:链接寄存器 LR R15:程序计数器 PC指针 CPSR:当前程序状态寄存器 SPSR:备份程序状态寄存器

大脸猫讲逆向之ARM汇编中PC寄存器详解

i春秋作家:v4ever 近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中.当然,文中许多介绍参考了许多零散的文章,本文重点工作在于对相关概念的整理收集,并按相对合理顺序引出后文中对hook技术中的一些难点的解读. Android平台大多采用了ARM架构的CPU,而ARM属RISC,与X86架构的处理器有不同的特征,本文讲介绍ARM中不容易理解的PC寄存器各种问题,包括ARM流水线.PC寄存