我刚刚开始学习汇编,我想知道如何改变保留字节的数量,如果可能的话。
我创建了以下代码,它将根据底部的max
变量创建一个长度递减的直角三角形。然而,为了确保不保留多余的字节,我想计算它(我相信在calculateBytes
中是有效的),然后保留这些字节。
如果这是不可能的,请解释。如果没有,是否有其他方法可以帮助实现这一目标?
bits 64
global _start
section .text
_start:
mov rdx, output
mov r8, max
mov r9, r8
mov r10, r8
mov r11, r8
calculateBytes:
add r11, r10
dec r10
jnz calculateBytes
line:
mov byte [rdx], '*'
inc rdx
dec r9
jnz line
lineDone:
mov byte [rdx], 10
inc rdx
dec r8
mov r9, r8
jnz line
done:
mov rax, 1 ; initiate writing
mov rdi, 1 ; to stdout
mov rsi, output; use output
mov rdx, size ; with this size
syscall
mov rax, 60
xor rdi, rdi
syscall
section .bss
size equ 1000
output resb size
max equ 30
1条答案
按热度按时间j2qf4p5b1#
这产生了
max * (max + 1)
,这太多了。你想要的是(第一个数字是星号,第二个数字是换行符):
在装配中: