Синтаксис | INC операнд |
Машинный код | FE /0 — INC r/m8 FF /0 — INC r/m16 FF /0 — INC r/m32 40+rw — INC r16 40+rd — INC r32 |
Описание | Инкремент. |
Действие | Увеличение операнда на 1. Команда не воздействует на флаг CF. |
Флаги | OF=r SF=r ZF=r AF=r PF=r |
Месяц: Октябрь 2020
MOV
Синтаксис | MOV приемник,источник |
Машинный код | 88 /r — MOV r/m8,r8 89 /r — MOV r/m16,r16 89 /r — MOV r/m32,r32 8А /r — MOV r8,r/m8 8В /r — MOV r16,r/m16 8В /r — MOV r32,r/m32 8C /r — MOV r/m16,Sreg** 8E /r — MOV Sreg,r/m16 А0 — MOV AL,moffs8* A1 — MOV AX,moffs16* A1 — MOV EAX,moffs32* A2 — MOV moffs8*,AL A3 — MOV moffs16*,AX A3 — MOV moffs32*,EAX B0+rb — MOV r8,imm8 B8+rw — MOV r16,imm16 B8+rd — MOV r32,imm32 C6 /0 — MOV r/m8,imm8 C7 /0 — MOV r/m16,imm16 C7 /0 — MOV r/m32,imm32 |
Описание | Копирование. |
Действие | Копирование содержимого операнда источник в операнд приемник. |
Флаги | OF = ? SF = ? ZF = ? AF = ? PF = ? CF = ? |
NOP
Синтаксис | NOP |
Машинный код | 90 |
Описание | Нет операции. |
Действие | Отсутствует. Единственный эффект от команды NOP — инкремент регистра EIP. |
Флаги | Регистры и флаги не изменяются. |
Обычно команда NOP используется, чтобы произвести задержку в исполнении или зарезервировать место в коде памяти.
Эта статья по большей части для совсем начинающих. Если вы хорошо разбираетесь в системах счисления, можете обратить внимание лишь на особенности синтаксиса ассемблера FASM в конце статьи. На самом деле процессор работает только с двоичными числами, состоящими из единиц и нулей В виде двоичных чисел хранятся и обрабатываются все данные и команды любой программы. Однако, двоичная запись чисел слишком громоздка и неудобна для […]

В этой части наконец-то напишем долгожданный «Hello, world!». Теперь почти всё должно быть понятно. Откроем в текстовом редакторе новый файл и сохраним его как hello.asm в директории C:\fasm. Для начала необходимо с помощью директивы db объявить строку, содержащую сообщение «Hello, word!». Лучше сделать это в конце программы, за последней командой, иначе процессор может принять строку за код […]
Практически любая программа кроме машинных команд содержит также какие-то данные. Например, числа, текстовые строчки, идентификаторы, различные ресурсы и т.д. Данные могут быть как константами, не меняющими своё значение во время выполнения программы, так и переменными, в которых хранятся всякие промежуточные результаты. Прежде всего нужно научиться объявлять данные в программе. Для этого в ассемблере существуют директивы объявления данных. Размер(в байтах) Объявление Резервирование 1 db […]
Для того, чтобы писать программы на ассемблере, нам необходимо знать, какие регистры процессора существуют и как их можно использовать. Все процессоры архитектуры x86 (даже многоядерные, большие и сложные) являются дальними потомками древнего Intel 8086 и совместимы с его архитектурой. Это значит, что программы на ассемблере 8086 будут работать и на всех современных процессорах x86. Все […]

В предыдущем уроке мы скомпилировали свою первую программу. Пока мы не знаем, что она делает. Чтобы узнать, откроем её в отладчике и шаг за шагом пройдем каждую команду. Прежде всего необходимо запустить отладчик. Не спешите запускать DOSBox. Сначала еще раз отредактируем dosbox.conf. Предлогаю вернуться в предущий урок, чтобы освежить память про редактирование dosbox.conf и посмотреть, […]
Итак, поехали! Курс обучения любому языку программирования принято начинать с написания программы «Hello, world!». Однако мы этого делать не будем. Потому что «Hello, world!» на ассемблере придется долго объяснять и трудно понять сходу. А я хочу сделать курс из коротких понятных статей. Поэтому мы напишем совсем простую программу. Сразу оговорюсь, что мы будем писать только […]
Учиться программировать начнем с процессора Intel 8086. Будем писать программы под DOS Программирование под Windows и Linux сложнее, а нам надо с чего-то начинать. Поэтому начнем с простого и понятного 16-битного процессора 8086. Практическая ценность от программирования под DOS в наше время не очень большая, если вы, конечно, не собираетесь тесно работать с этой операционной […]