Assembler #4 Математические операции и стек

Assembler #4 Математические операции и стек

https://t.me/Torchik_Ru

Доброго времени суток, господа. Сегодня мы продолжаем изучение ASM и рассмотрим такую тему, как математические операции и высним что такое стек.

Математические операции

Математические операции используются для математических манипуляций с регистрами. Форма записи математической операции обычно такая:

операция регистр, значение/регистр

Первый регистр - объект над которым происходит операция.

Например:

add rax, 5
cmp rax, rbx

Список возможных математических операций:

ASCII

ASCII - это метод через который новые современные компьютеры отображают строки текста. Компьютеры способны хранить только числа, поэтому и символы хранятся в виде чисел. ASCII позволяет привязать к каждому символу своё число. В итоге мы получаем целую таблицу соответсвий значений определённым символам.

Отображение цифр

Вот код подпрограммы, которая позволяет нам вывести одну цифру в пределах от 0 до 9:

section .data 
    digit db 0,10

_printRAXDigit:      
    add rax, 48      
    mov [digit], al      
    mov rax, 1      
    mov rdi, 1      
    mov rsi, digit      
    mov rdx, 2      
    syscall      
    ret

Значение в регистре rax увеличено на 48. Если вы посмотрите в таблицу, то увидите, что 48 - значение, что равно цифре 0, с остальными цифрами всё, соответсвенно, также.

Чтобы вывести цифру 7 нам надо:

 mov rax, 7
 call _printRAXDigit

Тестирование математических операций

Бегло пройдемся по маматическим операциям:

Из этой таблицы должен быть понятен принцип работы. Так-что стоять на одном месте не будем.

Стек

Стек, как и регистры, позволяет хранить данные. Он просто даёт нам для этого несколько иной путь.

Представьте стопку бумаги. Вы можете брать с неё листы только сверху-вниз и никак иначе. Чтобы получить листик из центра Вам необходимо забрать все листики над ним. Точно так-же работает и стек.

Терминология

Если вы хотите положить данные на стек, то вы производите операцию push, если же вы хотите эту информацию забрать то вы должны произвести операцию pop.

Операции над стеком

Чтобы не мучать вас пустыми объяснениями у меня для вас есть ещё одна таблица:

Вот иллюстрация того, как устроена команда push:

А вот команда pop:

Пример кода

В качестве домашнего задания попробуйте написать такой простой код:


Report Page