arm彙編輸出

2021-07-04 12:27:45 字數 1010 閱讀 8658

.text

.extern uart_init

@終端的輸出

.extern printf

.global _start

_start:

mov r7,lr

@先把lr原始位址給r7放著,後面發生bl跳轉後,要退回到bootcmd

bl uart_init

@mov r1,#0x1110

@這個定義的數值有規範,這裡採用ldr。而且要放在bl uart_init

ldr r1,=0x1110

bic r1,r1,#0x100

ldr r0,=fmt

bl printf

mov lr,r7

@就把r7存的位址給回lr,最後跳轉出去。

bx lr

fmt:

.asciz ">>>>>>>> welcome to asm r1=0x%x<<<<<<<\n\r"

@這裡輸出字串是r0,然後後面有多少個%x的就按順序輸出r1,r2那樣

.end

makefile

all:start.bin clean

start.bin:start.o uart.o libc.a

arm-linux-ld -ttext=0x40000000 start.o uart.o libc.a -o start.elf

arm-linux-objcopy -o binary -s start.elf start.bin

arm-linux-objdump -d start.elf > debug

start.o:start.s

arm-linux-gcc -c -nostdlib -nostdinc start.s -o start.o

clean:

rm -rf start.o start.elf

還需要libc.a,types.h,uart.o,stdio.h檔案

ARM彙編和內嵌彙編

彙編指令 跳轉指令 b bl blxbx 資料處理指令 mov mvnadd adcsub rsbrsc andor eorbic cmncmp tstteq 狀態暫存器指令 mrs msrldr strldm stmmcr arm和協處理器之間資料交換 mrccond 可選的條件 rd 存放返回狀...

arm彙編相關

cmp rn rm operand tst logical and ldr用法 摘自arm嵌入式系統開發一書 資料 基址暫存器 示例 mem base offset 基址暫存器加上偏移 ldr r0,r1,offset mem base offset 不變 ldr r0,r1,offset mem ...

arm 彙編學習

一 暫存器和定址 arm有16個暫存器,r0 r15 pc r15 lr r14 sp r13 ip r12 push sp減少,pop sp增加 1.定址方式 從操作位址尋找運算元的方式 2.arm的定址方式 a 暫存器定址,運算元在暫存器中 b 立即定址,運算元就在指令中 subs r0,r0,...