← Каталог
Команды и подпрограммы — Пример — подпрограмма сложения двух чисел
Фрагмент из «Команды и подпрограммы»: Пример — подпрограмма сложения двух чисел.
section .text
global _start
; Подпрограмма add_numbers
; Принимает: RDI = первое число, RSI = второе число
; Возвращает: RAX = сумма
add_numbers:
push rbp ; Сохраняем базовый указатель
mov rbp, rsp ; Устанавливаем новый фрейм стека
mov rax, rdi ; Загружаем первое число в RAX
add rax, rsi ; Прибавляем второе число
pop rbp ; Восстанавливаем базовый указатель
ret ; Возврат к вызывающему коду
_start:
mov rdi, 10 ; Первый аргумент
mov rsi, 25 ; Второй аргумент
call add_numbers ; Вызов подпрограммы
; Теперь RAX содержит 35
; Дальнейшие действия — например, вывод или выход section .text
global _start
; Подпрограмма add_numbers
; Принимает: RDI = первое число, RSI = второе число
; Возвращает: RAX = сумма
add_numbers:
push rbp ; Сохраняем базовый указатель
mov rbp, rsp ; Устанавливаем новый фрейм стека
mov rax, rdi ; Загружаем первое число в RAX
add rax, rsi ; Прибавляем второе число
pop rbp ; Восстанавливаем базовый указатель
ret ; Возврат к вызывающему коду
_start:
mov rdi, 10 ; Первый аргумент
mov rsi, 25 ; Второй аргумент
call add_numbers ; Вызов подпрограммы
; Теперь RAX содержит 35
; Дальнейшие действия — например, вывод или выход