一個微控制器程式編譯後分為兩部分,一部分是程式中定義的全域性變數、區域性變數等,另一部分是程式的彙編指令流,這些指令流就是操作計算這些全域性變數的。
程式執行時,從指令計數器的位置取指令執行。
首先執行的一般是load指令(load a -> R0),load指令的功能就是把資料區的變數讀進來寫到暫存器中。
當需要計算的變數都load 到暫存器組中時,接下來執行的一般是算術和邏輯指令,(R0 + 1 -> R1),這種指令的輸入運算元都是暫存器或常數,輸出是暫存器。
執行完算術指令,我們就有了算術結果了,只是儲存在R1暫存器上。這個時候需要store指令把資料從R1中搬運到資料儲存區的變數位置。
這就是一個簡單的累加程式的過程。
資料從資料儲存器-->暫存器-->算術運算alu->暫存器-> 資料儲存器。 所有的指令都在程式儲存器。
一般資料儲存區和程式儲存區都是統一編址,劃分在不同的區域
中斷暫存器就是用於存貯中斷狀態的 包含是否啟用中斷 或者是 是否發生中斷
#include
一個微控制器程式編譯後分為兩部分,一部分是程式中定義的全域性變數、區域性變數等,另一部分是程式的彙編指令流,這些指令流就是操作計算這些全域性變數的。
程式執行時,從指令計數器的位置取指令執行。
首先執行的一般是load指令(load a -> R0),load指令的功能就是把資料區的變數讀進來寫到暫存器中。
當需要計算的變數都load 到暫存器組中時,接下來執行的一般是算術和邏輯指令,(R0 + 1 -> R1),這種指令的輸入運算元都是暫存器或常數,輸出是暫存器。
執行完算術指令,我們就有了算術結果了,只是儲存在R1暫存器上。這個時候需要store指令把資料從R1中搬運到資料儲存區的變數位置。
這就是一個簡單的累加程式的過程。
資料從資料儲存器-->暫存器-->算術運算alu->暫存器-> 資料儲存器。 所有的指令都在程式儲存器。
一般資料儲存區和程式儲存區都是統一編址,劃分在不同的區域