彙編數據尋址方式

數據尋址方式

當即尋址

操做數直接包含在指令機器碼中緊跟在操做碼的後面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
相關文章
相關標籤/搜索