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,不訪問內存,只是做加法
圖片來自《計算機系統概論Yale.N.Patt&Sanjay.J.Patel.掃描版》
條件碼與BR語句
條件碼是跳轉語句BR所依賴的條件,有三個標誌位表示狀態,這三個狀態分別是 N,Z,P,代表負數,正數,零,而這個狀態的來源是最近一次寫入的寄存器
BR語句
BR語句決定了下一次是否跳轉,根據條件碼來決定,而跳轉的目標地址是 pc+offset,具體是什麼情況跳轉,取決於 BR[11:9]
裏面的nzp
的值
注意事項
- 狀態來源於最近一次被寫入的寄存器
- 跳轉的目標地址是 pc+offset
- 一共有7條語句可以修改條件碼,他們分別是:ADD,AND,LD,LDI,LDR,LEA,NOT
絕對跳轉
jump 是無論 任何時候都會跳轉的