彙編檔案為「.s」檔案
因為c程式執行需要棧,設定好棧了之後就可以呼叫c程式了
bl delay
//呼叫delay
暫存器移位:mov r0,r1,lsl #3
//r1內容左移3位送r0
暫存器間接定址:ldr r1,[r2]
//r2做位址取數送r1
基址變址定址 :ldr r1,[r2,#4]
//r2+4作位址取數送r1
多暫存器定址 :ldmia r1!,[r2-r7,r12]
r1作位址取數送r1,r2...r7和r12
彙編運算指令
bic r0, r0, #(1<<12)
// bit12 置0 關icache #bic指令用於清除運算元為1的位數#
bic指令的格式為:
bic 目的暫存器,運算元1,運算元2
bic指令用於清除運算元1的某些位,並把結果放置到目的暫存器中。運算元1應是乙個暫存器,
運算元2可以是乙個暫存器、被移位的暫存器、或乙個立即數。運算元2為32位的掩碼,如果在
掩碼中置了某一位1,則清除這一位。未設定的掩碼位保持不變。
orr r0, r0, #(1<<12)
// bit12 置1 開icache
orr指令的格式為:
orr 目的暫存器,運算元1,運算元2
orr指令用於在兩個運算元上進行邏輯或運算,並把結果放置到目的暫存器中。運算元1應該是一
個暫存器,運算元2可以是乙個暫存器,被移位的暫存器,或乙個立即數。該指令常用於設定操
作數1的某些位。
指令示例:
orr r0,r0,#3 ; 該指令設定r0的0、1位,其餘位保持不變。
orr r0,r0,#0xd3
0xd3=1101 0111
將r0與0xd3作算數或運算,然後將結果返還給r0,即把r0的bit[7:6]和bit[4]和bit[2:0]置為1。
mrc和mcr:具體看
編譯錯誤及解決方法:
#error: junk at end of line, first unrecognized character is `/'解決方法,將「//」注釋改為"/* */"
#start.o: in function `_start':
(.text+0x14): undefined reference to `wtcon';解決方法:講.s檔案改為.s檔案(makefile裡的也是)
彙編學習筆記
1 cpu的指令集 cpu內整合了不同功能的電路模組 如 加 減法器,比較器 正常工作所對應的不同高低電平 數電知識 組合語言是人對機器指令的語言表述。2 cpu對硬體的控制實際是訪問其記憶體 如顯示卡上整合有ram 視訊記憶體 和rom 裝有唯讀bios 源 被編譯成機器 後被載入記憶體。3 程式...
彙編學習筆記
mov al,byte ptr x 記憶體向通用暫存器傳送資料 shl al,1 al中的資料進行邏輯左移一位,針對無符號數的 2運算 dec al 對al暫存器中的值進行自減一之後再把結果放到al暫存器中,其中涉及對al暫存器進行資料讀,並將資料傳送到運算暫存器中,並將運算器結果通過線路傳送到al...
彙編 學習筆記
指令格式 指令解釋 mov r m8,r8 r通用暫存器 mov r m16,r16 m代表記憶體 mov r m32,r32 imm代表立即數 mov r8,r m8 r8代表8位通用暫存器 mov r16,r m16 m8代表8位記憶體 mov r32,r m32 imm8代表8位立即數 mov...