1、立即寻址方式
mov AL,5 (AL)=05H mov AX,3064H (AX)=3064H mov EAX,123456H (EAX)=123456H
2、寄存器寻址方式
mov AX,BX (AX)=3064H (BX)=1234H (AX)=1234H MOV EXC,EDX
3、直接寻址方式
mov AX,[2000H] mov AX,2000H ;这两者等效
4、寄存器间接寻址方式
mov AX,[BX] 默认DS:[BX] ;也可以制定其他段跨越前缀来取得其他段中的数据 mov AX,ES:[BX]
5、寄存器相对寻址方式(直接变址寻址方式)
mov AX,COUNT[SI] mov AX,[COUNT+SI]
6、基址变址寻址方式
mov AX,[BX][DI] MOV AX,[BX+DI] mov AX,[BX][BP] 是错误的。
7、相对基址变址寻址方式
mov AX,MASK[BX][SI] mov AX,MASK[BX+SI] MOV AX,[MASK+BX+SI]
8、比例变址寻址方式
MOV EAX,COUNT[ESI*4]
9、基址比例变址寻址方式
mov ECX,[EAX][EDX*8]
10、相对基址比例变址寻址方式
mov EAX,TABLE[EBP][EDI*4]
JMP
1、段内直接寻址
2、段内间接寻址
jmp BX ;(IP)=BX jmp TABLE[BX] ;(ip) = 16d*(ds) + (BX) +位移量
WORD PTR为操作符。指定地址是字
3、段间直接寻址
4、段间间接寻址
段内,段间区别是,段内修改(IP)的值,段间修改(CS:IP)的值
BP 是寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到
比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.
SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。
[SI]是寄存器间接寻址,它是指SI中地址的内容如
mov si,2000
mov ax,[si] //将2000地址中的内容赋给ax而SI,寄存器寻址方式
SI 就是指SI本身的内容
mov si,2000
mov ax,si //将SI中的内容2000赋给ax
时间: 2024-10-12 03:45:11