标签: opcode

了解汇编中的 JMP 代码

我最近刚刚触及汇编语言和调试的表面。我有以下代码:

Address   Hex dump          Command                                  Comments
006E3689   .  E8 C5F9FFFF   CALL 006E3053
->006E368E      E9            DB E9
->006E368F      35            DB 35                                    ; CHAR '5'
->006E3690      80            DB 80
->006E3691   .  0000D490      DD 90D40000
006E3695  />  E8 72040000   CALL 006E3B0C
Run Code Online (Sandbox Code Playgroud)

再往下...

Address   Hex dump          Command                                  Comments
006EB6C8  /.  6A 58         PUSH 58
006EB6CA  |.  68 A0372A00   PUSH 2A37A0
006EB6CF    ^ E9 C17FFFFF   JMP 006E3695
Run Code Online (Sandbox Code Playgroud)

现在,在我编译 -> 指示的代码之前,实际上都包含在 a 中,JMP 006EB6C8当然只是跳到第二组代码,推送了一些内容并返回到顶部。

现在这段代码仍然有效,但我不确定为什么代码在编译时发生了变化(使用 Ollydbg),但更重要的是(我相信)代码如何知道跳转以及跳多远。到目前为止,我的研究告诉我E9是跳转的操作码,但我还没有找到有关 和35的信息80

我假设这 …

x86 assembly opcode disassembly instruction-encoding

0
推荐指数
1
解决办法
2859
查看次数

NASM称"操作码和操作数的无效组合"

我刚开始学习汇编编程.我在linux上使用NASM.我写了这段代码,基本上是为了计算某事物的某些功能而且我知道它可能不是很好,但我真的不在乎这一点,我想要的只是一些想法为什么我一直得到那个错误,因为我我试图修改和切换操作数和操作以及问题部分中的所有内容,但是如果有的话只给了我更多的错误消息.就像我说的那样,我真的,对这整个事情都很陌生,我可能只是愚蠢.问题必须在其中一行中.如果你需要它,我当然会发布更多的代码,我只是不希望你不得不去70-80行奇怪的,不必要的复杂代码.我只是想知道这可能是什么原因导致这种情况发生,因为我现在非常,非常绝望,而且我已经达到了考虑它并且没有任何新想法只会让一切变得更糟的程度.我将把这部分留在这里.但我会给你任何你需要知道的帮助.

    mov dword [power], 2
    mov ecx, 0

while:
    mov eax, [neededforloop]
    cmp eax, ecx
    je endwhile

    mov eax, [power]
    mul eax, 2
    mov [power], eax

    mov eax, ecx
    add eax, 1
    mov ecx, eax

    jmp while
Run Code Online (Sandbox Code Playgroud)

assembly nasm opcode operands

0
推荐指数
1
解决办法
3016
查看次数

编译汇编器操作码

我想知道是否可以用等效的操作码替换汇编指令。(即能够编译操作码而不是指令)如果是这样,是否可以在运行时操作这些操作码?干杯

assembly opcode

0
推荐指数
1
解决办法
1083
查看次数

RISCV解析操作码

我需要帮助了解如何在 RISCV 中解决这个问题。提供以下十六进制值的汇编语言指令:
地址 1000:b3 地址 1001:0b 地址 1002:9c 地址 1003:41

我知道我必须更改为二进制,并且 RISCV 是小端字节序,但除此之外我不知道如何继续。我有几个这样的问题,但我想自己解决剩下的问题。

machine-code opcode riscv instruction-encoding

0
推荐指数
1
解决办法
1607
查看次数

如果计算机配备 Intel 处理器,是否意味着它是 x86 计算机?

  • 每台配备 Intel CPU 的机器都是 x86 机器吗?
  • 考虑到所有 Intel CPU 都向后兼容,这是否意味着每台 x86 机器都能够运行 Intel CPU 指令集?

cpu assembly intel instruction-set opcode

0
推荐指数
1
解决办法
225
查看次数

MIPS-32 操作码格式:大写还是小写?

我目前正在学习计算机组织课程,并且一直在研究 MIPS-32 架构。我注意到我们使用的书列出的操作码全部为小写,而教授列出的操作码全部为大写。我在不同的网站上查找了这一点,发现有些网站的操作码全部为大写,而其他网站的操作码全部为小写。我在堆栈溢出上查找了类似的问题,但没有找到。

例如,要添加,我们可以这样:

ADD $s2, $s1, $s0
Run Code Online (Sandbox Code Playgroud)

但是,其他网站和本书将其描述为:

add $s2, $s1, $s0
Run Code Online (Sandbox Code Playgroud)

谁能澄清哪种操作码格式更传统?我还没有构建汇编语言程序,所以我不确定操作码是否区分大小写;他们是吗?

注:我使用的书是David A. Patterson 和 John L. Hennessy 编写的《Computer Organization and Design MIPS Edition: The Hardware/Software Interface》。

assembly mips opcode mips32

-1
推荐指数
1
解决办法
600
查看次数

汇编 - 操作码与nasm指令

所以我最近试图进入组装,并发现自己真的与NASM的工作方式混淆.据我所知,它是一种用于汇编的"编译器",它将(记忆)指令转换为实际的机器代码.现在我想知道NASM手册(www.nasm.us/doc/nasmdocb.html)中列出的说明和我的机器所采用的操作码之间有什么区别?比如,让我们假装我的英特尔处理器有某种秘密操作码,没有人知道并且没有在手册中列出,NASM是否仍然可以组装它?或者只是返回'无效指令'?并说我知道操作码的机器码格式,我能够手动插入吗?

assembly nasm opcode

-3
推荐指数
1
解决办法
1130
查看次数