MUL.asm
@R2
M=0 //将R2初始化为0,因为我们用R2来储存总和
(LOOP)
//判断R0是否已经到0/
@R0
D=M
@END
D;JEQ //零跳转判断
//
@R1
D=M //D=R1
@R2
M=D+M //M=R2, D=R2+R1
@R0
M=M-1
@LOOP
0;JMP // 无条件跳转
(END) //空循环阻塞程序
@END
0;JMP
FILL.asm
@address1
M=-1 //-1用二进制表示为1111111111111111,意味着将寄存器所有位置1
//进而在后面的程序可以用于将一个字的像素点亮
@address0
M=0 //用于熄灭像素
(LOOP)
@24576 //键盘输入的地址
D=M //获得键盘输入的ask码
@POSITIVE
D;JNE //我们已知hack的ask码均≠0,所以只要
//键盘有输入值,则一定是不等于零的数。在此情况下跳转到POSITIVE位置处
@IFZERO
D;JEQ
(POSITIVE)
@address1
D=M //用D来暂存address中的-1
@16384 //屏幕的基地址
M=D //点亮一个字的像素
@LOOP
0;JMP
(IFZERO)
@address0
D=M
@16384 //屏幕的基地址
M=D
@LOOP
0;JMP