linux开发---2.汇编语言arm-linux下的打印

时间:2022-06-26 14:34:37
下面是一些经常用到的打印方法.
一. 调用write写到终端
下面是一个helloworld程序,程序运行输出hello.
hello.S
  1. .text 
  2. .global main
  3. main:
  4.     push {r0,r1,r2,lr}   @压栈,保存寄存器
  5.     mov r0, #1           @输出到终端,fd=1
  6.     adr r1, hello        @字符串地址
  7.     mov r2, #7           @字符串长度
  8.     bl write             @调用write
  9.     pop {r0,r1,r2,pc}    @压栈,恢复寄存器
  10. hello: 
  11.     .asciz "hello \n"
Makefile
  1. all:hello
  2. hello:hello.S
  3.     arm-none-linux-gnueabi-gcc -o $@ $< 
  4. clean:
  5.     rm -rf hello hello.o
注意: 
    这个Makefile用的是gcc,没有用as与ld分开来写,这样比较简洁,测试程序嘛.


执行结果如下:
  1. root@OK6410:/driver/asm# ./hello
  2. hello
二. 调用printf写到终端
与write很类似,
  1. .text 
  2. .global main
  3. main:
  4.     push {r0,r1,r2,lr} @push
  5.     mov r1, #3
  6.     adr r0, hello
  7.     bl printf
  8.     pop {r0,r1,r2,pc}
  9. hello: 
  10.     .asciz "hello %d \n"