将汇编程序 (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|0000
或 A0 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: 不清楚您真正想要的偏移量,但我相信您可以填写正确的。
我需要将汇编命令MOV BL,[ALPHA]
翻译成intels 8086处理器的机器码。因此,ALPHA 是数据段第 11 个位置的 1 字节变量,已加载到 DS
寄存器中。
我已经在另一个任务中翻译了 MOV AL,[ALPHA]
。在这里,我在指令集 table 中找到了 MOV AL/AX,addr
,因此我可以将整个内容翻译成机器代码中的 1010|0000 1010|0000
或 A0 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: 不清楚您真正想要的偏移量,但我相信您可以填写正确的。