在nasm中经常看到两种操作:
ksz equ 1
yx db 1
这两种操作的区别在于equ是用于直接替换相当于c语言中的define,db之类相当于c语言中的定义变量,会在内存中开辟一片空间,并且存储变量。
因此也就引出了nasm汇编中的最经常提到的各种内存和寄存器中的操作,由于各种寄存器都只有一个,所以不存在寻址问题,一旦提到寻址,必然是对存储器的操作,一般是对内存的操作(包括显卡,网卡的内存)。nasm中涉及对内存的操作时,只要不加括号,就是对地址的操作,加上中括号[ ]就是对内存值的操作。
mov cl ah ; 把ah的值赋给cl
mov ah ksz ; 把1赋给ah,因为ksz是直接替换并非定义变量
mov al yx ; 把 yx的地址,赋给al
mov bl [yx] ; 把 yx的值赋给bl
mov byte [ch -2 ] , dl 把dl的值赋给ch-2的内存地址中