?? casl+?
字號:
CASL 匯 編 語 言 文 本
一、處理機COMET說明
1. COMET是一臺字長為16位的定點計算機。主存儲器的容量是65536字,按編
號0000~FFFF(十六進制)編址。
2. 一個字的16位二進位采用自左至右的次序編號,即
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
3. 一個字的16可以是:
. 不帶符號的二進制非負整數。此時一個字能表示的數的范圍是:
0 ≤ X ≤ 65535
. 用補碼表示的帶符號的二進制整數,此時一個字能表示的數的范圍是:
-32768 ≤ X ≤ 32767
. 地址常數。此時一個字能表示的地址寫成十六進制時是:
0000 ~ FFFF
. 字符數據。此時一個字的高8位皆應為零,低8位為字符的ASCII編碼,即:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
┌─┬─┬─┬─┬─┬─┬─┬─┬───────────────┐
│0 │0 │0 │0 │0 │0 │0 │0 │ 字 符 的 ASCII 碼 │
└─┴─┴─┴─┴─┴─┴─┴─┴───────────────┘
4. COMET具有5個通用寄存器GR(16位),一個指令計數器PC(16位)和一個標志
寄存器FR(2位)。它們的作用是:
. GR (通用寄存器)。5個通用寄存器的編號為0、1、2、3、4,分別記為GR0、
GR1、GR2、GR3、GR4。這些通用寄存器用于算術、邏輯、比較、移位等運算,其中
GR1、GR2、GR3、GR4通用寄存器還兼作變址寄存器。另外,GR4還兼作棧指針 (SP)
用,棧指針是存放棧頂地址用的寄存器。
. PC (指令計數器) 。在執行指令的過程中,PC中存放著正在執行的指令的第
一個地址(一條指令占二個字)。當指令執行結束時,置入下一條將要被執行的指令
的第一個字的地址. 也就是說,在指令執行結束時,一般是把PC的內容加2,只有在
執行轉移指令且轉移條件成立時,才將轉移地置入PC中。
. FR (標志寄存器)。在ADD、SUB、AND、OR、EOR、CPA、CPL、SLA、SRA、SLL、
SRL、LEA等指令執行結束時,根據執行結果,將FR置成00、01、10。它不會因其它
指令的執行而改變。
5. COMET的控制方式為順序控制。 指令由32位二進位構成。即雙字長,其構
成沒有定義。
6. 指令的符號表示:
GR 泛指通用寄存器。 可用數字0、1、2、3、4來指定,也可以用GR0、GR1、
GR2、GR3、GR4來指定。
XR 泛指變址寄存器。可用數字1、2、3、4來指定,也可以用GR1、GR2、GR3、
GR4來指定。
SP 棧指針(第4號通用寄存器)。
ADR 標號(表示與標號對應的地址),為10進制數(-32768≤ADR≤65535;ADR作
為地址,具有0~65535的值,而32768~65535的值也可以用負的10進制常數表示)。
(X) 表示地址中的內容,如果X是通用寄存器時表示通用寄存器中的內容。
E 表示有效地址。形成有效地址E的規則是:
E = ADR [+(XR)] (mod 65536)
[ ] 表示被[]包圍的部分可以省略(以下同),XR省略時,表示不使用變址寄存
器。
7. COMET有23種指令。 指令的名稱、書寫格式及其功能見附表1。指令的書寫
格式用匯編語句的形式給出。
附表1
━━━━━┯━━━━━━━━━━┯━━━━━━━━━━━━━━━━━
│ 書 寫 格 式 │
名 稱 ├───┬──────┤ 功 能
│指令碼│ 操 作 數 │
━━━━━┿━━━┿━━━━━━┿━━━━━━━━━━━━━━━━━
取數 │LD │GR,ADR[,XR] │(E) => GR
─────┼───┼──────┼─────────────────
存數 │ST │GR,ADR[,XR] │(GR) => E
─────┼───┼──────┼─────────────────
取地址* │LEA │GR,ADR[,XR] │E => GR
─────┼───┼──────┼─────────────────
加法* │ADD │GR,ADR[,XR] │(GR)+(E) => GR
─────┼───┼──────┼─────────────────
減法* │SUB │GR,ADR[,XR] │(GR)-(E) => GR
─────┼───┼──────┼─────────────────
邏輯乘* │AND │GR,ADR[,XR] │(GR)∧(E) => GR
─────┼───┼──────┼─────────────────
邏輯加* │OR │GR,ADR[,XR] │(GR)∨(E) => GR
─────┼───┼──────┼─────────────────
按位加* │EOR │GR,ADR[,XR] │(GR)異或(E) => GR
─────┼───┼──────┼─────────────────
│ │ │視(GR)和(E)為用補碼表示的
│ │ │帶符號的二進制整數。
算術比較 │CPA │GR,ADR[,XR] │若 (GR) > (E) 則 00 => FR
│ │ │若 (GR) = (E) 則 01 => FR
│ │ │若 (GR) < (E) 則 10 => FR
─────┼───┼──────┼─────────────────
│ │ │視(GR)和(E)為無符號的二進制
│ │ │非負整數。
邏輯比較 │CPL │GR,ADR[,XR] │若 (GR) > (E) 則 00 => FR
│ │ │若 (GR) = (E) 則 01 => FR
│ │ │若 (GR) < (E) 則 10 => FR
─────┼───┼──────┼─────────────────
算術左移*│SLA │GR,ADR[,XR] │把(GR)向左或向右移動E位。在算術移
─────┼───┼──────┤位時,GR中的第0位保持不變。在右移
算術右移*│SRA │GR,ADR[,XR] │時空出的位被置成與第0位相同的 1或
─────┼───┼──────┤0;在左移時空出的位被置成0 。在邏
邏輯左移*│SLL │GR,ADR[,XR] │輯移位時,GR中的16位一起移動 ,而
─────┼───┼──────┤空出的位被置成0。
邏輯右移*│SRL │GR,ADR[,XR] │
─────┼───┼──────┼─────────────────
無條件轉 │JMP │ADR[,XR] │無條件向有效地址E轉移,即E=>PC
─────┼───┼──────┼─────────────────
大于等于轉│JPZ │ADR[,XR] │根據FR的值向有效地址E轉移,
─────┼───┼──────┤即E=>PC;不轉移時執行下一條
小于轉 │JMI │ADR[,XR] │指令,即(PC)+2=>PC(注)。
─────┼───┼──────┤
不等轉 │JNZ │ADR[,XR] │
─────┼───┼──────┤
等于轉 │JZE │ADR[,XR] │
─────┼───┼──────┼─────────────────
進棧 │PUSH │ADR[,XR] │(SP)-1=>SP, E=>(SP)
─────┼───┼──────┼─────────────────
退棧 │POP │GR │((SP))=>GR, (SP)+1=>SP
─────┼───┼──────┼─────────────────
│ │ │先形成有效地址E,再依次執行
調用 │CALL │ADR[,XR] │(SP)-1=>SP
│ │ │(PC)+2=>(SP)
│ │ │E=>PC
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -