彙編學習之路之DS

2021-06-29 16:50:55 字數 1396 閱讀 7579

cpu要讀讀寫乙個記憶體單元的時候, 必須先給出這個記憶體單元的位址,在8086pc中,記憶體位址由段位址和偏移位址組成, 8086cpu中有乙個ds暫存器,通常用來存放將要訪問資料的段位址 。 比如,我們要讀取記憶體單元為: 1000h中的內容, 可以用下面的程式段進行:

mov bx, 1000h

mov ds, bx

move al, [0]

以上的

三天平指令是將1000h(1000:0)中的資料獨到al 中。

下面是指令的含義:

mov al, [0]
mov 指令可以:

1, 將資料直接送入暫存器,

2,講乙個暫存器中的內容送入另乙個暫存器。

也可以用mov指令講乙個記憶體單元中的內容傳送入乙個暫存器中,從哪個記憶體安源送到哪乙個暫存器中呢?在指令中必須指明。暫存器用暫存器名來指明,記憶體單元則需用記憶體單元的位址來指明,顯然,此時mov指令的格式應該是:

mov 暫存器名,記憶體單元位址

「[...]」表示乙個記憶體單元,「[...]」 中的0 表示記憶體單元的便宜位址。只有偏移位址是不能定位乙個記憶體單元的,那麼,記憶體單元的段位址是多少呢、。指令執行時,8086cpu 自動取ds中的資料為記憶體單元的段位址。

用 mov 指令從1000h中讀取資料。1000h用段位址和偏移位址表示為1000:0。先將段位址1000h放入ds,然後用mov al, [0] 完成傳送。mov指令中的 操作物件是乙個記憶體單元。中的0 說明這個記憶體單元的偏移位址是0,他的段位址預設是放在ds中的,指令執行時,8086cpu會自動從ds中取出。

mov bx, 1000h

mov ds, bx

若要用 mov al,[0] 完成資料從1000 : 0 單元到al 的傳送,這條指令執行時,ds 中的內容應為段位址1000h,所以在這條指令前應該將1000h送入ds。

8086cpu不支援資料直接送入段暫存器的操作。若要講乙個資料送入暫存器,比如 將上面的1000h 送入ds, 只好用那個乙個暫存器來進行中轉,現將1000h送入一般的暫存器,如ax, 再將ax 中的內容送入ds。

至於8086 cpu 為什麼不能支援將資料直接送入段暫存器中? 這屬於8086 cpu硬體設計的問題了。

彙編學習之路

更好的排版請看原文 輸入輸出先乾為敬 mov ah,1 輸入字元 int 21h 輸入後回顯,鍵入字元的ascll送入al mov dl,al mov ah,2 int 21h 輸出輸入的字元 彙編 對於乙個匯程式設計序有三段 資料段 堆疊段 段 初始化程式 mov ax,datas mov ds,...

彙編學習之路之 8086CPU

8086 cpu 給出實體地址的方法 8086 cpu 有20位位址匯流排,可以傳送2位位址,達到1 mb的定址能力。8086 cpu又是16位結構,在內部一次性處理,傳送,暫時儲存的位址是 16位。從8086 cpu的內部結構來看,如果將位址從內部簡單的發出,那麼,它只能送出16位位址,表現出的定...

DS之演算法概述

演算法 演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作,此外,乙個演算法還具有5個重要的特性。1 有窮性 乙個演算法必須總是 對任何合法的輸入值 在執行有窮步之後結束,且每一步都可在有窮時間內 合理的,可接受的時間內 完成。2 確定性 演算法中每一條指令必...