了解寄存器:ESI EDI变址寄存器
ESI EDI变址寄存器
32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。
寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。
SI是源变址寄存器,DI是目的变址寄存器。可以用来存放数据、地址,功能类似、用法类似、一般使用哪个都可以。
但需要注意的是:在串处理指令中,SI用作隐含的源串地址,默认在DS中;DI用做隐含的目的串地址,默认在ES中;此时不能混用。
在8086CPU中,只有bx、si、di、bp寄存器可以在“[…]”中来进行内存单元的寻址,比如下面指令时正确的:
MOV AX, [BX + SI]
MOV AX, [BX + DI]
MOV AX, [BP]
MOV AX, [BP + SI]
MOV AX, [BP + DI]
而下面的指令是错误的
MOV AX, [CX]
MOV AX, [AX]
MOV AX, [DX]
MOV AX, [DS]
在[…]中,这4个寄存器可以单个出现,或只能以4种组合出现:BX和SI,BX和DI,BP和SI,BP和DI,比如下面的指令时正确的:
MOV AX, [BX]
MOV AX, [SI]
MOV AX, [DI]
MOV AX, [BP]
MOV AX, [BX + SI]
MOV AX, [BX + DI]
MOV AX, [BP + SI]
MOV AX, [BP + DI]
MOV AX, [BX + SI + IDATA]
MOV AX, [BX + DI + IDATA]
MOV AX, [BP + SI + IDATA]
MOV AX, [BP + DI + IDATA]
下面的指令是错误的:
MOV AX, [BX + BP]
MOV AX, [SI + DI]
只要在[…]中使用寄存器BP,而指令中没有显性地给出段地址,段地址就默认在SS中,比如:
MOV AX , [B] 含义 AX = (SS) * 16 + BP;
BP: 是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.
http://blog.csdn.net/w_shun/archive/2010/04/30/5547559.aspx
了解寄存器:ESI EDI变址寄存器相关推荐
- eax, ebx, ecx, edx, esi, edi, ebp, esp 各寄存器作用
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
- eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比方 ...
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp 寄存器 含义
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
- 汇编语言寄存器说明eax, ebx, ecx, edx, esi, edi, ebp, esp,eip
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp,eip
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
- 汇编语言里 eax ebx ecx edx esi edi ebp esp这些都是什么意思啊
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! eax, ...
- 汇编语言里 eax ebx ecx edx esi edi ebp esp
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
最新文章
- php ob_flush无效,php ob_flush,flush在ie中缓冲无效的解决方法
- [USACO07NOV]Cow Relays
- 十年AI学者影响力盘点:何恺明排名第一,华人学者呈正向流入
- Scala学习(八)练习
- 网上找的关于微信开发一些常用代码
- 【数据结构与算法】数据结构与算法最基础理论
- R语言学习笔记(六)回归分析
- java实验检查危险品代码_2019JAVA第六次实验报告
- 问题:虚拟环境名字相同遇到bug,please specify a different sdk name?
- 什么是类Unix系统?
- c语言32bit数大小端转换,玩儿转C语言:bit 位域大小端转换及传输
- Docker视频教程 之 熟悉docker-machine及docker常用命令 - 知识林
- 基于PLC远程监控,PLC远程运维,PLC远程调试的系统软件开发方案
- 163邮箱邮件服务器域名,注册申请网易免费域名邮箱服务
- 像素,分辨率,Retina屏幕
- 树莓派的产品定位,以及探讨与ARM开发板的区别
- mysql必背50_Mysql必知必会mysql学习笔记(五)
- 宝宝吃饭不乖,怎么办?
- 运行剑灵与服务器断开,剑灵手游程序错误 和服务器断开解决方法
- python ssologin_Python sso
热门文章
- AI应届博士年薪80万起步,BAT校招数据大披露:缺人!
- Python如何计算两个数字之和是多少?
- java页面强制刷新,JS关于刷新页面的相关总结
- 怎样判断java成员方法,【判断题】在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、static、protected和public...
- php 控制usb口,五种方法限制计算机禁用USB接口
- python异常数据处理_Python数据处理:异常值处理方法之3σ原则
- python调用nastran_基于python:Nastran多工况强度分析,根据Excel生成bdf
- ffmpeg / avconv是通用的视频/音频编解码命令行工具【转】
- 家具店-游泳馆-粥店 今天是这么过的... ...
- VSCODE 全局搜索无效的问题