标签:内存地址 intel 位置 指针 bsp 因此 速度 int justify
在内存中,指令和数据都以二进制方式存在,在形式上没用差别。
寄存器在CPU内部用于存储数据的部件,进而实现对CPU的控制。
8086CPU的地址总线宽度为20bit,它寻址范围是0-FFFFF H
地址宽度决定了CPU的寻址能力。数据总线的宽度决定了CPU与外设之间的传输速度。
伪指令不会产生机械码。
如果一根内存条为8G,表示CPU的内存地址为8G
CPU内存地址大小是地址总线的宽度决定的。内存地址空间,及逻辑地址空间,是所有物理内存在逻辑上的统一编址。
冯诺依曼体系结构的核心思想是存储程序。即指令和数据都必须以二进制存储在内存中。
冯诺依曼体系结构中,认为数字计算机中五大部分为控制器,运算器,存储器(内存),输入设备,输出设备。
在8086中,物理地址为FF00H的内存地址单元,相应逻辑地址既可以表示为FFF0:0,也可表示为FF00:0F00。
分析:只需要满足 段地址*16+偏移地址=物理地址 即可
8086中内存逻辑地址用 段地址:偏移地址 表示。其中,段地址*16表示的是这个逻辑段的起始物理地址,偏移地址则可以理解为内存单元相对于段起始物理地址的位移量。
他们是8086中通用的16位寄存器。CPU内部运算时,他们通常被用来保存操作数和中间结果。
为了和早期8位CPU的指令集相兼容,这个四位寄存器可以分别拆开成两个独立的8位寄存器使用。如AX可以当作AH和AL两个单独的8位寄存器。
AX作为两个寄存器的时候,就是单独的寄存器!
汇编指令mov ax,4c00h和mov ah,4ch都可以使寄存器ah的值为4ch
处理器的ISA,全称Instruction Set Architecture(指令集体系结构),指的是处理器支持的指令以及指令的字节级编码
Intel公司x86系列的CPU,其硬件架构不同,所支持的指令及指令的字节编码也不同
不同CPU生产厂商的CPU在ISA级别上不一定互相兼容,各自有各自ISA。
对于不同的CPU 生产商,在生产时遵从相同的ISA,则认为这些CPU在ISA级别上时兼容的。
相同的CPU有不同的汇编指令集。
X86系列CPU8086和8083为例,虽然同属一个系列,但8086是16位CPU,8086是32位CPU,后者支持的指令集比8086支持的指令集丰富的多。
寄存器CS,全称Code Segment Register,代码段寄存器,用来存放代码段的段地址。
寄存器IP,全称Instruction Pointer,指令指针寄存器,用来存放代码段地址
寄存器CS和IP的值合在一起,CS:IP的值合在一起,恰好构成计算器中下一位将要执行指令的逻辑地址,由此通过段地址*16+偏移地址=物理地址计算出下一位治理的物理地址。
CPU在工作时,每取一条指令,会同时自动修改IP的值,为下一次取指令做准备,具体做法是将IP的当前值加上正在读取的指令的长度,作为IP地址。
在8086内存空间中的内存单元而言,20位的物理地址是唯一的,而逻辑地址则可能有很多,具体于逻辑段的划分有关。例如:在8086中,物理地址为FF00H的内存地址单元,相应逻辑地址既可以表示为FFF0:0,也可表示为FF00:0F00。
分析:只需要满足 段地址*16+偏移地址=物理地址 即可。
在8086中,段 是一个逻辑上的概念,是为了解决8086内部16位寄存器无法表示20位地址而在逻辑上对内存进行分块使用的机制。
内存地址空间的大小,与CPU地址总线的宽度有关。比如8086地址总线宽度20bit,因此,内存空间范围是0-FFFFFH,即1M的容量。
在8086中,对内存地址空间逻辑上进行分段时候,只要段的大小不超过64KB即可,至于逻辑段的起始位置,则没有要求。比如一个逻辑段不可以从12305H开始。段的起始物理地址必须是16的整数倍。
标签:内存地址 intel 位置 指针 bsp 因此 速度 int justify
原文地址:https://www.cnblogs.com/zyx20171346065/p/9786164.html