(以下內容以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個暫存器都可以分為兩個獨立使用...