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

时间:2015-05-24 00:08:17

标签: assembly x86-16 machine-code

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

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

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

1 个答案:

答案 0 :(得分:4)

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

8A1E0A00                mov bl, [10]

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