了解寄存器:ESI EDI变址寄存器
来源:互联网 发布:windows sail.js 编辑:程序博客网 时间:2024/05/22 00:24
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来寻找堆栈里数据或者地址.
- 了解寄存器:ESI EDI变址寄存器
- 了解寄存器:ESI EDI变址寄存器
- 5.变址寄存器-ESI和EDI寄存器与其用途
- EAX、ECX、EDX、EBX、ESI、EDI、ESP、EBP寄存器
- EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解
- 通用寄存器:地址指针寄存器,数据寄存器,变址寄存器
- eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
- eax, ebx, ecx, edx, esi, edi, ebp, esp 各寄存器作用
- eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
- eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
- eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
- eax, ebx, ecx, edx, esi, edi, ebp, esp等通用寄存器的作用
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp 寄存器 含义
- Android eax, ebx, ecx, edx, esi, edi, ebp, esp 寄存器的作用
- 变址寄存器
- 8086变址寄存器
- 了解寄存器: EBP寄存器
- eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称
- SCA 2017移动安全技术商业模式论坛——移动终端与物联网应用安全
- Caffe_Windows学习笔记(六)图形化操作工具digits的安装与运行
- leetcode Merge Two Sorted Lists
- 第四周第一课--栈
- Button调整按钮中title和image的位置(包含工具类)ios
- 了解寄存器:ESI EDI变址寄存器
- 提高篇第二十六讲项目2
- 使用IIdentify接口进行空间查询
- Python绘图问题:Matplotlib中%matplotlib inline是什么、如何使用?
- oracle查询不重复多列sql写法
- Zabbix服务器的搭建与应用(一)-------服务器安装系统
- 25个有用的基础命令apt-get/apt-cache
- HDU 6216 模拟
- 哈哈日语 日语五十音图之か、さ、た行