Рубрики
Справочник по ассемблеру

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 используется, чтобы произвести задержку в исполнении или зарезервировать место в коде памяти.

Рубрики
Учебный курс

Учебный курс. Урок 7. Системы счисления

Эта статья по большей части для совсем начинающих. Если вы хорошо разбираетесь в системах счисления, можете обратить внимание лишь на особенности синтаксиса ассемблера FASM в конце статьи. На самом деле процессор работает только с двоичными числами, состоящими из единиц и нулей В виде двоичных чисел хранятся и обрабатываются все данные и команды любой программы. Однако, двоичная запись чисел слишком громоздка и неудобна для […]

Рубрики
Учебный курс

Учебный курс. Урок 6. Hello, world!

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

Рубрики
Учебный курс

Учебный курс. Урок 5. Директивы объявления данных

Практически любая программа кроме машинных команд содержит также какие-то данные. Например, числа, текстовые строчки, идентификаторы, различные ресурсы и т.д. Данные могут быть как константами, не меняющими своё значение во время выполнения программы, так и переменными, в которых хранятся всякие промежуточные результаты. Прежде всего нужно научиться объявлять данные в программе. Для этого в ассемблере существуют директивы объявления данных. Размер(в байтах) Объявление Резервирование 1 db […]

Рубрики
Учебный курс

Учебный курс. Урок 4. Регистры процессора 8086

Для того, чтобы писать программы на ассемблере, нам необходимо знать, какие регистры процессора существуют и как их можно использовать. Все процессоры архитектуры x86 (даже многоядерные, большие и сложные) являются дальними потомками древнего Intel 8086 и совместимы с его архитектурой. Это значит, что программы на ассемблере 8086 будут работать и на всех современных процессорах x86. Все […]

Рубрики
Учебный курс

Учебный курс. Урок 3. Turbo Debugger

В предыдущем уроке мы скомпилировали свою первую программу. Пока мы не знаем, что она делает. Чтобы узнать, откроем её в отладчике и шаг за шагом пройдем каждую команду. Прежде всего необходимо запустить отладчик. Не спешите запускать DOSBox. Сначала еще раз отредактируем dosbox.conf. Предлогаю вернуться в предущий урок, чтобы освежить память про редактирование dosbox.conf и посмотреть, […]

Рубрики
Учебный курс

Учебный курс. Урок 2. Первая программа

Итак, поехали! Курс обучения любому языку программирования принято начинать с написания программы «Hello, world!». Однако мы этого делать не будем. Потому что «Hello, world!» на ассемблере придется долго объяснять и трудно понять сходу. А я хочу сделать курс из коротких понятных статей. Поэтому мы напишем совсем простую программу. Сразу оговорюсь, что мы будем писать только […]

Рубрики
Учебный курс

Учебный курс. Урок 1. Необходимые инструменты

Учиться программировать начнем с процессора Intel 8086. Будем писать программы под DOS Программирование под Windows и Linux сложнее, а нам надо с чего-то начинать. Поэтому начнем с простого и понятного 16-битного процессора 8086. Практическая ценность от программирования под DOS в наше время не очень большая, если вы, конечно, не собираетесь тесно работать с этой операционной […]

Рубрики
Учебный курс

Учебный курс. Предисловие. Зачем учить ассемблер

В настоящее время существует множество языков программирования. Созданы самые разные языки, удобные для решения любых задач. Большинство этих языков является языками высокого уровня. Ассемблер — это практически самый древний язык программирования. До него было лишь программирование в машинных кодах ;) Итак, какие же преимущества дает знание ассемблера: Глубокое понимание работы компьютера и операционной системы. Максимальная […]