見出し画像

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          |
---------------


Next
5章 コンピュータアーキテクチャ  (前半)

Back
1章 ブール理論
1章 ブール理論(番外編)
2章 ブール算術
3章 順序回路

4章 機械語(前半)

・Twitter
https://twitter.com/tango3564

・Instagram
https://www.instagram.com/tango3690/