2

MOV我已经开始学习 asm,我想知道这两种使用指令的不同方式之间有什么区别AL

第一的:

MOV AL,5H

第二:

MOV SI,5H
MOV AL,[SI]
4

2 回答 2

7

这两个做不同的事情。

; let me use friendlier syntax; IMHO, lower case and 0x5 instead of 5h is more
; readable in case of assembly
mov al, 0x5 ; al = 0x5

mov si, 0x5 ; si = 0x5
mov al, [si] ; al = *si; that is, al is now what was in memory at address 0x5

有一本关于 x86 程序集的简单 wikibook 可以更好地向您解释概念和语法:x86 程序集。汇编通常是简单的语言,但最好只遵循关于它的教程/书籍,首先完全理解语法,然后 - 并且只有这样 - 才能进入汇编阅读和写作的狂野世界。

此外,对于其他资源,您可以查看此处

于 2012-10-04T12:14:37.767 回答
2
  1. 只需将 AL 寄存器的值设置为 5H
  2. 首先它将 SI 寄存器设置为 5H 然后将 SI 取消引用的值移动到 AL 中(即内存地址 5H 中的任何内容现在都移动到 AL 中)。

您还可以在使用 SI 等索引寄存器时应用非零基偏移,例如:

MOV AL,[BX + SI]

在首先将 BX 设置为适当的基偏移地址之后。

于 2012-10-04T12:13:50.683 回答