- •Содержание
- •Введение
- •Варианты заданий:
- •Лабораторная работа №2 Вариантыпример отчетак содержанию
- •Варианты заданий:
- •Лабораторная работа №3 Вариантыпример отчетак содержанию
- •Варианты заданий к лабораторной работе №3
- •Лабораторная работа №4 Вариантыпример отчетак содержанию
- •Варианты заданий лабораторной работы №4
- •41. В прямоугольной матрице обменять первый столбец с последним.
- •Оценка результатов практикик содержанию
- •Рекомендованная литература
- •Отладка программы в среде отладчикаTd к содержанию
- •Разбор внутреннего представления командк содержанию
- •Примеры разбора команд
- •1. Команды с регистровой адресацией
- •2.Команды с прямой адресацией
- •3. Арифметические команды с непосредственной адресацией
- •4. Команда mov с непосредственной адресацией
- •5. Команды с использованием аккумулятора
- •6. Команды условного перехода (с относительной адресацией)
- •7. Команды безусловного перехода (с относительной адресацией)
- •8. Команда вызова подпрограммы (с относительной адресацией)
- •9. Команда завершения цикла (с относительной адресацией)
- •10. Команды с косвенной адресацией
- •Міністерство освіти і науки
- •Пример отчета по лабораторной работе №1к лаб. Раб.№1
- •Пример отчета по лабораторной работе №2к лаб. Раб.№2
- •Пример отчета по лабораторной работе №3к лаб. Раб.№3
- •Пример отчета по лабораторной работе №4к лаб. Раб. №4
Примеры разбора команд
1. Команды с регистровой адресацией
2A C3 sub al,bl.
В команде два байта.
Первый байт (2А): Второй байт (С3) (постбайт):
kop d w Mod reg r/m
001010 1 0. 11 000 011.
кор – код операции команды вычитания
d=1,т.к. результат записывается в регистр
w=0, определяет размер операндов, равный одному байту
mod=11 – регистровая адресация
reg=000 задает код регистра al (см. табл.1),
r/m=011 задает код регистра bl.
2.Команды с прямой адресацией
8A 1E 0000r mov bl,А
Команда состоит из 4 байт.
Первый байт: Второй байт (постбайт) 3-4 байты
kop d w mod reg r/m disp16
100010 1 0 00 011 110 0000
кор – код операции команды присваивания
d=1,т.к. результат записывается в регистр
w=0, определяет размер операндов, равный одному байту
(mod=00) + (r/m=110) – прямая адресация (см. табл.1)
reg=011 задает код регистра bl.
disp16 - смещение переменной А в сегменте данных или прямой адрес переменной А. По листингу программы можно убедиться в том, что смещение переменной А в сегменте данных действительно равно 0000h.
3. Арифметические команды с непосредственной адресацией
80 C3 01 add bl,1.
В команде три байта.
Первый байт: Второй байт: Третий байт:
kop s w Mod reg r/m непосредственный операнд
100000 0 0 11 000 011 01
Комбинация значений s=0 и w=0 показывает, что непосредственный операнд занимает один байт.
mod=11указывает на то, что первый операнд регистр.
r/m= задает код регистра bl
reg= не используется для кодировки второго операнда, а содержит код для расширения кода операции. Так используется поле reg во всех арифметико-логических командах с непосредственным операндом.
4. Команда mov с непосредственной адресацией
B1 04 mov cl,4.
В команде 2 байта, причем отсутствует постбайт.
Первый байт: Второй байт:
Kop w reg непосредственный операнд
1011 0 001. 04
кор – код операции mov.
w=0, определяет размер операндов, равный одному байту
reg=001 содержит номер регистра cl.
Второй байт команды – это непосредственный операнд.
5. Команды с использованием аккумулятора
A0 0000r mov al,А.
Команда состоит из трех байт.
Первый байт: 2-3 байты:
Kop w disp16
1010000 0. 0000
кор – код операции mov.
w=0, определяет размер операндов (использование аккумулятора al)
disp16=0000 - смещение переменной А в сегменте данных или прямой адрес переменной А (можно убедиться по листингу программы).
Формат рассмотренной команды не использует постбайт, В арифметико-логических командах и командах пересылки данных используются сокращенные форматы команд в случае использования в качестве операнда регистра-аккумулятора (AL или AX).
6. Команды условного перехода (с относительной адресацией)
0017 74 11 je m2
0019 ……
002А m2: ……
Команда состоит из двух байт.
0017 – смещение самой команды относительно сегмента кода.
Первый байт: Второй байт:
Kop disp8
01110100 11
кор – код операции je.
disp8 – относительное смещение, рассчитанное следующим образом:
002A - адрес метки m2
- 0019 - адрес команды, следующей за je (см. пример отчета)
11