Assembly x64 Intro - call extern printf

1.  print1.S


; Declare external function
        extern  printf          ; the C function, to be called

        SECTION .data           ; Data section, initialized variables

        a:      dq      5       ; long int a=5;
fmt:    db "a=%ld, rax=%ld", 10, 0      ; The printf format, "\n",'0'


        SECTION .text           ; Code section.

        global main             ; the standard gcc entry point
main:                           ; the program label for the entry point
        push    rbp             ; set up stack frame

        mov     rax,[a]         ; put "a" from store into register
        add     rax,2           ; a+2  add constant 2
        mov     rdi,fmt         ; format for printf

        mov     rsi,[a]         ; first parameter for printf
        mov     rdx,rax         ; second parameter for printf
        mov     rax,0           ; no xmm registers
        call    printf          ; Call C function

        pop     rbp             ; restore stack

        mov     rax,0           ; normal, no error, return value
        ret                     ; return

2.  compile

nasm -f elf64 print1.S

gcc -o print1.x print1.o


print1.x:
        nasm -f elf64  print1.S
        gcc print1.o -o print1.x


3. run

./print1.x



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值