nasm寻址模式

寄存器寻址(register addressing)

由于寄存器寻址不包含内存,速度非常快

mov dx,XXX
mov XXX,cx
mov rax, rbx


立即寻址(immediate addressing)

立即操作数包含常量或者表达式

BYTE_VALUE  DB  150    ;定义字节
WORD_VALUE  DW  300    ;定义字
ADD  BYTE_VALUE, 65    ;立即数65加到BYTE_VALUE
MOV  AX, 45H           ;立即数0x45 -> ax寄存器


直接内存寻址(direct memory addressing)

ADD  b_value, dl ;把寄存器里面的值加到BYTE_VALUE指向的内存
MOV bx, w_value ;把w_value内存地址的值存入bx寄存器


直接偏移寻址(direct-offset addressing)

BYTE_TABLE DB  14, 15, 22, 45      ; Tables of bytes
WORD_TABLE DW  134, 345, 564, 123  ; Tables of words

MOV CL, BYTE_TABLE[2]   ; 22
MOV CL, BYTE_TABLE + 2  ; 22
MOV CX, WORD_TABLE[3]   ; 123
MOV CX, WORD_TABLE + 3  ; 123


直接内存寻址(indirect memory addressing)

一般为 段:偏移 寻址

MY_TABLE TIMES 10 DW 0  ; 定义10个2字节,并初始化为0
MOV EBX, [MY_TABLE]     ; 把 MY_TABLE 的有效地址存入 EBX
MOV [EBX], 110          ; EBX指向的内存赋值110,即 MY_TABLE[0] = 110
ADD EBX, 2              ; EBX = EBX +2
MOV [EBX], 123          ; EBX指向的内存赋值123,即 MY_TABLE[1] = 123


要定位到准确数据段的内存地址,需要段的起始地址(ds 寄存器) + 偏移地址(有效地址)

上一篇: nasm系统调用
下一篇: nasm常用指令
作者邮箱: 203328517@qq.com