目錄
前言
匯編語言
一.基礎知識
1. 匯編語言的組成
2.儲存器
3.儲存單元
4.CPU對儲存器的讀寫
5.地址總線
6.資料總線
7.控制總線
8.介面卡
9.隨機儲存器(RAM)只讀儲存器(ROM)
二.暫存器
1.通用暫存器
2.字在儲存器中的儲存
3.幾潭訓編指令
4.物理地址
5. 16位結構的CPU
6.8086CPU給出物理地址的方法
7.段暫存器
8.CS和IP
9.Debug
10.修改DS和IP指令
三.暫存器(記憶體訪問)
1.add和sub指令不能對段暫存器進行操作
2.堆疊
總結
前言
在學長推薦下閱讀王爽的《匯編語言》進行自學,第一次接觸底層的語言也是新奇,但是由于剛開始不會使用markdown,將筆記寫在了doc檔案中,無法進行轉移qwq哇哇哭
下周一定是完完整整的筆記qwq
匯編語言
-
一.基礎知識
1. 匯編語言的組成
1)匯編指令:機械碼的助記符,有對應的機械碼
2)偽指令:沒有對應的機械碼,由編譯器執行,計算機并不執行
3)其他符號:如+、-、*、/等,由編譯器識別,沒有對應機械碼
2.儲存器
要想讓CPU作業,必須向他提供指令和資料,指令和資料在儲存器中存放,也就是記憶體
3.儲存單元
儲存器被劃分成若干儲存單元, 計算機最小資訊單位是bit(位元),也就是一個二進制位,8個bit組成一個Byte(位元組) 常用計量單位:KB、MB、GB、TB
4.CPU對儲存器的讀寫
CPU要進行資料讀寫,必須與外部器件(芯片)進行3類資訊互動, 1)儲存單元的地址(地址資訊)
2)器件的選擇,讀或寫的命令(控制資訊)
3)讀或寫的資料(資料資訊) 總線:專門連接CPU和其他芯片的導線,包括地址總線、控制總線和資料總線
5.地址總線
一個CPU有n根地址線,則可以說這個CPU的地址總線寬度為n,這樣的CPU最多可以尋找2的n次方的記憶體單元
6.資料總線
CPU與記憶體或其他器件之間的資料傳送是通過資料總線進行的,資料總線的寬度決定了CPU和外界資料的傳送速度
8根資料總線一次可傳送一個8位二進制資料(即一個位元組),16根資料總線一次可傳送兩個位元組,
7.控制總線
控制總線的寬度決定了 CPU對外部器件的控制能力,
8.介面卡
CPU對外部設備都不能直接控制(如顯示幕、音箱)
CPU通過總線向介面卡發送命令,介面卡根據CPU的命令控制外設進行作業
9.隨機儲存器(RAM)只讀儲存器(ROM)
儲存器相同點 *都和CPU的總線相連, *CPU對它們進行讀或寫的時候都通過控制線發出記憶體讀寫命令,
假想的邏輯儲存器(記憶體地址空間)
記憶體地址空間的大小受CPU地址總線寬度的限制,8086CPU的地址總線寬度為20,可以傳送220個不同的地址資訊(大小從О至220-1),即可以定位220個記憶體單元,則8086PC 的記憶體地址空間大小為 1MB,同理,80386CPU 的地址總線寬度為32,則記憶體地址空間最大為4GB,
二.暫存器
在CPU中:
*運算器進行資訊處理;
*暫存器進行資訊存盤;
*控制器控制各種器件進行作業;
*內部總線連接各種器件,在它們之間進行資料的傳送,
1.通用暫存器
8086CPU所有的暫存器都是16位的,可以存放兩個位元組
AX、BX、CX、DX這四個儲存器通常用來存放一般性的資料,被稱為通用暫存器
8086上一代CPU中的暫存器都是8位的,為保證兼容性,這四個暫存器都可以分為兩個獨立的8位暫存器使用
AX可以分為AH和AL(high low)BCD同理 AX的低8位(0位~7位)構成了AL暫存器,高8位(8位~15位)構成了AH暫存器,兩者都是可以獨立使用的8位暫存器
2.字在儲存器中的儲存
字:記為word,一個字由兩個位元組組成,這兩個位元組分別稱為高位位元組和低位位元組,正好存在一個16位的暫存器中
3.幾潭訓編指令
匯編指令不區分大小寫
4.物理地址
CPU 訪問記憶體單元時,要給出記憶體單元的地址,所有的記憶體單元構成的存盤空間是一個一維的線性空間,每一個記憶體單元在這個空間中都有唯一的地址,我們將這個唯一的地址稱為物理地址,
5. 16位結構的CPU
特點:1)運算器一次可以處理16位資料
2)暫存器的最大寬度為16位
3)暫存器和運算器的通路之間是16位
6.8086CPU給出物理地址的方法
8086有20位地址總線,可傳送20位地址,尋址能力為1MB 8086內部為16位結構,它只能傳送16位的地址,尋址能力只有64KB
當CPU要讀寫記憶體時: (1)CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;
(2)段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件;
(3)地址加法器將兩個16位地址合成為一個20位的物理地址;
(4)地址加法器通過內部總線將20位物理地址送入輸入輸出控制電路;
(5)輸入輸出控制電路將20位物理地址送上地址總線;
(6)20位物理地址被地址總線傳送到存盤器, 地址加法器采用物理地址=段地址x16(左移一位)+偏移地址的方法用段地址和偏移地址合成物理地址
7.段暫存器
段地址在8086CPU的段暫存器中存放,8086CPU有四個段暫存器:CS、DS、SS、ES,由這四個提供記憶體單元的段地址
8.CS和IP
IP:指令指標暫存器
9.Debug
R:查看CPU內容
D:查看記憶體中內容
E:改變記憶體中內容
U:將機械指令翻譯成匯編指令
A:以匯編指令的格式寫入機械指令
T:執行機械指令
q:退出debug
R+...(改變暫存器地址)
Rip:改ip的偏移地址;
rcs:改CS的段地址
10.修改DS和IP指令
若同時修改CS、IP的內容,可用“jmp段地址:偏移地址”的指令
若僅修改IP的內容,可用“jmp 某一合法暫存器”的指令(功能:用暫存器的值修改IP)jmp ax就相當于mov IP,ax
三.暫存器(記憶體訪問)
1.add和sub指令不能對段暫存器進行操作
2.堆疊
入堆疊出堆疊指令:push, pop
在8086CPU中,有兩個與堆疊相關的暫存器:
堆疊段暫存器SS:存放堆疊頂的段地址
堆疊頂指標暫存器SP:存放堆疊頂的偏移地址
任意時刻,SS:SP指向堆疊頂元素
Push ax的執行分兩步:1)sp-2 2)送入ax的內容
Pop ax的執行:1)資料送入ax中 2)sp+
總結
這兩天為了趕進度去寫作業看的有點快,基礎知識不夠扎實,像轉移指令之類的,希望下周再鞏固一下,
加油啊下周的胡小楠
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/413330.html
標籤:其他
