8086 CPU 寻址方式
8086 CPU 寻址方式灵活。有以下几种
idata 表示常量
1. [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 mov ax, ds:[0] ,表示把 ds 寄存器中所在段的地址+偏移地址 0 的内存单元中的值赋给ax , 不能用
mov ax, [0] ,这样在masm 中会当作mov ax, 0, 在windows的 debug 和 nasm 中可以用 mov ax, [..] 的方式定位内存,段地址默认放在 ds 中。
2. [bx] 用一个变量来表示内存地址,可用于间接定位一个内存单元。 比如 mov ax, [bx] ,段地址默认放在ds 中
3. [bx+idata] 用一个变量加常量表示内存地址,可在一个其实地址的基础上用变量间接定位一个内存单元
比如:
mov ax, [bx+idata]
mov ax, [idata+bx]
mov ax, idata[bx]
都是等价的,相当于高级语言中的数组表示方法。
4. [bx+si] 用两个变量表示地址。
5. [bx+di] 等价于 [bx+si].
6. [bx+si+idata] 用两个变量和一个常量表示地址。
7 [bx+di+idata] 等价于 [bx+si+idata].
关于 bx,si,di,bp
在 8086 CPU 中,只有这四个寄存器可以用在 [...] 中进行内存单元的寻址,比如
mov ax, [bx]
mov ax, [bx+si]
mov ax, [bx+di]
mov ax,[ bp]
mov ax, [bp+si]
mov ax, [bp+di]
在[..]中,bx,di,si,bp,可以单个出现,但是只能以四种组合方式出现
bx和si, bx和di, bp和si, bp和di
比如
mov ax,[bx+bp]
mov ax,[si+di]
这两条指令是错误的。
只要在[...]中使用寄存器bp, 而指令中没有显实的给出段地址,段地址默认在 ss 中
mov ax, [bp] 段地址在 ss中
mov ax,[bp+idata] 段地址在 ss中
mov ax,[bp+si] 段地址在 ss中
mov ax, [bp+si+idata] 段地址在 ss中
也可以显实的指定段寄存器
mov ax, ds:[bp]
mov ax, es:[bx]
mov ax, ss:[bx]
mov ax ,cs:[bx+si]
-------------------------------------------------------------------------------------------------
寻址方式总结
寻址方式 名称
[idata] 直接寻址
[bx] 寄存器间接寻址
[si] 寄存器间接寻址
[di] 寄存器间接寻址
[bp] 寄存器间接寻址
[bx+idata] 寄存器相对寻址
[ si+idata] 寄存器相对寻址
[di +idata] 寄存器相对寻址
[bp+ idata] 寄存器相对寻址
[bx+si] 基址变址寻址
[bx+di] 基址变址寻址
[bp+si] 基址变址寻址
[bp+di] 基址变址寻址
[bx+si+idata] 相对基址变址寻址
[bx+di+idata] 相对基址变址寻址
[bp +si +idata] 相对基址变址寻址
[bp+di+idata] 相对基址变址寻址
8086 CPU 寻址方式的更多相关文章
- 8086 CPU 寄存器简介
转载:http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些 ...
- Intel 8086 CPU
一.8086概述 Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标).资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配 ...
- [转帖]8086 CPU 寄存器简介
8086 CPU 寄存器简介 https://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 哎 没看完 感觉好复杂. 引子 打算写几篇 ...
- 8086 cpu为什么要把段地址*16+偏移量形成物理地址呢?
8086 cpu为什么要把段地址*16+偏移量形成物理地址呢? 这是因为,8086地址线是20位,段寄存器是16位,将段寄存器*16实际上就是向左移动4位,形成20位和8086的二十位地址线匹配. I ...
- 8086 CPU 寄存器简介(超详细,图文并茂)
http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html
- linux 内核源代码情景分析——Intel X86 CPU 系列的寻址方式
当我们说一个CPU是"16位"或"32"位时,指的是处理器中"算数逻辑单元"(ALU)的宽度.数据总线通常与ALU具有相同的宽度.当Inte ...
- 【OS】实模式和保护模式区别及寻址方式
实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别 ...
- [转]CPU的位数与操作系统的位数的区别
转自:http://weiheyouchou.blog.hexun.com/35564976_d.html 随着近来AMD和Intel的64位CPU以及 Microsoft 64位操作系统的相继发布, ...
- 汇编语言--寄存器(cpu工作原理)
本文地址:http://www.cnblogs.com/archimedes/p/assembly-register.html,转载请注明源地址. 本文主要将介绍的是8086 CPU中的寄存器, 寄存 ...
随机推荐
- 使用gettimeofday测试函数运行的时间
#include <time.h> #include <stdio.h> #include<sys/time.h> #define NEW_TIME_VALE st ...
- 快捷键accesskey
<!DOCTYPE html> <html> <body> <a href="http://www.w3school.com.cn/html/&qu ...
- 四、Nginx负载均衡upstream
user www; worker_processes ; error_log /usr/local/nginx/logs/error.log crit; pid /usr/local/nginx/lo ...
- ubuntu 12.04 安装sublime2
add-apt-repository ppa:webupd8team/sublime-text-2 apt-get update apt-get install sublime-text 安装控制器: ...
- RedHat Linux 5.5安装JDK+Tomcat并部署Java项目
与大家分享下RedHat Linux 5.5安装JDK+Tomcat并部署Java项目的步骤,希望对大家有用. 1.下载并安装jdk 虚拟机中安装RedHat Linux 5.5 64位企业版, 这里 ...
- PHP - 接口 - 多接口
/* * 使用多接口 */ //定义接口1 interface IPerosn_one{ public function eat(); } //定义接口2 interface IPerson_two{ ...
- BZOJ 1112: [POI2008]砖块Klo1112( BST )
枚举每个长度为k的区间, 然后用平衡树找中位数进行判断, 时间复杂度O(nlogn). 早上起来精神状态不太好...连平衡树都不太会写了...果断去看了会儿番然后就A了哈哈哈 ------------ ...
- 利用Winscp,Putty实现Windows下编写Linux程序
本文讲的方案实现以下功能:利用winscp和putty的脚本功能,实现在Window平台上编写代码,上传到Linux进行编译,然后取编译结果.需要用到3个文件,分别如下: (1) synchroniz ...
- DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)
函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...
- extjs_04_grid(弹出窗口&行编辑器 CRUD数据)
1.弹出窗口(添加.删除) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/f ...