Форматы команд:
Ассемблер: основные понятия, директивы, команды. Условный и безусловный переходы. Циклы. Массивы. Процедуры. Упакованные данные. Структуры.
Машинный язык – комбинация строго организованных последовательностей 0 и 1. В 50-е гг 20века программисты стали использовать для программирования символический аналог машинного языка, кот. назвали языком ассемблера.
Алфавит языка – все латинские буквы A-Z, a-z (прописные и строчные считаются эквивалентными), цифры 0-9, спец.знаки подчеркивания -,?, @, $, & и разделители , . [ ], {}, <, >, +, /, *, %, !, “”, \, =, #, ^
Идентификатор – послед-сть допустимых символов, использующихся для обозначения имен переменных и меток. Длина может составлять 256 символов, хотя транслятор воспринимает первые 32. Ид-р не может начинаться с цифры и «.» может быть только первым символом ид-ра.
Ключевые слова- служебные символы языка ассемблера, к кот-м относится названия регистров и операторы.
Символы и строки заключаются либо в одинарные, либо в двойные кавычки. В качестве символов можно использовать русские буквы. В строках прописные и строчные буквы неэквивалентны.
Программа на яз.ассемблера – посл-сть предложений, каждое из кот-х записывается в отдельной строке. Все предложения делятся на 3 группы:
1) комментарии – любая строка, начинающая с точки с запятой, либо пустая строка. Допустим многострочный комментарий.
COMMENT <маркер><текст>
Маркер (любой символ отличный от пробела) начинает комментарий. Концом комментария считается конец строки, в которой снова встретился этот же маркер.
2) директивы – приказы ассемблеру со след.синтаксисом:
[<имя>]<название директивы>[<операнды>][;<комментарий>]
- директивы определения данных
DB – директива определения данных в байт; DW – в слово; DD – в двойное слово.
- директивы эквивалентности и присваивания
<имя> EQU <операнд>
Операндом может быть имя (имя регистра, переменной, константы), константное выражение, любой текст.
3) команды – символьная форма записи машинных команд.
Синтаксис команды:
[<метка:>]<мнемокод>[<операнды>][;<комментарий>]
Мнемокод – служебное слово, указывающее в символьной форме операцию. Операнды отделяются друг от друга запятыми.
Команды пересылки
1. Mov op1,op2 - По этой команде на место 1-го операнда пересылается значение 2-го операнда. Флаги команда не меняет
2. Оператор указания типа PTR
<тип> PTR <выражение>
Тип – байт/слово/двойное слово
Оператор исп-ся в 2-х случаях:
- когда типы операторов в командах неизвестны, поэтому необходимо указать тип одного из них.
- когда необходимо изменить тип, приписанный имени при его описании.
3. Команда перестановки 2-х операторов XCHG.
Флаги команда не меняет. Операнды должны быть 1-го размера байт/слово.
Арифметические команды
1)
сложение
ADD op1,op2
Вычитание
SUB op1, op2
Операнды должны быть одного размера. Меняются флаги CF, OF, SF, ZF.
2) увеличение на 1: INC op Уменьшение на 1: DEC op
3) изменение знака NEG op
4)
сложение с учетом переноса
ADC op1,op2
Вычитание с учетом переноса
SBB op1,op2
К сумме прибавляется (из разности вычитается) значение флага переноса CF.
5)
умножение целых без знака
MUL op
умножение целых со знаком
IMUL op
Операнд может нах-ся в регистре или в памяти, но не может быть непосредственным операндом. При умножении байтов значение второго сомножителя берется из регистра AL, при умножении слов из регистра AX. Под рез-т отводится в 2 раза больше места, чем под сомножители. При умножении байтов рез-т имеет размер слова и запис-ся в AX, при умножении слов – в DX старшие разряды, в AX – младшие цифры.
6)
деление целых без знака
DIV op
деление целых со знаком
IDIV op
Явно указ-ся только делитель (нах-ся в регистре или ячейке памяти)
При делении слова на байт делимое нах-ся в AX. При делении двойного слова на слово в DX и AX.