回分類題庫
d252: 程式作業3 系統程式2014
出處:

Difficulity : N/A
Accepted : 12 Times | Submit :875 Times | Clicks : 4724
Accepted : 5 Users | Submit : 54 Users | Accepted rate : 9%
Time Limit :10000 ms | Memory Limit : 64000 KBytes
題目加入時間 : 2014-06-08 22:52

Content :

可參考課本p.54  的pass2 psudo code

將"SIC"組合語言程式的pass1產生的結果翻譯成object code以及object program
 
依能通過的測試資料,決定成績。

0~20: SIC組合語言  題目範例
 
21~30: 處理註解
-註解格式  .符號後的一行都是註解,因此可能為零(.後直接是換行浮號)或多個字串。
               ex:  1000 LDA THREE
     1003 .
                     1003 . C1
                     1003 . C1 C2 ... 
               
 
測驗pass2演算法的細節正確性。
31~40: 
-影響text record斷行的情形. (RESW, RESB, END)
-WORD 的輸入是十進位
 
41~70: 能處理完整的SIC組合語言

41~50 -Index addressing  (弄懂LDA BETA  和 LDA BETA,X的差別)
-SIC指令完整性: 每一個SIC指令都能轉換成opcode
 
51~60 -BYTE  (ex: BYTE C'Hello',  BYTE X'F1' )

61~70 課本Fig 2.2和Fig 2.3

-text record 超過30個byte要斷行  

 
注意  當START 0時,進入SIC/XE模式  (輸出時address要補齊四個16進位數 ex: 0000 COPY START 0)  
71~90: SIC/XE組合語言(不包含Modification record),注意address mode         
-SIC/XE指令完整性: format 1, 2, 3, 4的差別
-FORMAT 1: 只有OP  ex:FIX  或是 SYMBOL OP ex: FIRST FIX 
  -#: ADD #3
-@: J @RET
  -Format4:  +JSUB #RDREC  和 +JSUB #3 的差別 
                -注意先pc relative, 若不行才使用base relative   (本段測資沒有base relative無法處理的例外)
-RSUB 雖然是format 3/4。但因不接受OPRAND,是故address為零,也不需經過pc relative address.
 
 
91~100: SIC/XE組合語言(包含Modification record)  ex:課本Fig 2.6和Fig 2.8

Input :

請參考範例輸入

開頭為SYMTAB, 每一行為 [symbol name] [address(Hex)], ex:

 TEST 1000

以 ==========表示symbol的結尾,接下來是assembly program,

每一行為[address(Hex)] [source statement]

source statement最多可能包含  SYMBOL, OP, OPRAND  這三種欄位字串 
ex: FIRST LDA ALPHA 
 
或是只有 OP, OPRAND  這兩個欄位字串 
ex:  LDA ALPHA 
 
或是只有 SYMBOL, OP  這兩個欄位字串  ex: FORMAT 1
ex:  ALPHA FIX
 
或是只有 OP字串  
ex: RSUB  

 

Output :

請參考範例輸出

首先將每一行 assembly program輸出,並依需要翻譯出對應的object code

 ex: 輸出

 1000 FIRST LDA ALPHA 001003

以 ==========表示結尾,接下來是輸出對應的object program. 

為了格式的一致性,以30 byte斷開TEXT RECORD。

另外,注意演算法中需要斷開TEXT RECORD的時機。ex: 遇到RESW, RESB指令

 注意: 輸出範例的Header record為 HTEST  001000000006

T和001000之間有兩格空白(瀏覽器顯示有時會變成一個空白) 

 

Sample Input :

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

Sample Output :

1000 TEST START 1000
1000 FIRST LDA ALPHA 001003
1003 ALPHA WORD 3 000003
1006 END FIRST
==========
HTEST  001000000006
T00100006001003000003
E001000

Hint :


  

Author :

(管理員:sp14_TA)

  Solve it!   Status Forum (0)

C++
C
JAVA
56821. sp101703037 (4 ms , 522KB)
56458. sp101703003 (5 ms , 468KB)
56454. sp101703003 (6 ms , 472KB)
56441. sp101703003 (6 ms , 473KB)
56265. sp101703005 (6 ms , 525KB)
沒有解題記錄 56415. sp14_99306060 (134 ms , 1798KB)
56413. sp14_99306060 (147 ms , 1760KB)

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