彙編入門學習筆記 (一)—— 基礎知識、寄存器

來源:互聯網
上載者:User

標籤:彙編   asm   


瘋狂的暑假學習之  彙編入門學習筆記 (一)


參考:《組合語言》 王爽  第一,二章



一、基礎知識 
1. 用組合語言編寫程式的工作過程

彙編本質就是為了方便程式員,把二進位代碼用彙編指令來表示


彙編指令---------------->  編譯器  ---------------->機器碼----------------> 電腦執行

mov ax, bx                                                          100010001

................                                                              ...............


2. 組合語言的組成

彙編由下面3類指令組成

(1)彙編指令:如mov, add 等,有著對應的機器碼.

(2)偽指令:沒有對應的機器碼,由編譯器執行,電腦不執行

(3)其他符號:如+、-、*、/ 等由編譯器識別,沒有對應的機器碼。



3. 指令和資料

指令和資料,存在儲存空間中沒有區別。比如同一段二進位1000100111011000

cpu可以把它看作指令 mov ax, bx  也可以看作資料 89D8H



4. 位,位元組、字(word)、字長、儲存單元

位元組:由8位組成

字(word):電腦在同一時間內處理的一組位元稱為一個電腦的“字”,大小由cpu決定,如8086cpu就是16位即2個位元組。

字長:就是字的長度。

儲存單元:儲存空間被劃分成若干個儲存單元,大小為8位即一個位元組。如記憶體最小單元就是一個位元組,[0]中就是一個位元組。


5.CPU匯流排

外部匯流排

    地址匯流排:決定CPU的定址能力。8086CPU有20根地址匯流排定址能力是2^20即1MB。

    資料匯流排:決定CPU與其他器件(如記憶體,顯卡)進行資料轉送的傳輸量。8086CPU有16根地址匯流排(就是字長)。

    控制匯流排:決定CPU對系統中其他器件(如記憶體,顯卡)的控制能力。


6. 地址空間


    電腦由很多器件組成。如記憶體條,網卡,顯卡。他們都有記憶體的。它們都與cpu匯流排相連。CPU對它們進行讀或寫的時候都是通過控制線發出記憶體讀寫命令。也就是說CPU在操 控它們的時候,把它們都當作記憶體看待,把它們總的當作一個由若干儲存單元組成的邏輯儲存空間,這個儲存空間就是記憶體位址空間(就是說CPU的地址空間,不僅僅是記憶體條的記憶體,而是電腦上所有的儲存空間)

如:

00000~9FFFF  主存地址空間(記憶體條)

9FFFF~A0000 顯存地址空間

C0000~FFFFF 各類ROM地址空間(如主板BIOS,顯卡BIOS)


二、寄存器


前面講的匯流排都是對cpu外部來講的外部匯流排。cpu 的運算器、控制器、寄存器都是靠內部匯流排相連的


運算器:進行資訊的處理

儲存空間:進行資訊儲存

控制器:控制各個器件進行各種


對於組譯工具來說,CPU中主要的組件是寄存器。


如8086CPU有14個寄存器:

ax, bx, cx, dx, si, di, sp, bp, ip, cs, ss, ds, es ,psw

ax,bx,cx,dx, 用來存放一般資料。大小是16位即2個位元組

cs是程式碼片段地址寄存器

ip是指令指標寄存器,存放位移地址

ds是資料區段寄存器


1.通用寄存器

ax,bx,cx,dx, 用來存放一般資料。大小是16位即2個位元組

8086CPU為了相容上一代的8位CPU,ax,bx,cx,dx都可以分成兩個獨立的寄存器

AX 可分為 AH (AX的高8位)和 AL(AX低8位)

同理BX 可分為 BH 和BL 、CX 可分為CH 和 CL 、DX可分為DH和AL

 

2.幾條彙編指令

mov ax, 18    ax=0018H

mov ah, 78     ah=0078H

add ax, 8        ax = ax+008H

mov ax, bx      ax = bx

add ax, bx  ax = ax + bx


3. 8086CPU給出物理地址的方法

8086CPU地址匯流排有20根,而8086是16位的CPU,只能一次性處理傳輸和暫時儲存16位。

8086CPU採用了用兩個16位地址合成一個20位物理地址的方法就是:

物理地址 = 段地址 * 16 + 位移地址 


4. 段寄存器

8086CPU 有4個段寄存器 CS、DS、SS、ES

(1)cs和ip

cs是程式碼片段地址寄存器

ip是指令指標寄存器,存放位移地址


不能用 mov cs, 1000H mov ip, 0 來修改段寄存器


要用jmp指令如

jmp  2AE3:3  把cs改成2AE3H   把ip改成003H


如果只想改ip用如下指令

jmp  0 或者jmp ax 

 

可以通過《組合語言》 王爽 的實驗一來瞭解寄存器的工作








相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.