汇编打印三角形
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
總結
- 上一篇: Android 透明状态栏
- 下一篇: *通配符与微信小程序的WXSS