Presentation is loading. Please wait.

Presentation is loading. Please wait.

組合語言與系統分析 SIC程式教學.

Similar presentations


Presentation on theme: "組合語言與系統分析 SIC程式教學."— Presentation transcript:

1 組合語言與系統分析 SIC程式教學

2 SIC/XE Instruction Set – Appendix A

3 SIC/XE Instruction Set – Appendix A

4 SIC程式教學

5 記憶體 記憶體是由長度為8 bits的byte所組成 連續3 bytes組合為一個word Ex. 010010112= 4B16
記憶體用十六進位顯示 連續3 bytes組合為一個word Ex. A0124C

6 變數宣告 變數宣告有兩種類型 宣告變數並設定初始值 格式: 變數名稱 型態 初始值 WORD Ex. NUMBER WORD 45
撰寫程式時,初始值為十進位 當執行時,會將其轉為十六進位表示儲存在記憶體中 4510= 2D16,記憶體內容為2D

7 變數宣告 BYTE Ex. STR1 BYTE C’TEST’ C代表char(字元)
會以ASCII code方式轉換成十六進位碼儲存在記憶體當中 TEST在記憶體中顯示為 Ex. STR2 BYTE X’D3’ X代表十六進位 記憶體中顯示為D3

8 變數宣告 宣告變數保留空間 格式: 變數名稱 型態 保留空間數 RESW RESB Ex. TEMP1 RESW 2
Ex. TEMP2 RESB 1

9 暫存器 一個暫存器的長度為1 word (3 bytes) SIC可用的暫存器有五個 A : Accumulator;算術運算使用
X : Index register;可用於定址 L : Linkage register;當跳到副程式,將返回位址 存在此暫存器中,以供返回原程式 PC : Program counter;下一個執行的指令 位址 SW : Status word;包含各種資訊和條件碼(CC)

10 Load指令 將所指定的記憶體內容Load到暫存器中 LDA m A  (m..m+2)
是將記憶體位置m開始的一個word內容,放到暫存器A中 Ex LDA STR1 STR1 BYTE X’C1B235’ 暫存器A內容為C1B235

11 Load指令 LDCH m A [rightmost byte]  (m) 其他指令:LDL、LDX
CH代表char,所以是只抓一個byte,放到暫存器A最後一個byte(最右邊的byte) Ex LDCH STR1 STR1 BYTE X’C1B235’ 暫存器A內容為FFFFC1 暫存器A預設值為FFFFFF,前兩個bytes沒有load內容,仍維持預設值 其他指令:LDL、LDX

12 Store指令 將暫存器內容Store到所指定的記憶體中 STA m m..m+2  (A)
將暫存器A的內容,放到記憶體位置m開始的一個word中 Ex LDA STR1 STA STR2 STR1 BYTE X’C1B235’ STR2 RESW 1 STR2這個word內容為C1B235

13 Store指令 STCH m m  (A) [rightmost byte] 其他指令: STL、STSW、STX
將暫存器A的最後一個byte (最右邊的byte)內容,放到記憶體m開始的一個byte中 Ex LDA STR1 STCH STR2 STR1 BYTE X’C1B235’ STR2 RESW 1  STR2這個word內容為35FFFF 暫存器A最右邊的byte為35,將其放到STR2開始第一個位置,變成35FFFF 記憶體預設值為FFFFFF,後兩個bytes沒有load內容,仍維持預設值 其他指令: STL、STSW、STX

14 基本算數、邏輯運算指令 暫存器A和所指定的記憶體內容做運算,結果存在暫存器A中 ADD m A  (A) + (m..m+2)
將”暫存器A的內容”與”記憶體位置m開始的一個word內容”相加,並將結果存在暫存器A中 Ex LDA ONE ADD TWO ONE WORD 1 TWO WORD 2 暫存器A內容為000003 其他指令: SUB 、 MUL 、 DIV 、 AND 、 OR

15 程式練習1 計算1+2+3 將結果存放在變數SUM中

16 比較指令 比較暫存器A和所指定的記憶體內容,並設定條件碼CC結果為(<,=,或>) COMP m (A) : (m..m+2)
將暫存器A和記憶體位置m開始的一個word內容進行比較,並設定CC Ex LDA ONE COMP ONE ONE WORD 1 CC設定為EQ 可與下頁的條件式跳躍指令共用

17 條件式跳躍指令 測試條件碼CC的值,並做適當的跳躍 JEQ m PC  m if CC set to = 其他指令: JGT 、 JLT
測試CC的值,當值為EQ時,跳到記憶體位置m PC存放下一個執行的指令位置,所以當PC設定為m,下一個執行的指令位址即為m Ex. THIS LDA ONE COMP ONE JEQ THIS ONE WORD 1 CC為EQ,跳到THIS執行 其他指令: JGT 、 JLT

18 程式練習2 利用程式練習1 比較SUM和4,若SUM>4,跳到THIS THIS執行: SUM-4 計算1+2+3

19 跳躍指令 跳躍到指定的位置 J m PC  m 跳到記憶體位置m

20 TIX指令 TIX m X  (X)+1; (X):(m..m+2) 先加1到暫存器X的內容值 再比較暫存器X中的新值,和運算元的值
Ex. THIS LDA ONE TIX SEVEN JLT THIS

21 程式練習3 利用TIX指令 計算1+2+3

22 輸入和輸出 輸出和輸入都是一次以一個byte傳出或傳入暫存器A的最右邊byte(以ASCII code方式)
TD m Test device specified by (m) 測試要進行輸出或輸入的device是否準備好可以傳送或接收,結果儲存在CC “<“表示準備好傳送或接收,”=”表示不能傳送或接收

23 輸入和輸出 RD m A [rightmost byte]  data from device specified by (m)
從指定的device讀取一個字元,根據ASCII code轉換成其十六進位表示,儲存到暫存器A的最右邊byte WD m Device specified by (m)  (A) [rightmost byte] 將暫存器A最右邊的byte(十六進位表示),根據ASCII code轉換成相對應的字元,寫到所指定的device中

24 輸入和輸出 Ex. RLOOP TD INDEV JEQ RLOOP RD INDEV INDEV BYTE X’F3’
先測試deviceF3是否準備好傳送,若準 備好就從device F3讀取一個字元,放到 暫存器A的最右邊一個byte 若device F3內容為1,執行後,暫存器 A的內容為FFFF31

25 輸入和輸出 --Input file & Output file
DEVF3:Input device 要輸入程式的input data DEV04、DEV05、DEV06:output device 程式要輸出的output data

26 程式練習4 從device F3輸入一個字元(ex. A) 再輸出到device 04

27 與副程式連結指令 JSUB m L  (PC); PC  m RSUB PC  (L) 跳到副程式,並把返回位址放在暫存器L中
Ex JSUB THIS LDA TWO THIS LDA ONE

28 與副程式連結指令 Ex. JSUB THIS 跳到THIS副程式 LDA TWO . THIS LDA ONE RSUB 返回原程式

29 程式練習5 1.在主程式中 2.副程式 3.回到主程式 將暫存器A歸零 從device F3輸入一個字元(ex. A)


Download ppt "組合語言與系統分析 SIC程式教學."

Similar presentations


Ads by Google