1. 程式人生 > >微機原理 暫存器和七種定址方式

微機原理 暫存器和七種定址方式

  • 16位cpu 八個通用暫存器 指令指標IP 標誌暫存器FR 段暫存器

AX BX  CX DX BP SP SI DI

其中前四個又分為高八位和低八位
AX 累加器 BX 基址暫存器 CX 計數暫存器 DX 資料暫存器
BP 基址指標暫存器 SP 堆疊指標暫存器 
SI 源變址暫存器 DI 目的變址暫存器
IP  指向當前需要取出的指令
FR  儲存一些標誌,如OF DF IF等
段暫存器 有四個 CS(程式碼段)DS(資料段)SS(堆疊段)ES(附加段)

  • 注意!識別符號有這幾個

OF 結果是否溢位 溢位為1
DF 方向標誌位 串操作指標調整方向
IF  cpu對於內部中斷以及外部不可遮蔽中斷必須響應,響應外部可遮蔽中斷時為1
TF  跟蹤標誌 TF=1 單步執行指令 原來我們的除錯來自這裡
SF  運算結果符號 無溢位時0表示正,溢位相反
ZF  零標誌  運算結果是否為零  用的比較多
AF  輔助進位標誌 主要是高低位之間進借位為1  常用
CF  無符號數是否產生進位或借位 有則為1

  • 定址方式總結

立即定址 資料地址直接給出 例如MOV AX ,#52H 將52這個資料給AX暫存器

直接定址  資料在記憶體,指令中要有偏移量  例如MOV AX,[1H] 將地址ds:[1H]的資料存到ax

暫存器定址 運算元在暫存器中 move AX,BX 將bx暫存器值給ax

暫存器間接定址 運算元在記憶體中,暫存器儲存地址 move AX,[SI]將si中的值對應地址的值給ax

暫存器相對定址  運算元在記憶體,地址需要基址或變址暫存器和一個偏移量 例如MOVE AX,[DI+123H] 假設DI=500H 那麼運算元地址為623H
暫存器基址加變址 運算元地址需要基址暫存器和變址暫存器 move AX,[SI+DI]


相對基址加變址定址 運算元地址需要基址,變址暫存器和一個偏移量 MOVE AX,[SI+DI+1223H]

打個比方
你要去找寶藏(資料)
直接定址就是直接給你寶藏,暫存器定址就是告訴你你去那個房子(暫存器)裡找
這都比較直接
剩餘的就是把寶藏地址寫在一張紙上,直接定址就是把紙給你,暫存器間接定址就是把紙放在那個房子裡

暫存器相對定址就是你要去那個房子在跑1000米才給你
基址加變址就是你要去兩個房子才給你紙,再變態一點,找完兩個房子再跑1000米才給你紙就是相對基址加變址

附一張總結:意外忘記暫存器相對定址了,在暫存器間接定址下加上,要基址或變址加偏移量

僅為個人總結,有不妥之處還請指教。寫得不好請指教