0

我们如何把程序指令 c = ab; 在机器代码指令中?我已经获得了操作码、a=80、b=81、c=82 的内存地址和程序计数器 = 30 hex。指令长 16 位,4 位操作码,4 位寄存器和 16 位内存地址。

我只需要知道它是如何开始的正式方式。这是因为我真的不明白我的讲师教什么。如果我能找到明确的方向,那么我有信心在没有讲师帮助的情况下做到这一点。

4

1 回答 1

2

助记符看起来像这样:

mov eax, [a] ; move 4 bytes starting at address a to the eax register
sub eax, [b] ; subtract 4 bytes starting at memory address b from the eax register
mov [c], eax ; move the contents of the eax register to the memory address of c

您在操作码中替换操作 ( mov, sub),寄存器地址替换 ( eax),内存地址替换 ( a, b, c),然后结果是实际的机器指令。我在这里假设你的数字是 32 位整数,所以我使用的是 x86 处理器的 32 位长的 eax 寄存器,但是你使用的寄存器的细节是任意的,只要它足够大来容纳你的数字。该mov指令将从提供的内存地址开始读取寄存器可以容纳的尽可能多的字节。

对于此示例,您不需要明确对程序计数器执行任何操作,CPU 在执行每条指令时都会递增程序计数器。

于 2013-05-14T15:49:01.843 回答