
- •Конспект лекций по ассемблеру
- •Структурная схема эвм
- •Организация памяти
- •Порты ввода/вывода
- •Сегментация памяти
- •Логические и физические адреса памяти
- •Адресация команд
- •Адресация данных
- •Адресация сегмента стека
- •Перемещаемые программы
- •Структура микропроцессора
- •Назначение регистров микропроцессора
- •Регистр флагов
- •Ассемблер
- •Выражения
- •Структура машинного оператора
- •Директивы ассемблера
- •Директивы определения данных
- •Определение слова
- •Команды и способы адресации операндов
- •Режимы адресации
- •Команда сложения add
- •Команда сложения с переносом adc
- •Команда вычитания sub
- •Imul – команда умножения со знаком
- •Idiv – команда деления со знаком
- •Команда сравнения cmp
- •Команды безусловного перехода jmp
- •1. Короткий относительный переход
- •2. Внутрисегментный переход
- •Команды условных переходов
- •Знаковые
- •Беззнаковые
- •Специальные
- •Способы адресации
- •Двухоперандные команды
- •Косвенная адресация
- •Регистровая адресация
- •Прямая адресация с индексированием
- •Прямая адресация с базированием
- •Адресация по сумме d8 и индексный регистр
- •Адресация по сумме базового регистра и смещения
- •Адресация с базированием и индексированием
- •Прямая адресация с базированием и индексированием
- •Двухоперандная команда, в которой второй операнд непосредственный
- •Формат двухоперандных команд с акумулятором и но
- •Форматы команды inc
- •Форматы команд pop и push
- •Однобайтные команды без операндов
- •Команды передачи данных mov
- •Команда обмена xchg
- •Команда загрузки исполнительного адреса lea
- •Команды управления циклами команда цикла loop
- •Команды переходов loopz, loope
- •Команды вызова подпрограмм call
- •Структура подпрограммы
- •Команды возврата
- •Передача параметров в процедуру
- •Примеры на обработку матрицы
- •Функции ввода/вывода
- •Функция вызова команды int 21h
- •Вывод на экран дисплея
- •Ввод с клавиатуры
- •Процедура ввода числа форматом слово
Специальные
┌─────────┬────────────┬──────────────────────────────────────┐
│Переход │Флаги │ Примечания │
├─────────┼────────────┼──────────────────────────────────────┤
│ JS │ SF │переход по минусу │
├─────────┼────────────┼──────────────────────────────────────┤
│ JNS │ ┐SF │переход, если знак равен нулю │
├─────────┼────────────┼──────────────────────────────────────┤
│ JC │ CF │переход по переносу │
├─────────┼────────────┼──────────────────────────────────────┤
│ JNC │ ┐CF │переход по отсутствию переноса │
├─────────┼────────────┼──────────────────────────────────────┤
│ JO │ JF │переход по переполнению │
├─────────┼────────────┼──────────────────────────────────────┤
│ JNO │ ┐OF │переход по отсутствию переполнения │
├─────────┼────────────┼──────────────────────────────────────┤
│ JP │ PF │переход по паритету │
├─────────┼────────────┼──────────────────────────────────────┤
│ JNP │ ┐PF │переход по отсутствию паритета │
└─────────┴────────────┴──────────────────────────────────────┘
Команды условного перехода флаги не изменяют!
Пример лабораторной работы N2:
┌
│(A^2)*B if A^2 - 5 > 0
y = { 100 if A^2 - 5 = 0
│(A^2)*(B^2) if A^2 - 5 < 0
└
A dw 7
B dw 8
y dw ?
mov ax,A
imul ax
mov cx,ax ;A^2
sub ax,5
jz m2
jl m3
mov ax,B ;
imul cx ; >0
jmp short kon ;
;--------------------------
m2: mov ax,100 ;
jmp short kon ; =0
;--------------------------
m3: mov ax,B ;
imul ax ;
neg ax ; <0
add ax,cx ;
;--------------------------
kon: mov y,ax
ret
Способы адресации
Первые ЭВМ имели прямой способ адресации:
КОП ОР1 ОР2 При прямой адресации все ко-
┌───────┐ ┌───────┐ ┌───────┐ манды имели бы длину 6 байтов.
│ KOП │ │Адр.op1│ │Адр.ор2│ Однако в IBM PC команды имеют
└───────┘ └───────┘ └───────┘ длину от 1 до 6 байтов. В мень-
7 0 19 0 19 0 шей степени используются длин-
\-------------V--------------/ ные команды. В этом и проявляется
6 байт
эффективность системы команд. Современные способы адресации имеют следующие цели: определить адреса в командах наименьшим числом бит, вычисление адреса команд, относительно базы а в командах перехода – относительно следующей команды, вычисление адреса операндов на основании выражений, элементы выражений в процессе вычислений изменяются, что позволяет эффективно обрабатывать структурированные типы данных. Большинство способов адресации реализуются с помощью постбайта.