计算机中程序是由按一定顺序排列的一系列指令,通常一条指令包括两方面的内容:操作码和操作数,操作码决定要完成的操作,告诉计算机要干什么;操作数指参加运算的数据及其所在的单元地址。整条指令以二进制编码的形式存放在存储器中。指令要进行操作,都有相应的数据参加,可是数据在哪里?是什么?都是通过不同的方式来找到的。这就是为什么需要寻址。
寻找指令中所需要的操作数或操作数地址的方式称为寻址方式。80486指令系统的寻址方式包括三种类型:操作数寻址、转移地址寻址及I/O端口寻址。其中操作数寻址有七种。
1.立即数寻址(immediate addressing)
立即数
什么是立即数,操作数包含在指令中。在取指令的同时,操作在操作码后面数随着取出,这种操作数被称为立即数。一般立即数以常数形式出现的。常数可以是二进制数、十进制数、十六进制数、字符串。
立即数寻址
当立即数寻址时,只允许源操作数为立即数,目标操作数必须是寄存器或存储器,其作用是给寄存器或存储单元赋值。在汇编中,立即数不能作为指令中的第一操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。比如下面的第二操作数都是立即数。
例如:
MOV AL, 0FH ; 将8位立即数0FH传送到AL寄存器中
0FH 是源操作数,0F是16进制数,用后缀H表示的。如果16进制数的第一位超过9,即第一位是A到F,在写程序代码时需要在数字前面加一个0,以便与程序中的变量区分。 AL是一个寄存器,在指令中做目的操作数(第一操作数)。MOV指令是将源操作数送给目的操作数。所以整条指令是把十六进制数0FH送到寄存器AL中
MOV AX, 0102H ; 将16位立即数0102H传送到AX寄存器中
MOV EAX,12345678h;将32位立即数12345678h传送到EAX寄存器中
注释:
AX是16位寄存器累加器,可分成AH、AL两个8位寄存器单独使用
AL是8位寄存器累加器
EAX是32位的寄存器