彙編學習筆記

2021-07-23 17:24:35 字數 1244 閱讀 3242

彙編檔案為「.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...