当前位置: 首页 > 知识库问答 >
问题:

这行汇编代码有什么作用?

长孙逸仙
2023-03-14

我知道这行代码将某些内容移动到eax寄存器中,但是dword ptr [edx 15Ch]有什么作用?

mov eax, dword ptr [edx + 15Ch]

它是否接受edx中的值并添加15C=Q,然后将地址Q中的值加载到eax中?如果是这样,这个conetxt中的dword ptr是什么意思?

共有1个答案

夏祯
2023-03-14

是的,这就是它的作用。

dword ptr修饰符在这里是多余的,因为寄存器已经是32位了,但是当不能直接推断时,有时需要告诉汇编程序它应该处理什么类型的数据。例如

push dword ptr [edx + 15Ch]
 类似资料:
  • 1. 2. 如果我错了,请纠正我。谢谢大家!:) 根据我迄今为止的理解: < code>JNZ如果不等于零则跳转,它是否跳转取决于< code>ZF是否设置为1。如果是1,它不会跳。否则,它会跳起来。 根据我对代码#1的理解,< code >测试EAX,EAX将检查它是否为零。如果它不等于零(< code>ZF为0),它将跳转到地址00407190。 对于代码#2 将把EAX寄存器设置为0。它是否

  • 问题内容: 我正在阅读DigitalOcean的golang客户程序。我注意到他们在变量中创建了* Op结构的实例。示例:https: //github.com/digitalocean/godo/blob/master/droplets.go#L32 为什么需要此行? 问题答案: 该行是*DropletsServiceOp满足DropletsService接口的编译时检查。 该行对程序的执行没有

  • 因此,我开始开发x86\u 64 hobby内核,我发现这段代码用于加载GDT(全局描述符表),但我不知道它是做什么的。 我知道它从rdi寄存器(sysv abi中函数调用的第一个参数的寄存器)加载我的gdt描述符,但我不知道为什么我需要将所有段寄存器设置为0x10,其余的是什么黑魔法?

  • 该程序应该使用int 0x10在ASCII中打印一个具有给定字符的金字塔,3行的预期结果(下面代码中使用的数量)将是: A. a a a a a 要编译和运行代码,我使用nasm编译它,然后使用qemu进行仿真: 然而,程序get无法打印所有ASCII值。此外,如果有任何针对nasm代码的调试器,可以让您逐行运行,允许您检查寄存器值,这对学习也很有帮助。

  • 用这2行代码创建的对象有什么区别? 类创建具有、、和数据字段的人员。类是的子类,它添加了。