回分類題庫
d303: 程式作業2 系統程式2017
出處:

Difficulity : N/A
Accepted : 69 Times | Submit :778 Times | Clicks : 2279
Accepted : 53 Users | Submit : 73 Users | Accepted rate : 73%
Time Limit :10000 ms | Memory Limit : 64000 KBytes
題目加入時間 : 2017-03-27 21:48

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, OPERAND  這三種欄位字串 
ex: FIRST LDA ALPHA 
或是只有 OP, OPERAND  這兩個欄位字串 
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 :

(管理員:mtchi)

  Solve it!   Status Forum (5)

C++
C
JAVA
84087. sp17104703021 (6 ms , 435KB)
84028. sp17104703046 (6 ms , 345KB)
83734. sp17104703030 (6 ms , 466KB)
83721. sp17104703025 (6 ms , 485KB)
85313. sp17102703007 (7 ms , 500KB)
83989. sp17103703044 (6 ms , 225KB)
83399. sp17103703042 (7 ms , 232KB)
84151. sp17103703021 (8 ms , 244KB)
84146. varvar (8 ms , 225KB)
83310. sp17104703038 (128 ms , 1612KB)
82556. linzichao (129 ms , 1610KB)

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