回分類題庫
d299: 程式作業1 系統程式2017
出處:

Difficulity : N/A
Accepted : 46 Times | Submit :743 Times | Clicks : 2313
Accepted : 37 Users | Submit : 81 Users | Accepted rate : 46%
Time Limit :10000 ms | Memory Limit : 64000 KBytes
題目加入時間 : 2017-03-14 15:34

Content :

請參考課本附錄A 

分析16進位機械碼,將機械碼翻譯成SIC/XE組合語言。

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

0~60: SIC指令

61~80: SIC/XE FORMAT1/2 指令

81~100: SIC/XE FORMAT3, 4 (本次作業測資排除indirect定址)

Input :

第一行格式為  P 16進位數值 B  16進位數值
ex: P 000100 B 000200
表示P暫存器的內容為000100 (Hex), B暫存器的內容為000200 (Hex)
 
之後每一行為一串SIC/XE 16進位機械碼(object code in Hexadecimal)
 
請取出每一行的指令進行分析,翻譯成SIC/XE組合語言指令

Output :

針對每一行16進位機械碼的指令進行翻譯解碼
 
第一個字串為 SIC or SIC/XE 指令,如: LDA

第二個字串主要為計算Target Address (TA)有以下幾種可能  
-SIC
*位址(十進位數). ex: 100
*位址(十進位數),X. 表示使用index定址 ex: 100,X
 
-SIC/XE Format 1/2 
* 無字串 
* 一個或兩個暫存器代碼(逗點前後不必有空格). ex: S  or  A,S 
 
-SIC/XE Format 3/4 
根據object code計算出Target Address(考慮n,i,x,b,e的影響, ex: b=1, 需將B暫存器的值加入TA的位址) 
* TA位址(十進位數). ex: 100
* x=1,TA位址(十進位數),X. 表示使用index定址 ex: 100,X 
* immediate定址. #十進位數, ex: #5
* LDCH指令使用immediate定址時,請翻成對應的ASCII碼, ex: C'Z' 

 
為了簡化作業情況,與實際SIC上的差異
* Format 4,不需要變成+LDA (因為課本第二章才會教,本題先簡化) 
* 本次作業測資排除indirect定址 
* 有些format 3/4的指令,在一般SIC組語使用上是沒有運算元(RSUB),但在這次作業不考慮這些情形 ex: 4C0000 -> RSUB 0
* format 4的處理雖然以架構而言,不存在b=1 or p=1。但在這次作業,b, p的處理與format 3時一樣
也就是80~100 專心處理變成format4的情形,n, i 不全為0,且e為1的情況 
 

Sample Input :

P 000100 B 000200
000000
188020

Sample Output :

LDA 0
ADD 32,X

Hint :


  

Author :

(管理員:mtchi)

  Solve it!   Status Forum (10)

C++
C
JAVA
80549. sp17103305079 (6 ms , 463KB)
81840. linzichao (7 ms , 478KB)
81813. sp17104703008 (7 ms , 231KB)
81810. sp17104703008 (7 ms , 231KB)
81692. sp17104703027 (7 ms , 418KB)
82018. abcdefgs0324 (6 ms , 244KB)
81880. sp17103703044 (8 ms , 232KB)
81617. sp17101703019 (8 ms , 241KB)
81225. sp17104703045 (8 ms , 236KB)
81878. sp17104703030 (116 ms , 913KB)
81876. sp17102703051 (124 ms , 904KB)

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