Я пытаюсь напечатать
Enter Number:5
1
12
123
1234
12345
asm:
global _start:
extern print_string
extern print_uint64
extern get_uint64
section .data
i db 1
j db 1
num db 0
LF db 10,0
msg db "Enter Number:",0
section .text
_start:
mov rdi,msg
call print_string
mov rdi,num
call get_uint64
mov [i],byte 1
outloop:
xor rax,rax
mov al ,[i]
cmp al ,[num]
jg endoutloop
mov [j],byte 1
inloop:
xor rax,rax
mov al,[j]
cmp al,[i]
jg endinloop
movzx rdi,byte [j]
call print_uint64
inc byte [j]
jmp inloop
endinloop:
xor rdi,rdi
mov rdi,LF
call print_string
inc byte [i]
jmp outloop
endoutloop:
mov rax,60
mov rdi,0
syscall
print_string:
global print_string
section .text
print_string:
mov rax , 1
mov rsi , rdi
xor rdx , rdx
pswhile:
cmp [rdi] , byte 0
je endpswhile
inc rdx
inc rdi
jmp pswhile
endpswhile:
mov rdi , 1
syscall
mov rax , rdx
ret
эта функция в объектном файле с именем basic_io, а basic_io содержит другие функции также
выход:
srilakshmikanthanp@HP-245-G5-SRI-LAKSHMI-KANTHAN-PC:/mnt/d/Source Code/Learn/Assembly/Temp$ nasm -f elf64 a.asm
srilakshmikanthanp@HP-245-G5-SRI-LAKSHMI-KANTHAN-PC:/mnt/d/Source Code/Learn/Assembly/Temp$ ld -g -o a a.o basic_io.o
srilakshmikanthanp@HP-245-G5-SRI-LAKSHMI-KANTHAN-PC:/mnt/d/Source Code/Learn/Assembly/Temp$ ./a
Enter Number:5
112123123412345srilakshmikanthanp@HP-245-G5-SRI-LAKSHMI-KANTHAN-PC:/mnt/d/Source Code/Learn/Assembly/Temp$