Hack汇编¶
部分参考了:https://blog.csdn.net/li1358159/article/details/108153248
A寄存器->内存地址M(M代表了A内存中的值)
D:数据寄存器
A:地址寄存器/数据寄存器
M=RAM[A]
A操作¶
// D=10
@10
D=A
// D++
D=D+1
// D=RAM[17]
@17
D=M
// RAM[17]=0
@17
M=0
//RAM[17]=10
@10
D=A
@17
M=D
//RAM[5]=RAM[3]
@3
D=M
@5
M=D
----------------------
总结:
1.A和M是一个映射关系。 M=RAM[A]
2.如果要进行常量赋值,需要用A来操作,不能直接,要间接赋值
3.@A 既指的是数值,也是一个地址
4.D就是单纯来放数值的
内置的symbols:
虚拟寄存器R0-R15 (这个好像是为了区分,A操作的是地址还是变量
SCREEN 16384
KBD 24576
预定义指针(SP、LCL、ARG、THIS、THAT 分别表示0-4地址)
接下来学
分支(IF
变量
迭代(循环
指针(@。。
IO