汇编打印三角形

GLOBAL start

SECTION .text

start:

     mov rdx, output; 把字符串基地址存入rdx

     mov r8, 1; 初始化第一行的长度为1

     mov r9, 0;用于存储当前这一行已经打印了几个*了

line:

     mov byte [rdx], '*'; 写一个*

     inc rdx ; 往后偏移一个

     inc r9 ;  r9 增加一个

     cmp r9, r8; 判断一下*个数是不是小于行号

     jne line; 否则继续写

lineDone:

     mov byte [rdx], 10; 写一个换行符

     inc rdx; rdx向后偏移一个

     inc r8; r8行号增加一个

     mov r9, 0 ;初始化当前行写的*个数为0

     cmp r8, maxlines ;检查是不是达到了最大行数

     jng line; 如果是就跳出,否则跳到line位置

done:

     mov rax, 0x02000004; rax里面存放写函数地址

     mov rdi, 1; file handle 1 is stdout rdi存放参数,1表示stdout

     mov rsi, output; rsi 存放字符串参数

     mov rdx, dataSize;   rdx传递字符串长度

     syscall ;调用系统调用 int 60h

     mov rax, 0x2000001;  exit

      system ;call for exit

     xor rdi, rdi

     syscall

SECTION .bss 定义bss段

maxlines equ 8 

dataSize equ 44

output: resb dataSize

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值