Intel 80x86 寻址方式

2024-05-05 12:38
文章标签 方式 intel 寻址 80x86

本文主要是介绍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 寻址方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961747

相关文章

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多