添加到内存引用的以下字节说明符在NASM汇编程序中有什么作用?

时间:2014-02-13 21:05:59

标签: assembly nasm

以下代码

section .data

Snippet db "KANGAROO"

section .text

global_start

_start:

mov ebx, Snippet
add byte [ebx], 32

将BX中的内存地址所引用的数字加32。但是,添加后的字节说明符是什么?我的书说这意味着我们只在EBX中向内存地址写入一个字节。但我不太明白这意味着什么(我是汇编程序的初学者)。将字节写入内存地址是什么意思?写多个字节意味着什么?

2 个答案:

答案 0 :(得分:4)

byte [EBX],或者在microsoft汇编器的情况下,byte ptr [EBX]告诉汇编器EBX是指向字节大小的变量的指针。只有在使用立即值作为操作数时才需要定义这样的指针类型。如果使用寄存器作为操作数,则汇编器假定大小与寄存器相同,例如mov [ebx],al或mov [ebx],ax或mov [ebx],eax。

答案 1 :(得分:2)

并非所有add都是相同的操作码。纳斯姆需要知道要发射哪个。如果您说add word [ebx], 32,则会向[ebx][ebx + 1]添加16位32。同样适用于add dword [ebx], 32。由于16位或32位32的高位将为零,因此在这种情况下实际上不会产生任何差异(存储32位需要更多的字节),但Nasm仍然需要知道要发出哪个操作码