組合語言(王爽)第二章暫存器

2022-04-04 15:08:45 字數 2159 閱讀 4546

乙個典型的cpu由運算器、控制器、暫存器等部件組成,部件之間靠內部匯流排連線。運算器進行資訊處理,暫存器進行資訊儲存;控制器控制各部件進行工作,內部匯流排連線各部件以進行資料的傳輸。不同的cpu暫存器的個數和結構都是不盡相同的。

2.1通用暫存器

以8086為例,其內部所有暫存器都是16位的,即兩個位元組。其中ax、bx、cx、dx這4個通常存放一般性的資料,稱為通用暫存器。ax的低8位(0~7位)構成乙個8位暫存器al,高8位(8~15位)構成乙個8位暫存器ah,其他也類似。

若:ax=8000h;對於指令add ax,8888h後ax的值是多少?

8000h+8888h=10888h,但ax只能儲存16位數,因此ax=0888h,最高位的「1」會被ax捨棄,但cpu並不捨棄這個「1」。

若:ax=0080h,對於指令add al,88h後ax的值是多少?

80h+88h=108h,但al只能儲存8位,因此al=08h,最高位的「1」被al捨棄,也不會被ah接收,因此ax=0008h,同樣cpu不捨棄這個「1」。

上述兩例中溢位產生的「1」都會被存放在乙個特定位置,後面會學到。

檢測點2.1

mov ax,62627   ax=f4a3h

mov ah,31h      ax=31a3h

mov al,23h   ax=3123h

add ax,ax     ax=6246h

mov bx,826ch  bx=826ch

mov cx,ax    cx=6246h

mov ax,bx   ax=826ch

add ax,bx        ax=04d8h

mov al,bh     ax=0482h

mov ah,bl        ax=6c82h

add ah,ah        ax=d882h

add al,6       ax=d888h

add al,al       ax=d810h

mov ax,cx        ax=6246h

(2)只能使用目前學過的彙編指令,最多用4條指令,程式設計計算2的4次方

mov ax,2

add ax,ax

add ax,ax

add ax,ax

2.8  段的概念:對於物理上的記憶體而言,並沒有分段的概念。只是對於cpu來說,通過段位址+偏移位址的方式進行定址,「段」僅僅是乙個邏輯上的概念,並無特定之說。對於同乙個物理記憶體位址來說,它的段位址也並不是固定的,比如實體地址10086h,可以設其段位址為1000h,那麼對應的偏移位址就是0086h;若設其段位址為1008h,那它偏移位址就是0006h。

檢測點2.2

(1)給定段位址0001h,僅僅通過變換偏移位址定址,cpu的定址範圍是(00010h)~(1000fh)。

2.10cs和ip:在8086pc機中,任意時候,cpu都講從cs:ip指向的記憶體單元開始讀第一條指令並執行。8086cpu工作過程可以簡要描述如下:

(1)從cs:ip指向的記憶體單元取出指令,將指令傳送到指令緩衝器;

(2)ip更新為原ip+讀取指令長度;

(3)執行(1)指令緩衝器中的指令。轉到(1)。

2.11通過jmp指令修改cs和ip的值;如jmp 2168:8;執行後cs=2168h,ip=0008h。8086指令集中不提供通過mov來改變cs、ip的值。若僅想改變ip的值,則可通過「jmp 暫存器」指令完成,如:jmp ax;若此時ax=1008h,則指令執行後ip=1008h;

檢測點2.3

下面的3條指令執行後,cpu幾次修改ip?在何時?最後ip中的值是多少?

mov ax,bx       

sub ax,ax

jmp ax

答:指令執行前cs:ip指向第一條指令存放的記憶體單元首位址,第一條先讀取進入指令緩衝器,ip第一次改變,同時指向第二條指令;第一條指令執行,讀取第二條指令進入指令緩衝器,ip第二次改變,同時指向第三條指令;第二條指令執行,讀取第三條指令進入指令緩衝器,ip第三次改變,同時指向第三條指令在記憶體中的後續記憶體單元;第三條指令執行,ip中的值變為ax中存放的值,這是ip第四次改變。

實驗1:

1、關於debug的使用和命令

(1)r命令:可檢視cpu中各暫存器的值,並顯示當前cs:ip指向的指令。

(2)"r  暫存器名稱「命令:修改該暫存器的值。

(6)t命令:單步執行當前cs:ip指向的指令。

組合語言 第二章 暫存器

乙個典型的cpu由運算器 控制器 暫存器等組成.功能如下 1.運算器進行資料的處理 2.暫存器進行資訊儲存 3.控制器控制各種器件進行工作 4.內部匯流排連線各種器件,進行資料傳輸 8086cpu所有暫存器都是16位的。ax bx cx dx這四個暫存器通常用來存放一般性資料,被稱為通用暫存器,ax...

組合語言第二章暫存器

隨著第一章的結束,我們對組合語言的概況有了足夠清晰和明確的基本認識,第二章的展開將會圍繞著暫存器的方方面面具體闡釋,暫存器是cpu中程式設計師可以用指令讀寫的部件,可以通過更改暫存器中的內容來實現對cpu的掌控。不同的cpu,暫存器的個數 結構是不同的,8086cpu有12個暫存器,分別是ax bx...

組合語言 《組合語言》王爽 第二章筆記

乙個典型的cpu由運算器 控制器 暫存器等器件構成,這也是cpu的工作原理。這些器件是由cpu內部匯流排連線的。運算器進行資訊的處理 暫存器進行資訊的儲存 控制器控制各種器件進行工作 內部匯流排連線各種器件,在他們之間進行資料的傳送。不同的cpu的暫存器數 結構是不同的。本書介紹的8086cpu共有...