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

Ba5*_*14n 1 assembly machine-code x86-16

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

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

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

Jes*_*ter 5

那一定是一个奇怪的指令集表,因为没有mov r/m1,r/m2(你不能有两个内存引用)。最好尝试一下官方的英特尔一号。你需要的是mov r8, r/m8. 其编码是8A /r. 使用表 2-1。使用 ModR/M 字节的 16 位寻址形式您可以看到,BL具有 16 位位移的操作数disp16意味着 modrm 字节1E后跟 16 位位移,因此完整的指令是8A 1E 0A 00。您可以使用汇编器验证这一点:

8A1E0A00                mov bl, [10]
Run Code Online (Sandbox Code Playgroud)

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