匯編數據尋址方式


數據尋址方式

立即尋址

操作數直接包含在指令機器碼中緊跟在操作碼的后面

例如

解釋:把后面的操作數傳送給ax,al寄存器

mov ax,0a7fh
mov al,5h

寄存器尋址

操作數是寄存器操作數(16位對16位,8位對8位)

解釋:一個寄存器的數給另一個寄存器

mov ax,bx
mov dl,cn

存儲器尋址

直接尋址

解釋:把存儲器里數據段ds(默認)的地址所對應的兩個操作數傳送給ds構成16位再給ax寄存器

 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM