陳鍾誠 2006 年 8 月 29 日
從 Java 到 組合語言
WORD sum 0
WORD i 0
WORD INDEV 1
LOOP TD INDEV
System.in.read(); JEQ LOOP
RD INDEV
STCH DATA
從 Java 到 組合語言
BYTE b 0
SHORTc 0
WORD n 0
WORD i 1
WORD INDEV 1
byte b = (byte) System.in.read(); WORD OUTDEV
char c = (char) b; RD R1, INDEV
int n = c-'0'; STORE R1, n
for (int i=1; i<=n; i++) LOAD R2, i
System.out.println(i); LOOP COMP R2, n
WD R2, OUTDEV
JGT EXIT
INC R2
JMP LOOP
EXIT WRITE
讀取迴圈 Polling – 一直等到鍵盤輸入為止
ALU 暫存器
暫存器
( 加法器… ) R1 = 00000041
R1
R2 輸出埠 輸入埠
R2 = 01 0A
00 00
Control Unit IR =21 02 00 02 01 01
( 控製單元 ) PC
PC 02 02 00000041
03 03
04 04
註: 41 是‘ A’ 的 ASCII 碼
兩個程式以上 … , 不管用
LOOP TD INDEV READ => 21
JEQ LOOP R2 => 02
READ R2, Keyboard Keyboard => 00 02
Busy Waiting
會一直等到有輸入值,此時其
ALU 暫存器
暫存器 他程式無法用鍵盤
( 加法器… ) R1 = 00000041
R1
R2 輸出埠 輸入埠
R2 = 01 0A
00 00
Control Unit IR =21 02 00 02 01 01
( 控製單元 ) PC
PC 02 02 00000041
03 03
04 04
以下範例就是兩個以上的程式
目前電腦的真實情況…
上網同時印表,此時另一個命令列正在等待輸
入
當有人敲鍵盤時,產生中斷
當網路有資料進來時,產生中斷
何謂中斷機制 ?
LOOP TD INDEV Call READ INDEV
JEQ LOOP
READ R2, Keyboard
不會 Busy Waiting
中斷後換其他程式執行,
Busy Waiting 直到鍵盤有輸入時,系統會回
會一直等到有輸入值,此時其
ALU 暫存器
暫存器 到這個地方,繼續執行下一行
他程式無法用鍵盤
( 加法器 …) R1 = 00000041
R1
R2 輸出埠 輸入埠
R2 = 01 0A
00 00
Control Unit IR =21 02 00 02 01 01
( 控製單元 ) PC
PC 02 02 00000041
03 03
04 04
中斷機制的原理
1. 必須靠硬體配合 Call READ INDEV
2. 輸出入裝置取得資料後會產生中斷
3. 中斷造成 CPU 跳到特定的程式 ( 稱為中斷程式 )
去執行,執行完後再將控制權交還給應用程式。
控制卡
ALU 暫存器
暫存器 中斷 ( 好了、可以來取了 )
( 加法器… ) R1 = 00000041
R1
R2 輸入埠
R2 = 01 0A
中斷處理程式
00
Control Unit IR =21 02 00 02 01
( 控製單元 ) PC
PC Memory 02 00000041
03
應用程式 04
加入中斷機制後 …
電腦可以同時執行許多個程式。
FTP 伺服器、網站
開很多視窗
一邊編寫程式一邊聽音樂…
但是 …
這一切都還沒實現,因為:
缺少了作業系統
每個程式應該載入到哪裡執行呢 ?
如果讓各個程式自行決定,程式的範圍重疊時就無法正確執行了。
哪個程式先執行,哪個程式後執行 ?
中斷後應該交由哪個程式執行?
每個人都要寫一個磁碟控制程式嗎?
如果如此、你在程式設計時只會看到硬碟、磁軌、讀寫頭的位置,不會
看到檔案系統 ( 因為、檔案不是一個裝置、硬碟才是 )
作業系統的功能
行程管理 (Process Management)
記憶體管理 (Main Memory Management)
輔助記憶體管理 (Secondary-Storage)
安全性與保護 (Protection)
開機完後就當了
你必須先寫一個啟動程式,翻成機器碼,然後存到硬碟的啟
動區域 ( 怎麼存 ???)
所以要改用光碟開機,先寫一個光碟啟動程式,然後燒到光
碟當中,由光碟開機後,再把硬碟啟動程式寫到硬碟中。
載入所有預設的中斷程式
將作業系統主程式的資料堆疊,程式堆疊,堆
積等結構配置好。
開始執行作業系統的主程式。
進階課程
計算機結構 – 電子系
FPGA – 電子系
單晶片控制實習 – 電子系
嵌入式系統設計 ( 目前本校沒開,以後可能會
開在電資所 )