暫存器(通用暫存器)

2021-07-25 20:04:41 字數 1326 閱讀 8029

因為學習使用的是王爽的《組合語言(第3版)》,因此也只能提到8086cpo的暫存器。對於其他而言,原理都是相通的。

對於8086暫存器,有14個暫存器,主要是:ax、bx、cx、dx、si、di、sp、bp、ip、cs、ss、ds、es、psw。

一、通用暫存器

8086的通用暫存器有ax、bx、cx、dx4個,16位,可存放兩個位元組,可分為高8位和低8位,這裡主要是考慮相容性問題,8086一次可以處理1位元組或是1字的資料。例如:

這裡需要注意的是,對於ah和bh是兩個完全不相干的東西,例如:

通過計算的到的結果應該是158h,但是這已經超過了al所能儲存的最大值了,但1並沒有進入到ah中去,而是「丟失了」。至於原因自己還沒有找到,還在學習中,等找到答案我會回來進行修改。但這足以說明al和ah是兩個不同的東西。

二、幾條彙編指令

(1)資料傳送指令mov

格式:mov oprd1,oprd2

功能:本指令將乙個源運算元送到目的暫存器中,即oprd1

說明:<1>oprd1 為目的運算元,可以是暫存器、儲存器、累加器。

oprd2為源運算元,可以是暫存器、儲存器、累加器和立即數。

<2>mov 指令有四種可能的操作:

<3>本指令不影響狀態標誌位。

<4>mov指令執行時的資料傳送方向

(2)加法指令add

格式:add oprd1,oprd2

功能:兩數相加。

說明:<1>opr1為任一通用暫存器或儲存器運算元,可以是任意乙個通用暫存器,而且還可以是任意乙個儲存器運算元。這給程式的編寫帶來了很大的方便.。

opr2為立即數,也可以是任意乙個通用暫存器運算元。立即數只能用於源運算元。

<2>opr1和opr2均為暫存器是允許的,乙個為暫存器而另乙個為儲存器也是允許的,但不允許兩個都是儲存器運算元。理由是指令**的定址方式中規定了兩個運算元(除立即        數)至少有乙個是暫存器運算元。

<3>加法指令運算的結果對cf、sf、of、pf、zf、af都會有影響。以上標誌也稱為結果標誌。加法指令適用於無符號數或有符號數的加法運算。運算元可以是8位,也可以是16位。

暫存器,標誌暫存器

涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...

通用暫存器區四個暫存器

void int0 interrupt 0 using 1 interrupt 0 指明是外部中斷0 interrupt 1 指明是定時器中斷0 interrupt 2 指明是外部中斷1 interrupt 3 指明是定時器中斷1 interrupt 4 指明是序列口中斷 using 0 是第0組暫...

CS 暫存器 和 IP 暫存器

下面將要介紹的是一組非常非常重要的暫存器,即 cs ip cs ip 兩個暫存器指示了 cpu 當前將要讀取的指令的位址,其中cs 為 段暫存器,而ip 為指令指標暫存器。什麼叫做指示了 cpu 當前將要讀取的指令呢?在 8086 cpu 中,為什麼 cpu 會自動的執行指令呢?這些指令肯定是存放在...