64位AT&T汇编语言使用bss段.skip指令储存字符,并使用系统调用输出字符

.global main
.section .data
.section .bss
    # 需要输出的字符数组,还没有初始化
    mystring: .skip 4
.section .text
main:
     # 将mystring这个字符串的地址存入到rbx寄存器中
     leaq mystring,%rbx
     # 将a放入到mystring第一个字节里边
     movb $'a',(%rbx)
     # 将地址往后边移动一个字节
     addq $1,%rbx
      # 将b放入到mystring第二个字节里边
     movb $'b',(%rbx)
     # 将地址往后边移动一个字节
     addq $1,%rbx
     # 将换行符放入到mystring第三个字节里边
     movb $'\n',(%rbx)
      # 将地址往后边移动一个字节
     addq $1,%rbx
     # 将NULL放入到mystring第四个字节里边
     movb $0,(%rbx)

    # 1是CPU输出的系统调用号
     movq $1,%rax
     # rdi = 1,表示输出到屏幕上
     movq $1,%rdi
     # rsi里边存放输出的字符串第一个字节的位置
     movq $mystring,%rsi
     # rdx = 3,表明只输出3个字节
     movq $3,%rdx
     syscall

     movq $60,%rax
     movq $0,%rdi
     syscall

sudo gcc -no-pie skipTest.s -o skipTest进行编译,sudo ./skipTest进行运行。
在这里插入图片描述

你可能感兴趣的:(汇编语言,汇编)