跳转至

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