ホーム | Web版シミュレータ | 仕様 | ダウンロード | 前のページ | 次のページ |
15 | 0 | 15 | 0 | ←ビット番号 |
第1語 | 第2語 | 命令語長 | 命令語とアセンブラとの対応 | |||||
---|---|---|---|---|---|---|---|---|
OP | r/r1 | x/r2 | adr | 機械語命令 | 意味 | |||
主OP | 副OP | |||||||
0 | 0 | − | − | − | 1 | NOP | no operation | |
1 | 0 1 2 4 |
− |
2 2 2 1 |
LD ST LAD LD |
r,adr,x r,adr,x r,adr,x r1,r2 |
load store load address load |
||
2 | 0 1 2 3 4 5 6 7 |
− − − − |
2 2 2 2 1 1 1 1 |
ADDA SUBA ADDL SUBL ADDA SUBA ADDL SUBL |
r,adr,x r,adr,x r,adr,x r,adr,x r1,r2 r1,r2 r1,r2 r1,r2 |
add arithmetic subtract arithmetic add logical subtract logical add arithmetic subtract arithmetic add logical subtract logical |
||
3 | 0 1 2 4 5 6 |
− − − |
2 2 2 1 1 1 |
AND OR XOR AND OR XOR |
r,adr,x r,adr,x r,adr,x r1,r2 r1,r2 r1,r2 |
and or exclusive or and or exclusive or |
||
4 | 0 1 4 5 |
− − |
2 2 1 1 |
CPA CPL CPA CPL |
r,adr,x r,adr,x r1,r2 r1,r2 |
compare arithmetic compare logical compare arithmetic compare logical |
||
5 | 0 1 2 3 |
2 2 2 2 |
SLA SRA SLL SRL |
r,adr,x r,adr,x r,adr,x r,adr,x |
shift left arithmetic shift right arithmetic shift left logical shift right logical |
|||
6 | 1 2 3 4 5 6 |
− − − − − − |
2 2 2 2 2 2 |
JMI JNZ JZE JUMP JPL JOV |
adr,x adr,x adr,x adr,x adr,x adr,x |
jump on minus jump on non zero jump on zero unconditional jump jump on plus jump on overflow |
||
7 | 0 1 |
− |
− |
− |
2 1 |
PUSH POP |
adr,x r |
push pop |
8 | 0 1 |
− − |
− |
− |
2 1 |
CALL RET |
adr,x |
call subroutine return from subroutine |
9 ・ ・ E |
その他の命令 | |||||||
F | 0 | − | 2 | SVC | adr,x | supervisor call |
[例]IN命令
LABEL IN IBUF,LEN ↓ マクロ生成 ↓ LABEL PUSH 0,GR1 PUSH 0,GR2 LAD GR1,IBUF LAD GR2,LEN SVC 1 POP GR2 POP GR1
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
符号 | ↓ | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | 0 |
↓ | |||||||||||||||||
OF |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
符号 | → | → | → | → | → | → | → | → | → | → | → | → | → | → | → | → | OF |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
↓ | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | ← | 0 |
↓ | |||||||||||||||||
OF |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
0 | → | → | → | → | → | → | → | → | → | → | → | → | → | → | → | → | → | → | OF |
COUNT1 START ; ; 入力 GR1:検索する語 ; 処理 GR1中の'1'のビットの個数を求める ; 出力 GR0:GR1中の'1'のビットの個数 COUNT1 PUSH 0, GR1 ;レジスタの値をスタックに退避 PUSH 0, GR2 ; SUBA GR2, GR2 ; Count = 0 AND GR1, GR1 ; 全部のビットが'0'? JZE RETURN ; 全部のビットが'0'なら終了 MORE LAD GR2, 1, GR2 ; Count = Count +1 LAD GR0, -1, GR1 ; 最下位の'1'のビット1個を AND GR1, GR0 ; '0'に変える JNZ MORE ; '1'のビットが残っていれば繰り返し RETURN LD GR0, GR2 ; GR0 = Count POP GR2 ;レジスタの値を復帰させる POP GR1 ; RET ; 呼び出しプログラムへ戻る END ;
ホーム | Web版シミュレータ | 仕様 | ダウンロード | 前のページ | 次のページ |