8086CPU學習筆記 8086的定址方式

2021-09-29 06:16:48 字數 2177 閱讀 9236

認真寫好一篇文章

計算機的指令通常包含操作碼和運算元兩部分。指令有單運算元、雙運算元和無運算元三種,其中雙運算元的兩個運算元要用逗號隔開,逗號左邊是目的運算元,逗號右邊是源運算元。

例如:mov ax,cx

該指令將cx暫存器中的數值放到ax暫存器中,其中mov為操作碼,ax為目的運算元,cx為源運算元。

4.其他定址方式

在立即定址方式下,運算元直接包含在指令中,即源運算元是立即數。

立即數:8位或16位的常數。

例1:mov al,26h

該指令將乙個8位立即數26h送到al暫存器中。

例2:mov cx,2a50h

該指令將乙個16位立即數2a50h送到cx暫存器中。其中2ah為高8位,放在高位位址;50h為低8位,放在低位位址。

如下圖所示.(**段從上到下位址越來越高)

注意:

在暫存器定址方式下,運算元包含在暫存器中,由指令指定暫存器的名稱,即源運算元是暫存器。對於16位源運算元,暫存器可以是ax、bx、cx、dx、si、di、sp、和bp;對於8位運算元,暫存器可以是ah、al、bh、bl、ch、cl、dh、dl。

例1:mov dx,ax

該指令將ax暫存器裡存放的16位資料送到dx暫存器中。

例2:mov dl,ah

該指令將ah暫存器裡存放的8位資料送到dl暫存器中。

注意:

我們知道,8086有20根位址匯流排,可定址2的20次方也就是1m的儲存器空間,但是8086的暫存器只有16位,只能表示出2的16次方等於64k的儲存空間,於是工程師把1m的儲存空間分成幾段,每段最大為64k,採用段位址加偏移位址的方式進行定址,比如在資料段暫存器(設ds=2000h)中偏移位址為200h處存放了乙個8位資料23h,實際上在物理記憶體裡的位址是2000h * 10h + 200h = 20200h,該處存放的資料為(20200h)=23h。

在儲存器定址方式下,指令的源運算元存放在儲存器中,根據不同的使用需要,可以選擇以下5種定址的方式:

所謂直接定址,跟立即數定址有一點點相似,所不同的是立即數定址是把乙個常數賦給乙個暫存器,直接定址是把乙個常數字址所表示的儲存空間裡存放的數賦給乙個暫存器。這點其實可以模擬c語言中常數和常數指標之間的關係,下面舉例說明。

小結:從上面幾種指令方法可以看到乙個共同點,就是所有的源運算元都是立即數或是變數,是直接存放在**段裡的,這也是這種方式跟以下幾種方式的區別。

暫存器間接定址方式跟直接定址方式唯一的區別就是,把直接定址方式中用立即數表示的源運算元[2000h]換成了基址或變址暫存器bx、bp、si或di,暫存器裡存的還是乙個位址常數,可以說是新壺裝舊酒,給位址常數穿了件衣服。

小結:從上面兩種指令方法也可以看到乙個共同點,就是所有的源運算元都是存放在基址或變址暫存器裡的。

相對定址的概念相對晦澀,咱直接上例子

小結:從上面兩種指令方法又可以看到乙個共同點,就是所有的源運算元都是基址或變址暫存器裡的存放的數值的基礎上加了乙個count,當然,count也可以是其他表示,比如hahaha。

這種方式,也沒有什麼奇淫巧技,無聊的很,不說概念了,看例子。

像貪吃蛇一樣,再給源運算元加上一節。。。

大注意:以上五種方式在使用中要注意

指令中不指明運算元,但隱含規定的定址方式。例如指令daa,它的含義是對暫存器al中的資料進行十進位制數調整,結果仍留在al中。

8086有直接埠和間接埠兩種定址方式。

8086cpu物理定址

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

8086cpu學習筆記(3) 定址方式

操作碼 運算元 運算元 操作碼說明執行的操作,第乙個運算元為目的運算元,第二個為源運算元。運算元存放位置有eu暫存器,biu指令佇列,儲存器,i o。運算元在暫存器 cpu中指令執行速度快。立即數定址指令執行速度快。運算元在儲存器或i o埠中指令執行速度較慢。運算元是立即數,直接包含在指令中。常用於...

彙編學習之路之 8086CPU

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