匯編-8086內部寄存器+對段寄存器使用的約定


《微型計算機原理與接口技術(第2版)》馮博琴 吳寧 主編-清華大學出版社——做筆記用

一、8088/8086的14個16位寄存器: 

 

//-------------------------------------------------------------------------------------------------------------------------------

1、通用寄存器——8個

(1)數據寄存器——4個

  AX:  累加器,常用於存放算數邏輯運算中的操作數,另外所有的I/O指令都使用累加器與外設接口傳送信息。

  BX:  基址寄存器,常用來存放訪問內存時的偏移地址。

  CX:  計數寄存器,在循環和串操作指令中用作計數器。

  DX:  數據寄存器,在寄存器間接尋址的I/O指令中存放I/O端口的地址。

  另外:  在做雙字長除法運算時,DX與AX合起來存放一個雙字長數(32位),其中,DX存放高16位,AX存放低16位。

(2)地址指針寄存器——2個

  SP:  堆棧指針寄存器,它在堆棧操作中存放棧頂偏移地址,即指向堆棧的棧頂。

  BP:  基址指針寄存器,一般也常用來存放訪問內存時的偏移地址。但它通常是與SS寄存器配對使用。(比較:BX通常是與DS寄存器配對使用。)

  作為通用寄存器,SP和BP也可以存放數據,但實際上,它們更經常、更重要的用途是存放內存單元的偏移地址,特別是SP,在訪問堆棧時作為指向棧頂的指針。

(3)變址寄存器——2個

  SI:  源變址寄存器。

  DI:  目的變址寄存器。

  它們常常在變址尋址方式中作為索引指針。

//-------------------------------------------------------------------------------------------------------------------------------

2、段寄存器——4個

  CS:  代碼段寄存器

  SS:  堆棧段寄存器

  DS:  數據段寄存器

  ES:  附加段寄存器

  存放段基地址,即段起始地址的高16位。

//-------------------------------------------------------------------------------------------------------------------------------

3、控制寄存器——2個

  IP:  指令指針寄存器,用以存放預取指令的偏移地址。

  FLAGS: 稱為標志寄存器或程序狀態字(PSW)。

  CPU取指令時總是以CS為段基址,以IP為段內偏移地址。當CPU從CS段中偏移地址為IP的內存單元中取出指令代碼的一個字節后,IP自動加1,指向指令代碼的下一個字節。用戶不能直接訪問IP。

  FLAGS是16位寄存器,但只用到其中9位,其中包括6個狀態標志和3個控制標志。

【下圖來自百度百科】

 

二、8088/8086對段寄存器使用的約定

表2-3  8088/8086對段寄存器使用的約定
序號 內存訪問類型 默認段寄存器 可重設的段寄存器 段內偏移地址來源
1 取指令 CS IP
2 堆棧操作 SS SP
3 串操作之源串 DS ES、SS SI
4 串操作之目標串 ES DI
5 BP用作基址尋址 SS ES、DS 按尋址方式計算得有效地址
6 一般數據存取 ES ES、SS 按尋址方式計算得有效地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM