操做数直接包含在指令机器码中紧跟在操做码的后面code
例如内存
解释:把后面的操做数传送给ax,al寄存器基础
mov ax,0a7fh mov al,5h
操做数是寄存器操做数(16位对16位,8位对8位)数据
解释:一个寄存器的数给另外一个寄存器di
mov ax,bx mov dl,cn
解释:把存储器里数据段ds(默认)的地址所对应的两个操做数传送给ds构成16位再给ax寄存器co
mov ax,[2000h]//经过ds数据段和偏移地址2000h求得物理地址,把该物理地址的内容传送到ax中 非默认时:mov ax,es:[2000h]//指定了数据段
物理地址求法:假如ds=3000h,那么内存地址是ds左移四位加[ ]里面的地址
[ ]里面的寄存器能够是bx,bp,si,di
bx,si,di对应的数据段寄存器是ds,而bp对应的是ss
mov ax,[bx]//物理地址=ds*16+bx mov bx,[si]//物理地址=ds*16+si mov [di],dx//物理地址=ds*16+di 这个是反向传,把寄存器内容传送到内存
mov [bp],bx//物理地址=ss*16+bp
此外能够用除开这几个寄存器以外的寄存器
例如
mov ax,es:[bx]//物理地址=es*16+bx mov ds:[bp],dx//物理地址+ds*16+bp
mov ax,3003h[si]//ax<-[si+3003h] 假如ds=3000h 则物理地址=3000h*10h+si+3003H
mov si,08h[bx]//物理地址=ds*16+bx+08h mov ax,[bx+100h]//物理地址=ds*16+bp+100h mov al,[bp+o8h]//物理地址=ss*16+bp+08h mov 0200h[bp],ax//物理地址=ss*16+bp+0200h
ea=基址寄存器+变址寄存器的内容
mov ax,[bx][si]//物理地址=ds*10h+bx+si
在上一个的寻址方式的基础上加或者减16/8位的位移量
mov ax,mask[bx][si]//物理地址=ds*10h+bx+si+mask