回分類題庫
d251: 程式作業2 系統程式2014
出處:

Difficulity : N/A
Accepted : 54 Times | Submit :615 Times | Clicks : 2740
Accepted : 34 Users | Submit : 57 Users | Accepted rate : 60%
Time Limit :10000 ms | Memory Limit : 64000 KBytes
題目加入時間 : 2014-04-27 14:54

Content :

請參考課本p.53  的pass1 algorithm

將SIC/XE組合語言程式(Fig. 2.1),轉換成中間的狀態(Fig. 2.2)
也就是實作Loc計算和建立SYMTAB, 

依能通過的測試資料,決定成績。

0~20: SIC組合語言  題目範例
21~60: SIC組合語言 課本Fig 2.1
61~80: 錯誤處理:1. duplication symbol. 2. invalid operation code.
81~100: SIC/XE 組合語言Fig 2.5

Input :

每一筆測資由數行SIC/XE指令所組成(ex: 課本Fig. 2.1),

每一行最多可能包含  SYMBOL, OP, OPRAND  這三種欄位字串 
ex: FIRST LDA ALPHA 
或是只有 OP, OPRAND  這兩個欄位字串 
ex:  LDA ALPHA 
或是只有 OP字串  
ex: RSUB 

Output :

對應於"每一行測資"(ex: TEST START 1000),

即需輸出計算Loc值(4個16進位數),空一格,再將原始輸入列出。
ex:  1000 TEST START 1000

所有輸入處理完後,先輸出10個=字元,換行,

再將SYMTAB輸出

格式為 SYMBOL, loc(16進位) 這兩個欄位
ex: TEST 1000
 
 
 
 
* 與課本不同之處,每行指令都需輸出對應的loc值,包括END或"註解", (註解後可能有零或多個字串)
ex: 
1003 ZERO WORD 0  
1006 . 
1006 . COMMENT
1006 . 
1006 END FIRST 
* 錯誤處理:如果該行有錯誤情形,請對應以下解說輸出,並結束程式,不再處理接下來指令。
1. duplication symbol.
輸出 ERROR DUPSYM: 該行指令      (冒號後空一格)
ex:
輸入為ALPHA WORD 1 
輸出為ERROR DUPSYM: ALPHA WORD 1
2. invalid operation code.           
輸出 ERROR INVALIDOP: 該行指令  (冒號後空一格)
ex:
輸入為LDZ ALPHA
輸出為ERROR INVALIDOP: LDZ ALPHA

Sample Input :

TEST START 1000
FIRST LDA ALPHA
ALPHA WORD 3
END FIRST

Sample Output :

1000 TEST START 1000
1000 FIRST LDA ALPHA
1003 ALPHA WORD 3
1006 END FIRST
==========
TEST 1000
FIRST 1000
ALPHA 1003

Hint :


  

Author :

(管理員:sp14_TA)

  Solve it!   Status Forum (0)

C++
C
JAVA
54348. sp101703026 (4 ms , 466KB)
54304. sp101703014 (4 ms , 460KB)
53949. sp101703009 (4 ms , 449KB)
53757. sp101703005 (4 ms , 466KB)
54530. sp101703031 (5 ms , 511KB)
54490. sp102703030 (2 ms , 218KB)
54356. sp101703032 (2 ms , 338KB)
54351. sp101703033 (2 ms , 263KB)
54612. sp101703004 (4 ms , 174KB)
54596. sp101703008 (5 ms , 247KB)
53928. sp14_99306060 (130 ms , 1321KB)

執行時間會受很多因素影響因此僅供參考,主機等級請看這裡