将汇编程序 (8086) 命令转换为机器代码

Coverting Assembler (8086) Command Into Machine Code

我需要将汇编命令MOV BL,[ALPHA]翻译成intels 8086处理器的机器码。因此,ALPHA 是数据段第 11 个位置的 1 字节变量,已加载到 DS 寄存器中。

我已经在另一个任务中翻译了 MOV AL,[ALPHA]。在这里,我在指令集 table 中找到了 MOV AL/AX,addr,因此我可以将整个内容翻译成机器代码中的 1010|0000 1010|0000A0 10

我倾向于使用指令集table的MOV r/m1,r/m2,但我不是100%确定,因为我在选择r/m部分时遇到了问题。由于这是为考试做准备,如果有人能提供帮助,我将非常高兴:)

那一定是一个奇怪的指令集table因为没有mov r/m1,r/m2(你不能有两个内存引用)。最好试试 official intel one。你需要的是mov r8, r/m8。其编码是 8A /r。使用 Table 2-1。具有 ModR/M 字节 的 16 位寻址形式 您可以看到具有 16 位位移 disp16 的操作数 BL 表示 1E 的 modrm 字节后跟16位位移,所以完整的指令是8A 1E 0A 00。您可以使用汇编程序验证:

8A1E0A00                mov bl, [10]

PS: 不清楚您真正想要的偏移量,但我相信您可以填写正确的。