8086位址傳送指令LEA,LDS,LES

2021-06-14 23:54:36 字數 1531 閱讀 6548

lea bx,[si] ;bx<--ds:[si]記憶體單元的偏移位址,與該單元中的資料無關

lds bx,[si] ;bx<--ds:[si]記憶體單元中的資料的低16位,ds<--記憶體單元中資料的高16位

les bx,[si] ;bx<--ds:[si] ,es<--ds:[si+2]

顯然lds和les的運算元是32位的(兩個字 四個位元組 32位)

寫個程式測試一下,假設我們向記憶體中寫入資料idata dd 12345678h

lea:-u 0ca1:0000 b8a00c mov ax,0ca0 0ca1:0003 8ed8 mov ds,ax ;

ds指向資料段 0ca1:0005 8d1e0000 lea bx,[0000] ;

指向資料段中第乙個記憶體單元(16位5678) ;

此時如果是mov bx,[0] 那麼ax=5678h ax=0ca0 bx=0000 cx=001e dx=0000 sp=0000 bp=0000 si=0000 di=0000 ds=0ca0 es=0c90 ss=0ca0 cs=0ca1 ip=0005 nv up ei pl nz na po nc 0ca1:0005 8d1e0000 lea bx,[0000] ds:0000=5678 -t ax=0ca0 bx=0000 cx=001e dx=0000 sp=0000 bp=0000 si=0000 di=0000 ds=0ca0 es=0c90 ss=0ca0 cs=0ca1 ip=0009 nv up ei pl nz na po nc 0ca1:0009 b8004c mov ax,4c00 -;

bx=0000h 說明lea只是傳送ds:指向記憶體單元的偏移位址

lds:-u 0ca1:0000 b8a00c mov ax,0ca0 0ca1:0003 8ed8 mov ds,ax 0ca1:0005 c51e0000 lds bx,[0000] ;

ds:[0]指向資料段的第乙個記憶體單元 -t ;

此時如果是mov bx,ds:[0] 那麼ax=5678h ax=0ca0 bx=0000 cx=001e dx=0000 sp=0000 bp=0000 si=0000 di=0000 ds=0ca0 es=0c90 ss=0ca0 cs=0ca1 ip=0005 nv up ei pl nz na po nc 0ca1:0005 c51e0000 lds bx,[0000] ds:0000=5678 -t ax=0ca0 bx=5678 cx=001e dx=0000 sp=0000 bp=0000 si=0000 di=0000 ds=1234 es=0c90 ss=0ca0 cs=0ca1 ip=0009 nv up ei pl nz na po nc 0ca1:0009 b8004c mov ax,4c00 -;

bx=5678h,ds=1234h ;

是的,lds的傳送並不是偏移位址而是實實在在的記憶體單元中的資料,bx<--[0],ds<--[0+2]

les: 

les bx,[0]

bx<--[0]

es<--[0+2]

8086位址傳送指令LDS,LES

lds reg,opre reg是乙個16位暫存器,oprd是乙個儲存器運算元,為雙字項,高16位送入ds,低16位送入reg lds bx,si ds si取得儲存器中32位 雙字 高16位作為段值送入ds中,低十六位送入指定的bx暫存器中 data segment idata dd 1234 5...

3 2 7 位址翻譯

有乙個tlb與乙個data cache 儲存器以位元組為編址單位 虛擬位址14位 實體地址12位 頁面大小為64位元組 tlb為四路相連,共有16個條目 data cache是物理定址,直接對映的,行大小為4個位元組,總共有16個組 寫出訪問位址0x03d4,0x00f1和0x0229的過程 因為本...

8086彙編 資料傳送指令

於ibm pc組合語言程式設計 沈美明 溫冬嬋 編著 負責把 資料,位址或立即數傳送到暫存器或者儲存單元中.1.通用資料傳送指令 mov,push,pop,xchg mov指令在cpu內或cpu和儲存器之間傳送位元組或字,目的運算元不允許使用立即數,也不能用cs暫存器,不允許用mov指令在兩個儲存單...