程序的机器代码指令



如何将程序指令c = a-b;在机器代码指令中?我已经提供了操作码,内存地址为a=80, b=81, c=82和程序计数器= 30十六进制。指令长16位,操作码为4位,寄存器为4位,内存地址为16位。

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

助记符看起来像这样:

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位整数,所以我使用的是eax寄存器,它对于x86处理器来说是32位长的,但是你使用哪个寄存器的细节是任意的,只要它足够大,可以容纳你的数字。mov指令将从所提供的内存地址开始,读取寄存器所能容纳的所有字节。

在本例中,您不需要显式地对程序计数器做任何操作,CPU在执行每条指令时增加程序计数器。

最新更新