gpt4 book ai didi

assembly - ESI 和 EDI 寄存器的用途?

转载 作者:行者123 更新时间:2023-12-02 12:07:50 26 4
gpt4 key购买 nike

汇编器中 EDI 和 ESI 寄存器的实际用途和用途是什么?

我知道它们用于字符串操作是为了一件事。

谁能举个例子吗?

最佳答案

SI = 来源索引
DI = 目的地索引

正如其他人所指出的,它们对字符串指令有特殊用途。对于实模式编程,ES 段寄存器必须与 DI 一起使用,DSSI 一起使用,如下所示

movsb  es:di, ds:si

SI和DI也可以用作通用索引寄存器。例如,C 源代码

srcp [srcidx++] = argv [j];

编译成

8B550C         mov    edx,[ebp+0C]
8B0C9A mov ecx,[edx+4*ebx]
894CBDAC mov [ebp+4*edi-54],ecx
47 inc edi

其中 ebp+12 包含 argvebxjedi > 有srcidx。请注意,第三条指令使用 edi 乘以 4,并添加 ebp 偏移量 0x54(srcp 的位置);地址两边的括号表示间接。

<小时/>虽然我不记得在哪里看到过,但是 this证实了大部分内容,并且 this (幻灯片 17)其他:

AX = 累加器
DX = 双字累加器
CX = 计数器
BX = 基址寄存器

它们看起来像通用寄存器,但有许多指令(出乎意料地?)隐式使用其中一个寄存器,但是是哪一个?

关于assembly - ESI 和 EDI 寄存器的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com