模式-80386内存寻址问题,汇编语言学习疑惑

问题描述

80386内存寻址问题,汇编语言学习疑惑

8086内存寻址是通过段地址加偏移的方式,因为地址总线长度是20位,而寄存器是16位的,
但是80386的地址总线长度是32位,而寄存器也是32位,通过一个寄存器不就可以寻址吗?
为什么要搞得这么麻烦?为了兼容吗,但保护模式下有不需要考虑兼容问题,为什么不用一个32位寄存器寻址呢?

解决方案

方便实现段或页式内存管理。

解决方案二:

你学习的是过时的dos下的汇编,无论你的处理器是32位的还是64位的,dos都是16位的,你实际上都是在给一个8086在写程序。
如果你用masm,在windows下写汇编程序,完全和C语言一样,可以使用32位寻址。

时间: 2024-08-19 12:10:34

模式-80386内存寻址问题,汇编语言学习疑惑的相关文章

深入理解计算机系统-之-内存寻址(二)--存储保护机制(CPU实模式与保护模式)

cpu的保护模式由来 分段机制 8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-8.同时,8086的诞生也是处理器内存寻址技术的第一次飞跃. 对于一根实际的.实实在在的.物理的.可看得见.摸得着的内存条而言,处理器把它当做8位一个字节的序列来管理和存取,每一个内存字节都有一个对应的地址,我们叫它物理地址,用地址可以表示的长度叫做寻址空间.而CPU是如何去访问内存单元里的数据的方式就叫做寻址. 8086得CPU在内存寻址方面第一次引入了一个非常重

深入理解Linux内存寻址的分段机制

一.前言 最近在学习Linux内核,读到<深入理解Linux内核>的内存寻址一章.原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解.于是,查找了很多资料,最终理顺了内存寻址的知识.现在把我的理解记录下来,希望对内核学习者有一定帮助,也希望大家指出错误之处. 二.分段到底是怎么回事 相信学过操作系统课程的人都知道分段分页,但是奇怪的是书上基本没提分段分页是怎么产生的,这就导致我们知其然不知其所以然.下面我们先扒一下分段机制产生的历史. 实模式的诞生(16位处理器及寻址) 在8086处

汇编语言学习指南(一)

汇编语言和CPU以及内存,端口等硬件知识是连在一起的. 这也是为什么汇编语言没有通用性的原因. 下面简单讲讲基本知识(针对INTEL x86及其兼容机)============================x86汇编语言的指令,其操作对象是CPU上的寄存器,系统内存,或者立即数. 有些指令表面上没有操作数, 或者看上去缺少操作数, 其实该指令有内定的操作对象, 比如push指令, 一定是对SS:ESP指定的内存操作, 而cdq的操作对象一定是eax / edx. 在汇编语言中,寄存器用名字来访

详解Linux系统内存寻址的分页机制

  分页机制在段机制之后进行,以完成线性-物理地址的转换过程.段机制把逻辑地址转换为线性地址,分页机制进一步把该线性地址再转换为物理地址. 硬件中的分页 分页机制由CR0中的PG位启用.如PG=1,启用分页机制,并使用本节要描述的机制,把线性地址转换为物理地址.如PG=0,禁用分页机制,直接把段机制产生的线性地址当作物理地址使用.分页机制管理的对象是固定大小的存储块,称之为页 (page).分页机制把整个线性地址空间及整个物理地址空间都看成由页组成,在线性地址空间中的任何一页,可以映射为物理地址

计算机内存寻址

计算机管理内存的基本方式有两种:段式管理和页式管理.而在使用80x86微处理器时,内存地址分为三个不同的地址:逻辑地址,线性地址,物理地址.他们之间有什么关系,内存是如何寻址,本文主要介绍的就是内存寻址. 1.基本概念: cpu段式管理:段式管理的基本原理是指把一个程序分成若干个段(segment)进行存储,每个段都是一个逻辑实体(logical entity).一个用户作业或进程所包含的段对应一个二维线形虚拟空间,程序通过分段(segmentation)划分为多个模块,故可以对程序的各个模块分

深入理解计算机系统-之-内存寻址(六)--linux中的分页机制

linux的分页机制 四级分页机制 前面我们提到Linux内核仅使用了较少的分段机制,但是却对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页机制,即 页全局目录(Page Global Directory) 页上级目录(Page Upper Directory) 页中间目录(Page Middle Directory) 页表(Page Table) 页全局目录包含若干页上级目录的地址: 页上级目录又依次包含若干页中间目录的地址: 而页中间目录又包含若干页

对象-effectiveJava学习疑惑

问题描述 effectiveJava学习疑惑 在学习effectiveJava时,看到关于使用构建器构建对象时,有这样一句话:因为构造过程被分到了几个调用之中,在构造过程总JavaBean可能处于不一致的状态(P10),不是很理解这句话中的对象不一致是什么意思. 解决方案 其实这个很好理解. 既然被分到了几个调用中,那么这几个调用的先后顺序的不同,是不是会造成被构造对象的状态不一致呢? "几个调用的先后顺序的不同"最容易出现在多线程编程里,因为当你不去做空置时,你是无法决定每个线程的执

32位-IA-32内存寻址问题求解

问题描述 IA-32内存寻址问题求解 大家都说32位系统能够寻址4GB内存但是如下这个段话怎么解释??? 下面的那句话表明物理内存能够达到64GB! 解决方案 在x86时代,为了解决服务器计算机内存不足的情况,Intel在Pentium Pro/Pentium Xeon上增加了一个36bit地址扩展,也就是另外增加了4位地址,因此可以寻址到64GB. 我就有一台很老的dell服务器,用的是pentium iii xeon,用的是windows server 2003,给它插满了16条内存,达到8

汇编语言学习指南(三)

"汇编语言"作为一门语言,对应于高级语言的编译器,我们需要一个"汇编器"来把汇编语言原文件汇编成机器可执行的代码.高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化.抽象等.在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言.现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处.汇编语言的长处在于编写高效且需要对机器硬件精确控制的程