Intel 80x86 寻址模式
随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则。在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么。
一.预赛:
(1)作数
在接触寻址方式之前,我们还要先了解一下操作数的概念,依据操作数存放方式的不同,我们能够将操作数分成3类,
1.马上操作数:操作数包括在本条指令中。
2.寄存器操作数:操作数存放在CPU的某个寄存器中。
3.存储器(内存)操作数:操作数存放在存储器中;
(2)逻辑地址
逻辑地址 = 段地址(存储单元所在逻辑段地址)左移4位 + 偏移地址(该单元的偏移地址)
我们能够发现。这是通过左移的方式将16位扩展成了20位,当初好像由于为了方便处理兼容问题。才採用这样的扩展方式的。
段 是内存设计模型的结果,在80x86内存模型中,各处理器的地址空间不一致(由于要保持兼容性),但它们都被切割成以64KB为单位的区域,每一个这种区域称为段。
note:不同的段地址和偏移地址可能组成同样的内存地址,如:(段地址(左移4为后):A0000,偏移地址FFFF。终于地址AFFFF; 段地址(左移4位后):AFFF0,偏移 地址000F,终于地址AFFFF)。
二.寻址方式的分类:
操作数类型的同样。也会导致寻址方式类型的差异。寻址方式能够分为三大类:
(1)马上寻址:操作数是马上操作数;MOV AL。1234H
(2)寄存器寻址:操作数是寄存器操作数;MOV DS,AX
(3)存储器操作数的寻址又能够分为5种:
1.直接寻址:偏移地址直接存放在存储器中;MOV BX,DS:[1234H]
2.寄存器间接寻址:将操作数在存储器中的地址放到寄存器中,先从寄存器中取出操作数的地址,再从存储器相应的内存单元中取出操作数;MOV AL,[BX]
一般的寄存器默认的是DS(数据段)。BP寄存器默认的是SS(堆栈段);
3.基址寻址:存储单元的偏移地址为规定的基址寄存器(BX, BP)的内容与一个常量得喝,MOV DL,DS:[BX+2]
4.变址寻址:MOV DL,[DI+2]
5.基址+变址寻址
说的比較浅。主体的内容大致就这些了。有些地方仅仅这是在传球,无特殊说明,有兴趣的同学可以自己做。上网查资料,看。
版权声明:本文博主原创文章。博客,未经同意不得转载。
Intel 80x86 寻址模式的更多相关文章
- 《linux 内核全然剖析》 chapter 4 80x86 保护模式极其编程
80x86 保护模式极其编程 首先我不得不说.看这章真的非常纠结...看了半天.不知道这个东西能干嘛.我感觉唯一有点用的就是对于内存映射的理解...我假设不在底层给80x86写汇编的话.我 ...
- X86/X64处理器体系结构及寻址模式
由8086/8088.x86.Pentium发展到core系列短短40多年间,处理器的时钟频率差点儿已接近极限.尽管如此,自从86年Intel推出386至今除了添加一些有关流媒体的指令如mmx/sse ...
- 解决 cocos2dx iOS/mac 设置纹理寻址模式后纹理变黑的问题
sprite:getTexture():setTexParameters(gl.LINEAR,gl.LINEAR,gl.REPEAT,gl.REPEAT) 在安卓设备上,设置了纹理自定义寻址模式,纹理 ...
- 80x86保护模式下IDT和中断调用过程分析
80x86保护模式下IDT和中断调用过程分析 1.中断描述符表(IDT),将每个异常或中断向量分别与它们的处理过程联系起来.与GDT和LDT类似,IDT也是由8字节长度的描述符组成.IDT空描述符的存 ...
- 80X86保护模式及其编程(一)
80x86系统寄存器和系统指令 1.标志寄存器(EFLAGS) 标志寄存器EFLAGS的标志位含义如下图: TF 位8是跟踪标志(Trace flag),当设置该位时可为调试操作启动单步执行方式.复位 ...
- Intel 80x86 Linux Kernel Interrupt(中断)、Interrupt Priority、Interrupt nesting、Prohibit Things Whthin CPU In The Interrupt Off State
目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意 ...
- 操作系统学习(一)、80x86保护模式内存管理
整理的不好,凑合着看吧 目录 1.内存及寻址 2.地址变换 3.分段机制 4.分页机制 5.保护 6.去到底部 一.内存及寻址 返回目录 二.地址变换 80X86 从 逻辑地址 到 物理地址 的转换: ...
- Linux内核源码分析 day01——内存寻址
前言 Linux内核源码分析 Antz系统编写已经开始了内核部分了,在编写时同时也参考学习一点Linux内核知识. 自制Antz操作系统 一个自制的操作系统,Antz .半图形化半命令式系统,同时嵌入 ...
- 80X86寄存器详解<转载>
引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识, 自然,还是得从最基础的开始,那就从汇编语言开刀吧, 从汇编语言开刀的话,我们必须还先要了解一些其他东西, 像 CPU ...
随机推荐
- C# WinForm多线程(三)Control.Invoke
下面我们就把在Windows Form软件中使用Invoke时的多线程要注意的问题给大家做一个介绍. 首先,什么样的操作需要考虑使用多线程?总的一条就是,负责与用户交互的线程(以下简称为UI线程)应该 ...
- SQLSERVER2014的内存优化表
SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技术来支持大规模OLTP工作负载. 就算如此, ...
- Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort
简单介绍 可插入的 shuffle 和 sort 功能,同意在shuffle 和 sort 逻辑中用可选择的实现类替换.这个情况的样例是:用一个不是HTTP的应用协议,如RDMA来 shuffle 从 ...
- UIControl-IOS发展
UIKit提供了一组控件:UISwitch开关.UIButtonbutton.UISegmentedControl分段控件.UISlider滑块.UITextField文本字段控件. UIPageCo ...
- C#如何获得 WINDOWS
版本号
using System; using System.Runtime.InteropServices; namespace GetWindowsVersion { [ StructLayout( La ...
- 对于Netty的十一个疑问(转)
[说明]本文原载于码农 IO(manong.io)官方微信 developerWorks,转载.引用请注明出处及作者. 1.Netty 是什么? Netty 是一个基于 JAVA NIO 类库的异步通 ...
- JS弄ASP.NET(C#)在页GridView信息选择行
做web发展还是新手我,为了之前获得Gridview中间值,它是通过服务器端控件通过第一Gridview将数据保存到服务器,当一个服务器,然后绑定的隐藏字段,在通过的js阅读隐藏字段值,如今,这种方法 ...
- UVA305 - Joseph(数论 + 打表)
UVA305 - Joseph(数论 + 打表) 题目链接 题目大意:约瑟夫环问题:n个人围成一圈,每次都淘汰第m个人,问最后一个幸存下来的人的编号. 这题的意思有点不一样,它规定前面的k个人是好人, ...
- C# - is
Checks if an object is compatible with a given type. An is expression evaluates to true if the pr ...
- 【PHP】PHP获得第一章
一,PHP上部和下部壳体敏感 1)所有的用户定义的函数.类和keyword敏感. 例如以下结果输出一致: echo "hello world" Echo "hello ...