从与非门到俄罗斯方块nand2tetris的project04

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值