4章 機械語(後半)
本ページは、4章 機械語(前半)の続きである。
★機械語
・乗算プログラム
//R1:カウンタ機能
@R2 //A命令:R2まで移動
M=0 //C命令:R2に0を代入
(LOOP)
@R1 //A命令:R1まで移動
D=M //C命令:DにR1を代入
@END //A命令:ENDまで移動
D;JLE //もしR1が0以下なら、(END)にjamp
@R0 //A命令:R0メモリ位置まで移動
D=M //C命令:DにR2を代入
@R2 //A命令:R2まで移動
M=D+M //C命令:R2=R0+R2
@R1 //A命令:R1まで移動
M=M-1 //C命令:M=R1-1
@LOOP //A命令:LOOPまで移動
0;JMP //C命令:無条件に(LOOP)へ戻る
(END)
@END //A命令:ENDまで移動
0;JMP //C命令:無条件に(END)に戻る
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
例)RAMイメージ
------
|R0 |
------
|R1 | ←カウンタ機能
------
|R2 |
------
|R3 |
------
|END |
------
|LOOP |
------
・入出力操作プログラム
(INITIALIZATION)
//SCREEN=0x4000
@0x4000
D=A
@ADDR
M=D
//KBD=0x6000
@0x6000
D=M
@IF
D;JGT
@ELSE
0;JMP
(IF)
//-1なら黒
@COLOR
M=-1
@IFEND
0;JMP
(ELSE)
//0なら白
@COLOR
M=0
(IFEND)
//塗りつぶし
(LOOP)
@COLOR
D=M //D←COLOR
@ADDR
A=M //A←ADDR
M=D //M←COLOR
@ADDR
M=M+1 //M=COLOR+1
@8192
D=A
@0x4000
D=D+M //D=8192+0x4000
@ADDR
D=D-A //D=8192+0x4000-ADDR
@LOOP //A命令:LOOPまで移動
D;JGT //C命令:Dが0より大きい場合(LOOP)にJamp
@INITIALIZATION
0;JMP //C命令:無条件で(INITIALIZATION)に戻る
----------------------------------------------------------------------
例)RAMイメージ
---------------
|R0 |
---------------
|R1 |
---------------
|R2 |
---------------
|R3 |
---------------
|R4 |
---------------
|8192 |
---------------
|IFEND |
---------------
|INITIALIZATION|
---------------
|IF |
---------------
|ADDR |
---------------
|COLOR |
---------------
|ELSE |
---------------
|0x4000 |
---------------
|0x6000 |
---------------
|END |
---------------
|LOOP |
---------------
Back
1章 ブール理論
1章 ブール理論(番外編)
2章 ブール算術
3章 順序回路
4章 機械語(前半)
・Twitter
https://twitter.com/tango3564
・Instagram
https://www.instagram.com/tango3690/