林銘波編著 --- 全華科技圖書公司 2.1
基本程式設計觀念
自然語言(中文、英文、...)
高階語言(C、C++、Java)
組合語言(8051或是80x86)
機器語言(8051或是80x86) 機器 人
微算機基本原理與應用 第2章 微算機基本工作原理
計算機的階層式結構
硬體
組合語言
高階語言
應用程式(或語言)
林銘波編著 --- 全華科技圖書公司 2.3
儲存程式計算機
位址
資料輸出 資料輸入
1 0
2
n-2 n-1 n 67
27 15
09 56 27 位址
寫入 讀取 記憶器
資料 指令 CPU
中央處理器
位址匯流排
資料匯流排 讀取/寫入控制
圖2.1-3 計算機的邏輯結構 圖2.1-4 記憶器的邏輯結構
微算機基本原理與應用 第2章 微算機基本工作原理
CPU的動作
CPU 的動作 CPU 模 模組 模 模 組 組 組
PC ← 0 ; 重複執行下列動作
自記憶器位址為 PC 的位置中摘取指令;
執行該指令;
PC ← PC + 1
END CPU 模 模 模 模組 組 組 組
林銘波編著 --- 全華科技圖書公司 2.5
CPU基本結構與動作
CPU 的動作 CPU 模 模 模 模組 組 組 組
PC ← 0 ; 重複執行下列動作
自記憶器位址為 PC 的位置中摘取指令;
執行指令解碼;
若該指令執行時需要資料,則自記憶器中讀取運算元;
執行指令的動作;
若該指令需要儲存結果,則存回結果於記憶器中;
PC ← PC + 1 END CPU 模 模 模 模組 組 組 組
微算機基本原理與應用 第2章 微算機基本工作原理
一個簡化的MCS-51 CPU RTL模型
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR)
指令解碼器 (ID) 時序控制邏輯單元
(TCL)
程式計數器 (PC)
記憶器緩衝暫 存器(MBR) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU 其它電路
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
資料指示暫 +1 存器(DPTR)
記憶器位址暫 存器(MAR) 內部資料記
憶器與SFR
林銘波編著 --- 全華科技圖書公司 2.7
指令讀取的第一個步驟
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR)
指令解碼器 (ID) 時序控制邏輯單元
(TCL)
程式計數器 (PC) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU 其它電路
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
控制匯流排 T1
資料指示暫 +1 存器(DPTR)
記憶器位址暫 存器(MAR)記憶器緩衝暫 存器(MBR) 內部資料記
憶器與SFR
微算機基本原理與應用 第2章 微算機基本工作原理
指令讀取的第二個步驟
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR) 程式計數器
(PC) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
T2
資料指示暫 +1 存器(DPTR)
記憶器位址暫 存器(MAR)記憶器緩衝暫 存器(MBR) 內部資料記
憶器與SFR
林銘波編著 --- 全華科技圖書公司 2.9
指令讀取的第三個步驟
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR)
指令解碼器 (ID) 時序控制邏輯單元
(TCL)
程式計數器 (PC) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU 其它電路
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
控制匯流排 T3
+1
T3 資料指示暫
存器(DPTR)
記憶器位址暫 存器(MAR)記憶器緩衝暫 存器(MBR) 內部資料記
憶器與SFR
微算機基本原理與應用 第2章 微算機基本工作原理
指令讀取的第四個步驟
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR)
指令解碼器 (ID) 時序控制邏輯單元
(TCL)
程式計數器 (PC) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU 其它電路
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
T4 資料指示暫 +1
存器(DPTR)
T4
記憶器位址暫 存器(MAR)記憶器緩衝暫 存器(MBR) 內部資料記
憶器與SFR
林銘波編著 --- 全華科技圖書公司 2.11
指令的讀取與執行動作時序圖
MAR PC
PC PC + 1 T1
T2
MBR Mem[MAR] T3
IR MBR T4
MAR DPTR
MBR Mem[MAR]
ACC MBR MOVX A,@DPTR
T5
T6
T7 MOVX @DPTR,A ADD A,R0
ACC ACC + R0 其它指令
Mem[MAR] MBR MAR DPTR
MBR ACC
微算機基本原理與應用 第2章 微算機基本工作原理
指令MOVX A,@DPTR執行的第一個步驟
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR)
指令解碼器 時序控制邏輯單元
資料指示暫 存器(DPTR)
程式計數器 (PC) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
T5
+1
記憶器位址暫 存器(MAR)記憶器緩衝暫 存器(MBR) 內部資料記
憶器與SFR
林銘波編著 --- 全華科技圖書公司 2.13
指令MOVX A,@DPTR執行的最後一個步驟
資料暫存器 (R0 ~ R7)
累積器 (ACC) 算數邏輯單元
(ALU)
指令暫存器 (IR)
指令解碼器 (ID) 時序控制邏輯單元
(TCL) 資料指示暫 存器(DPTR)
程式計數器 (PC) 8051 CPU
內部16位元位址匯流排
內部8位元 資料匯流排
接往CPU 其它電路
記憶器 程式 資料
R / W
資料匯流排 位址匯流排
控制匯流排 T7
+1
記憶器位址暫 存器(MAR)記憶器緩衝暫 存器(MBR) 內部資料記
憶器與SFR
微算機基本原理與應用 第2章 微算機基本工作原理
資料轉移指令
指令 RTL 描述 說明
MOV A,Rn ACC ← Rn 轉移暫存器 Rn 的內容到累積器 ACC
MOV A,#data ACC ← data 轉移 8 位元的立即資料到累積器 ACC
MOV Rn,A Rn ← A 轉移累積器 ACC 的內容到暫存器 Rn
MOV Rn,#data Rn ← data 轉移 8 位元的立即資料到暫存器 Rn MOV DPTR,#data16 DPTR ← data16 轉移 16 位元的立即資料到 DPTR 中 MOVX A,@DPTR ACC ← Mem[DPTR] 讀取記憶器中由 DPTR 指定的位置內容
後,儲存於累積器 ACC 中
林銘波編著 --- 全華科技圖書公司 2.15
算術運算指令
指令 RTL 描述 說明
ADD A,Rn ACC ← ACC + Rn 累積器 ACC 與 Rn 相加後,存回 ACC ADD A,#data ACC ← ACC + data 累積器 ACC 與 data 相加後,存回 ACC ADDC A,Rn ACC ← ACC + Rn+C 累積器 ACC 與 Rn 及進位相加後,存回 ACC ADDC A,#data ACC ← ACC + data+C 累積器 ACC 與 data 及進位相加後,存回 ACC SUBB A,Rn ACC ← ACC - Rn - C 累積器 ACC 減去 Rn 與 C 後,存回 ACC SUBB A,#data ACC ← ACC - data - C 累積器 ACC 減去 data 與 C 後,存回 ACC
微算機基本原理與應用 第2章 微算機基本工作原理
邏輯運算指令
指令 RTL 描述 說明
ANL A,Rn ACC ← ACC ∧ Rn 累積器 ACC 與 Rn AND 後,存回 ACC ANL A,#data ACC ← ACC ∧ data 累積器 ACC 與 data AND 後,存回 ACC ORL A,Rn ACC ← ACC ∨ Rn 累積器 ACC 與 Rn OR 後,存回 ACC ORL A,#data ACC ← ACC ∨ data 累積器 ACC 與 data OR 後,存回 ACC XRL A,Rn ACC ← ACC ⊕ Rn 累積器 ACC 與 Rn XOR 後,存回 ACC XRL A,#data ACC ← ACC ⊕ data 累積器 ACC 與 data XOR 後,存回 ACC CPL A ACC ← ACC 累積器 ACC 內容取 1 補數
林銘波編著 --- 全華科技圖書公司 2.17
分歧與跳躍指令
指令 RTL 描述 說明
JC disp C : PC ← PC + disp(2 補數) 當進位旗號為 1 時,分歧到標的位址 JNC disp C: PC ← PC + disp(2 補數) 當進位旗號為 0 時,分歧到標的位址 JZ disp ACC=0 : PC ← PC + disp(2 補數) 當 ACC 為 0 時,分歧到標的位址 JNZ disp ACC≠0 : PC ← PC + disp(2 補數) 當 ACC 為 1 時,分歧到標的位址 AJMP addr11 PC ← addr11 載入 11 位元的絕對位址於 PC 中
微算機基本原理與應用 第2章 微算機基本工作原理
基本組合語言程式例
程式 2.2-1 典型的組合語言程式列表 1 ;ex4.2-2.a51
---- 2 DSEG AT 30H 0030 3 OPR1: DS 1 0031 4 OPR2: DS 1
5 ;Exchange two words in memory 6 ;using DIRECT addressing mode ---- 7 CSEG AT 0000H
0000 A830 8 SWAPBYTE: MOV R0,LOW OPR1 ;get opr1 0002 A931 9 MOV R1,LOW OPR2 ;get opr2 0004 8831 10 MOV LOW OPR2,R0 ;save opr1 0006 8930 11 MOV LOW OPR1,R1 ;save opr2 0008 22 12 RET
13 END
林銘波編著 --- 全華科技圖書公司 2.19
基本組譯程式假指令
假指令 意義 例子
BSEG AT exp 定義絕對的位元節區 BSEG AT 20H CSEG AT exp 定義絕對的程式節區 CSEG AT 0000H DSEG AT exp 定義絕對的資料節區 DSEG AT 30H [標記:] DB <exp>[,<exp>,…] 定義位元組資料 MESSAGE: DB 0EFH [標記:] DW <exp>[,<exp>,…] 定義語句(2 位元組)資料 DW 07,0E23FH [標記:] DBIT <exp> 定義位元資料 KBFLAG: DBIT 1 [標記:] DS <exp> 保留位元組儲存空間 DS 50
ORG <exp> 定義機器碼起始位址 ORG 0100H
<name> EQU <exp> 指定 name 的值為 exp THREE EQU 3
END 表程式到此結束 END
微算機基本原理與應用 第2章 微算機基本工作原理
組合語言程式的建立
作業系統 (核心程式)
組譯程式 連結程式 載入程式 執行程式
編輯程式
命令
原始程式 目的程式 目的程式
(可執行)
I/O驅動程式
程式列表 程式列表