ADD [R,A,N],[R,A] 表示ADD(加法指令)有兩個運算元,第一個運算元可為暫存器(R)、位址(A)、或為常數(N),而第二個運算元不是暫存器(R)就是位址(A)。
每道指令編碼成4個bits。運算元由兩個部分所構成:「型態欄位」與「數值欄位」,型態欄位佔2個bits,數值欄位佔4個bits,共佔6個bits。型態欄位所代表的值如下:
當運算元的型態欄位等於00(Register),則數值欄位表示暫存器的編號,例如當型態欄位=00,數值欄位=7,則該運算元表示「第七號暫存器」寫成「R7」。暫存器編號為R0 ~ R1023。
當運算元的型態欄位等於01(Absolute),則數值欄位表示記憶體的絕對位置,例如當型態欄位=01,數值欄位=110,則該運算元表示「記憶體位置110」寫成「$110」,合法的記憶體位置為$0 ~ $16383。
當運算元的型態欄位等於10(PC-Relative),則數值欄位表示為與指令暫存器(Program Counter)相對的記憶體位置(相對位置不會是負的),例如當型態欄位=10,數值欄位=45,則該運算元所表示的記憶體位置為:該指令的位置 (Program Counter) + 45,寫成「PC+45」,合法的相對位置為0 ~ 16363。
當運算元的型態欄位等於11(Constant),則數值欄位代表一個常數,其值介於0~16383,例如當型態欄位=11,數值欄位=1276,則該運算元表示「常數1276」,寫成「1276」。
Input and Output
請你從輸入的機器語言轉換成原始的組合語言程式碼,機器語言以16進制表示,每列30個字元(除了最後一列為1~30個字元不等),請將轉換後的組合語言每道指令一列作輸出。Sample Input
4C00D00004C0020001000000001400 005FFFB801E
Sample Output
MOV 13,R0 MOV 2,R1 ADD R0,R1 MOV R0,$8191 BR PC+30
原文出處
沒有留言:
張貼留言