LC-3指令集 指令/状态码介绍

LC-3指令集是相当基础的计算机指令集,使用3位标识寄存器,因此有8个寄存器,而一条指令是16位,下面介绍一下常用指令

指令

ADD : 加,注意是立即数模式还是源目模式

AND : 按位与,注意是立即数模式还是源目模式

LD : 直接寻址,读内存(PC+偏移)存储的值到目的寄存器DR,即 DR = M[pc + offset]

ST :直接寻址,将寄存器SR的值写入到目的地址对应的内存,即 M[pc + offset] = SR

LDI : 间接寻址(指针),读内存(PC+偏移)存储的值作为地址(指针)p,再读取p对应的内存值到目的寄存器DR,即DR = *M[pc + offset]

STI :间接寻址(指针),将寄存器SR的值写入指针p(pc+偏移地址存放的值)对应的内存中,即 *M[pc + offset] = SR

LDR :基址+偏移寻址,将【base寄存器的值+offset】地址存储的数据读取到目的寄存器DR,即DR = M[R[base] + offset],其中 R[base] 表示取base寄存器存放的值

STR :基址+偏移寻址,将源寄存器SR的值写入到内存的【base寄存器的值+offset】地址里,即 M[R[base] + offset] = SR

LEA :计算有效地址,将pc+offset的值存放到寄存器DR,不访问内存,只是做加法

LC-3指令集 指令/状态码介绍

图片来自《计算机系统概论Yale.N.Patt&Sanjay.J.Patel.扫描版》

条件码与BR语句

条件码是跳转语句BR所依赖的条件,有三个标志位表示状态,这三个状态分别是 N,Z,P,代表负数,正数,零,而这个状态的来源是最近一次写入的寄存器

BR语句

LC-3指令集 指令/状态码介绍

BR语句决定了下一次是否跳转,根据条件码来决定,而跳转的目标地址是 pc+offset,具体是什么情况跳转,取决于 BR[11:9] 里面的nzp的值

注意事项

  • 状态来源于最近一次被写入的寄存器
  • 跳转的目标地址是 pc+offset
  • 一共有7条语句可以修改条件码,他们分别是:ADD,AND,LD,LDI,LDR,LEA,NOT

绝对跳转

jump 是无论 任何时候都会跳转的