You are on page 1of 3

98 上 金門技術學院 資工三 系統程式 期末考 出題者 : 陳鍾誠

學號 : 姓名 : 分數 :

1.請說明組合語言的用途與功能為何? 2. 請說明二階段組譯器的第一階段與第二階段之
(10%) 功能為何? (10%)

3. (1) 假如有一個組合語言程式 sum.asm , 4. (1) 假如有一個 C 語言程式 sum.c ,請寫出轉


請寫出可以組譯該程式的微軟組譯指令? 換該程式為組合語言的的微軟編譯指令? (5%)
(5%)

(2) 假如有一個 C 語言程式 sum.c ,請寫出轉換


(2) 假如有一個組合語言程式 sum.s ,請 將該程式為組合語言的的 GNU 編譯指令? (5%)
寫出可以組譯該程式的 GNU 組譯指令?
(5%)

5. 請寫出 X=(A-B)*(C-D)的 CPU0 組合語言 6. 請寫出 sum=1+3+5+…. +99 的 CPU0 組合語言


程式。(10%) 程式。(10%)
學號 : 姓名 :

7. 請畫出電腦的馮紐曼架構,並說明其中 8. 請填入範例 (一) 中的欄位


各個元件的功用 (10%) (1) 記憶體位址欄位 (10%)
(2) 目的碼 A 欄位 (10%)
(3) 目的碼 B 欄位 (10%)

範例 (一)
行號 記憶體位 程式碼 目的碼 A 目的碼 B
址(16 進 (絕對定址) (相對定址)
位)
1 EX1 START 0x0100
2 LD R4, A
3 LD R5, B
4 ADD R1, R4, R5
5 ST R1, C
6 A WORD 37
7 B WORD 29
8 C RESW 1
9 END EX1

圖一 : CPU0 的指令編碼表
表格 A.1 CPU0 的指令編碼表
類 格 指令 OP 意義 語法 語意
型 式
載 L LD 00 載入 word LD Ra, [Rb+Cx] Ra[Rb+ Cx]
入 L ST 01 儲存 word ST Ra, [Rb+ Cx] Ra[ Rb+ Cx]
儲 L LB 02 載入 byte LB Ra, [Rb+ Cx] Ra(byte)[Rb+ Cx]
存 L SB 03 儲存 byte SB Ra, [Rb+ Cx] Ra(byte)[Rb+ Cx]
A LDR 04 LD (暫存器版) LDR Ra, [Rb+Rc] Ra(byte)[Rb+ Rc]
A STR 05 ST (暫存器版) STR Ra, [Rb+Rc] Ra[ Rb+ Rc]
A LBR 06 LB (暫存器版) LBR Ra, [Rb+Rc] Ra(byte)[Rb+ Rc]
A SBR 07 SB (暫存器版) SBR Ra, [Rb+Rc] Ra(byte)[Rb+ Rc]
L LDI 08 立即載入 LDI Ra, Cx Ra Cx
A CMP 10 比較 CMP Ra, Rb SW  Ra >=< Rb
A MOV 12 移動 MOV Ra, Rb Ra  Rb
A ADD 13 加法 ADD Ra, Rb, Rc Ra  Rb+Rc
A SUB 14 減法 SUB Ra, Rb, Rc Ra  Rb-Rc
A MUL 15 乘法 MUL Ra, Rb, Rc Ra  Rb*Rc
運 A DIV 16 除法 DIV Ra, Rb, Rc Ra  Rb/Rc
算 A AND 18 邏輯 AND AND Ra, Rb, Rc Ra  Rb and Rc
指 A OR 19 邏輯 OR OR Ra, Rb, Rc Ra  Rb or Rc
A XOR 1A 邏輯 XOR XOR Ra, Rb, Rc Ra  Rb xor Rc

A ROL 1C 向左旋轉 ROL Ra, Rb, Cx Ra  Rb ror Cx
A ROR 1D 向右旋轉 ROR Ra, Rb, Cx Ra  Rb rol Cx
A SHL 1E 向左移位 SHL Ra, Rb, Cx Ra  Rb ror Cx
A SHR 1F 向右移位 SHR Ra, Rb, Cx Ra  Rb ror Cx
J JEQ 20 跳躍 (相等) JEQ Cx if SW(=) PC  PC+Cx
J JNE 21 跳躍 (不相等) JNE Cx if SW(!=) PC  PC+Cx
跳 J JLT 22 跳躍 ( < ) JLT Cx if SW(<) PC  PC+Cx
J JGT 23 跳躍 ( > ) JGT Cx If SW(>) PC  PC+Cx

J JLE 24 跳躍 ( <= ) JLE Cx if SW(<=) PC  PC+Cx
指 J JGE 25 跳躍 ( >= ) JGE Cx If SW(>=) PC  PC+Cx
令 J JMP 26 跳躍 (無條件) JMP Cx PC  PC+Cx
J SWI 2A 軟體中斷 SWI Cx LR  PC; PC  Cx
J JSUB 2B 跳到副程式 JSUB Cx LR PC; PC  PC+Cx
J RET 2C 返回 RET PC  LR
堆 A PUSH 30 推入 word PUSH Ra SP-=4; [SP] = Ra;
疊 A POP 31 彈出 word POP Ra Ra = [SP]; SP+=4;
指 A PUSHB 32 推入 byte PUSHB Ra SP--; [SP] = Ra; (byte)
令 A POPB 33 彈出 byte POPB Ra Ra = [SP]; SP++; (byte)

You might also like