1. 程式人生 > >常用匯編暫存器

常用匯編暫存器

8086暫存器組 

1. 通用暫存器

通用暫存器包括了8個16位的暫存器:AX、BX、CX、DX、SP、BP、DI及SI。

其中AX、BX、CX、DX在一般情況下作為通用的資料暫存器,用來暫時存放計算過程中所用到的運算元、結果或其他資訊。

它們還可分為兩個獨立的8位暫存器使用,命名為AL、AH、BL、BH、CL、CH、DL和DH。

這4個通用資料暫存器除通用功能外,還有如下專門用途:

 AX作為累加器用,所以它是算術運算的主要暫存器。在乘除指令中指定用來存放運算元。另外,所有的I/O指令都使用AX或AL與外部裝置傳送資訊。 

 BX在計算儲存器地址時,可作為基址暫存器使用。 

CX常用來儲存計數值,如在移位指令、迴圈指令和串處理指令中用作隱含的計數器。 

DX在作雙字長運算時,可把DX和AX組合在一起存放一個雙字長數,DX用來存放高16位資料。此外,對某些I/O操作,DX可用來存放I/O的埠地址。 

而SP、BP、SI、DI四個16位暫存器可以象資料暫存器一樣在運算過程中存放運算元,但它們只能以字(16位)為單位使用。

此外,它們更經常的用途是在儲存器定址時,提供偏移地址。因此,它們可稱為指標或變址暫存器。

SP稱為堆疊指標暫存器,用來指出棧頂的偏移地址。 

BP稱為基址指標暫存器,在定址時作為基地址暫存器使用,但它必須與堆疊段暫存器SS聯用來確定堆疊段中的儲存單元地址。 

SI為源變址暫存器,在串處理指令中,SI作為隱含的源變址暫存器與DS聯用,以確定資料段中的儲存單元地址,並有自動增量和自動減量的變址功能。 

DI為目的變址暫存器,在串處理指令中,DI和附加段暫存器ES聯用,以達到在附加段中定址的目的,然後DI自動增量或減量。 

2. 專用暫存器

    8086的專用暫存器包括IP、SP和FLAGS三個16位暫存器。 

    IP為指令指標暫存器,它用來存放將要執行的下一條指令地址的偏移量,它與段暫存器CS聯合形成程式碼段中指令的實體地址。

    SP為堆疊指標暫存器,它與堆疊段暫存器聯用來確定堆疊段中棧頂的地址,也就是說SP用來存放棧頂的偏移地址。 

    FLAGS為標誌暫存器,這是一個存放條件碼標誌、控制標誌的16位暫存器。

3. 段暫存器 

    8086微處理器共有4個16位的段暫存器,在定址記憶體單元時,用它們直接或間接地存放段地址。

程式碼段暫存器CS:存放當前執行的程式的段地址。  

資料段暫存器DS:存放當前執行的程式所用運算元的段地址。

堆疊段暫存器SS:存放當前執行的程式所用堆疊的段地址。 

附加段暫存器ES:存放當前執行程式中一個輔助資料段的段地址。

相關推薦

用匯

8086暫存器組  1. 通用暫存器 通用暫存器包括了8個16位的暫存器:AX、BX、CX、DX、SP、BP、DI及SI。 其中AX、BX、CX、DX在一般情況下作為通用的資料暫存器,用來暫時存放計算過程中所用到的運算元、結果或其他資訊。 它們還可分為兩個獨立的8位暫存器使

ARM 用匯指令

編寫 中括號 OS 編程 body 需要 實現 十進制數 spa ARM 匯編程序的框架結構 .section .data <初始化的數據> .section.bss <未初始化的數據> .section .text .glo

用匯指令

1=1 乘法 utm 一個 它的 sdn tails copy 轉移指令 CMP A,B 比較A與B其中A與B可以是寄存器或內存地址,也可同時是兩個寄存器,但不能同都是內存地址。這個指令太長見了,許多明碼比較的軟件,就用這個指令。 MOV A,B 把B的值送給A其中,A與B

用匯指令及其影響的標誌位

說明 比較 cxz 個數 test car size through with 加法指令 ADD (addition) 指令對標誌位的影響: CF=1 最高有效位向高位有進位 CF=

第二章 相關內容總結

      對於一個彙編程式設計師來說,CPU中的主要部件是暫存器。暫存器是CPU中程式設計師可以用指令讀寫的部件。程式設計師通過改變各種暫存器中的內容來實現對CPU的控制。不同的CPU,暫存器的個數、結構是不相同的。8086CPU有14個暫存器,每個暫存器有一個名稱。 &nb

的分類

資料暫存器 資料暫存器主要用來儲存運算元和運算結果等資訊,從而節省讀取運算元所需佔用匯流排和訪問儲存器的時間。 變址暫存器 它們主要用於存放儲存單元在段內的偏移量,用它們可實現多種儲存器運算元的定址方式(在第3章有詳細介紹),為以不同的地址形式訪問儲存單元提供方便。 變址暫存器不可分割成

組合語言第三章(記憶體訪問)

3.1  在CPU中,用一個16位暫存器來儲存一個字,一個字兩個位元組,高8位存放高位位元組,低8位存放低位位元組,低位元組所在的記憶體單元稱為起始地址。 3.2 3.3 8086CPU中,通常用DS暫存器來存放要訪問資料的段地址(字或者位元組) 舉個例子: mov bx,1000H mov

第5章 用機器計算

第5章 用暫存器機器計算 我的目標是展示出 heavenly天使 機器 不是 divine, live being生靈 的一種, 而是 clockwork 鐘錶匠(他認為時鐘具有製作者賦與其的對工作的榮耀感的靈性) 的一種, 在一種最簡單的和材料的力量的範圍內  引起了幾乎所有的 多種

5.1.1 描述機器的語言

 5.1.1 描述暫存器機器的語言 資料路徑圖和控制器圖對於表示像求最大公約數這樣的簡單機器是足夠的了。 但是用它們來描述如LISP直譯器這樣的大型機器就是不明智的了。為了能夠實現複雜的機器, 我們建立一個語言以文字的格式,來表示被資料路徑與控制器提供的資訊。 我們將開始一種標記法來直接對

5.1 設計機器

5.1 設計暫存器機器 為了設計一個暫存器機器,我們必須設計它的資料路徑(暫存器和操作) 和序列化這些操作的控制器。為了演示一個簡單的暫存器機器的設計, 讓我們看一看尤拉的演算法,就是用於計算兩個整數的最大公約數的。 正如我們在1.2.5部分看到的那樣,尤拉演算法能被用一個迭代的流程執行。 如下面的

5.2 一個機器的模擬器

5.2  一個暫存器機器的模擬器 為了很好的理解暫存器機器,我們必須測試 我們設計的機器能否 按預期執行程式。 測試一個設計的一個方法是手工模擬控制器的操作,如在5.5中的練習題。 如果不是針對於最簡單的機器,這就是極其麻煩的。 在這部分中,我們用暫存器機器 語言為機器構造了一個模擬器

彙編 第二章

在我看來,第二章中主要圍繞著6個暫存器展開闡述。它們分別是AX、BX、CX、DX、CS、IP。   在此之前,通過本章的學習,使我對CPU這一概念又有了更深一步的認識。 1.CPU中字長與位寬的區別 通常情況下,用字長來描述CPU。例如,字長16,則稱16位CPU。那麼16位CPU有什麼具體

第3章 (記憶體訪問)小結

記憶體中字的儲存 字單元,即存放一個字形資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。我們將起始地址為N的字單元簡稱為N地址字單元。   DS和[address] “[...]”表示一個記憶

第三章,整理

第三章,記憶體訪問 一,字資料在記憶體中的儲存 1, 記憶體以位元組為單位,劃分為若干個單元。位元組:8bit,字:16bit,雙字:32bit,四字:64bit 2, 字資料的儲存的原則為:高-高-低-低,字資料的低位位元組存放於低地址記憶體單元,字資料的高位位元組存放於高地址的記憶體單元。取低地址記

第三章,

第三章,記憶體訪問 一,字資料在記憶體中的儲存 1, 記憶體以位元組為單位,劃分為若干個單元。位元組:8bit,字:16bit,雙字:32bit,四字:64bit 2, 字資料的儲存的原則為:高-高-低-低,字資料的低位位元組存放於低地址記憶體單元,字資料的高位位元組存放於高地址的記憶體單元。取低地址記

實驗二————的訪問

  1.實驗前的準備:在使用a命令除錯之前,使用e命令將記憶體單元e 0021:0  0021:7  修改為30H,31H,32H,33H,34H,34H,35H,36H,37H         把第74頁的mov ax,ffff ——>mov ax,0021 mov

esp與ebp介紹

esp暫存器與ebp暫存器介紹 2013年09月21日 03:04:15 傷心小鴕鳥 閱讀數:974 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/westboy666/article/details/11858225

2018/11/03-棧、x86架構和-《惡意程式碼分析實戰》

  棧用於函式的記憶體、區域性變數、流控制結構等被儲存在棧中。棧是一種用壓和彈操作來刻畫的資料結構,向棧中壓入一些東西,然後再把他們彈出來。它是一種先入後出(LIFO)的結構。   x86架構有對棧的內建支援。用於這種支援的暫存器包括ESP和EBP。其中,ESP是棧指標,包含了指向棧頂的記憶體地址。一些東西

ADS1248 配置和通道轉換

ADS1248是TI的一款 24位delta-sigma(ΔΣ) 、2KSPS、8通道(4通道差分)ADC晶片。TI官方有RTD設計方案,參考文件做了一板4通道3線PT100溫度採集。除錯ADS1248過程中遇到一些問題,記錄下來方便以後使用。 參考程式碼:

DS18B20設定高低溫限值(寫)

最近使用到DS18B20,一個匯流排掛載多個感測器,為了識別每個感測器的實際位置,想了一個辦法:在使用前先對DS18B20編號並記錄該編號的實際放置位置。這樣在讀取資料後即可得到是哪個位置編號的溫度值。看了看手冊發現內部的高低溫報警閾值是儲存在EEPROM正好用來儲存位置編號。 首先了解下通