組合語言 第二單元 整理

2022-05-24 06:00:12 字數 2864 閱讀 1827

(以下內容以8086cpu、intel系列為根據處理)

8086cpu、intel系列:

16位微處理器;20位位址匯流排;14個16位暫存器:

通用暫存器:ax(accumulator register)、bx(base register)、cx(count register)、dx(data register)

基址和變址暫存器:si、di、bp、sp

段暫存器:cs、ss、ds、es

指令指標和標誌暫存器:ip、flags

引入概念:字長(cpu在單位時間內一次處理的二進位制位數,反映cpu內部運算速度)

引入概念:位寬(cpu通過外部資料匯流排與記憶體之間一次能傳輸的資料位)

isa(指令集體系結構):指令、指令的位元組集編碼——軟體和硬體之間介面

不同型別cpu差異:

處理的字長、速度不同;工作模式不同;指令集的豐富程度不同

*十六進製制資料加字尾h,二進位制資料加字尾b

*一條彙編指令或暫存器名稱不區分大小寫

乙個cpu有多個暫存器,用來存放16位一般性資料。

以ax為例:

(為了與早期相容,ax可拆分成兩個獨立的暫存器ah、al來使用)

ax中存放無符號資料範圍:0 —— 216-1

ah、al中存放無符號資料範圍:0 —— 28-1

mov:傳送指令    mov a,b:將b放入a中

常用:

mov 暫存器,資料

mov 暫存器,暫存器

add:求和指令    add a,b:a與b相加

常用:

add 暫存器,資料

add 暫存器,暫存器

sub:減法指令    sub a,b:a減去b

常用:

sub 暫存器,資料

sub 暫存器,暫存器

jmp:轉移指令    修改cs、ip暫存器(不可以用mov實現)

常用:

jmp 暫存器    (用暫存器內容修改ip)

注意:1.mov、add操作中,兩個操作物件位數應一致

2.對應的位數進行操作,超出的位數需捨棄(特別注意ah、al暫存器)

問題起源:16位的cpu暫存器無法表示20位的位址匯流排所包括的所有記憶體單元

引入概念:段(根據需要,將位址連續、起始位置為16倍數的一組記憶體單元--不超過216b,即64kb)

e.g      20404h = 2000h * 16 +0404h

實體地址 =  段位址 * 16 + 偏移位址

段位址又稱基礎位址

段位址 * 16 構成段的物理起始位址

問題:計算機如何識別哪些資訊是指令,哪些資訊是資料?

解決:用特殊暫存器進行標誌,存放在特殊暫存器內的就是指令,其他為資料

引入概念:

8086最關鍵的暫存器:

cs(**段暫存器:存放段位址)、

ip(指令指標暫存器:存放偏移位址)

作用:cpu將cs:ip對應的實體地址中的資訊當作指令執行

1.從cs:ip指向的記憶體單元讀取指令,並將指令放入指令緩衝器

2.ip =  ip + 所取指令的長度,從而指向下一條指令

3.執行指令,跳回1,重複此過程

最初的cs、ip:

cpu剛開始工作時,cs=ffffh,ip=0000h

即cpu剛啟動時,從實體地址為ffff0h的單元讀取開機後執行的第一條指令

提問:計算機遇到什麼指令停止迴圈,結束取指令呢?

組合語言整理

用db定義的資料,每個資料占用1b的儲存器。可以出現用單或雙引號括起來的單個或多個字元,每個字元佔1b,按照它們出現的順序用ascii 儲存。dup稱為 重複定義符 表示定義若干個相同的資料。偽指令dw用來定義字資料,每個資料占用2b,資料的高位存放在位址較大的單元裡。注意 用dw定義字串時,只能是...

組合語言 第二章

2.1 通用暫存器 8086cpu的所有暫存器都是16位的,可以存放兩個位元組。ax bx cx dx這4個暫存器通常用來存放一般性的資料,被稱為通用暫存器。2.2字在暫存器中的儲存 位元組 記為byte,乙個位元組由8個bit組成,可以存在8位暫存器中。字 記為word,乙個字由兩個位元組組成,這...

組合語言 第二章

對於乙個彙編程式設計師來說,cpu中的主要部件是暫存器。暫存器是cpu中程式設計師可以用指令讀寫的部件。程式設計師通過改變暫存器裡的內容來實現對cpu的控制。1 8086cpu的所有暫存器都是16位的,可以存放2個位元組。其中8086cpu中的ax bx cx dx這4個暫存器都可以分為兩個獨立使用...