- •Лабораторная работа №1 «Изучение программного эмулятора emu 8086» Введение
- •1. Запуск Эмулятора
- •2. Пример 1 выполнения программы папки Examples.
- •3. Пример 2 выполнения своей программы
- •Лабораторная работа №2 «Исследование команд пересылки данных в emu 8086»
- •Лабораторная работа №3 «Исследование выполнения арифметических команд в emu 8086»
- •Лабораторная работа № 4 «Исследование выполнения логических, цепочечных команд, команд управления состояниями флагов и команд сдвигов в emu 8086»
- •Исследование команд управления состоянием флагов.
- •3. Исследование логических команд.
- •4. Исследование выполнения команд сдвигов.
- •5 Исследование выполнения цепочечных команд movs, cmps, scas, stos, lods.
3. Пример 2 выполнения своей программы
Запустить эмулятор EMU8086.
Набрать программу:
mov al, 84h;
add al, al
mov bx, 66h;
inc bx;
mov[bx], al;
mov[bx+3], al;
save as – задать имя (свою фамилию)
compile – проверить ошибки в набранной программе и подтвердить своё имя.
close
emulate
aux
flags
single step – выполнять программу по шагам и заполнять таблицу, записывая значения
указанных регистров и ячеек памяти до выполнения команды и после выполнения, а также записывать код команды и её логический адрес.
Таблица 1.
Команда |
Адрес команды |
Код команды |
Содержимое до выполнения |
Содержимое после выполнения
|
1.
|
|
|
al = |
al = |
2.
|
|
|
al = |
al = cf = zf= acf= pf = sf = of= |
3. |
|
|
bx =
|
bx =
|
4.
|
|
|
bx = |
bx = |
5.
|
|
|
* bx = EA= bx = b[bx] = |
b[bx] = |
6. |
|
|
EA= bx +3 = b[bx +3] = al = |
Посмотреть содержимое ячейки памяти по адресу b[ bx+3] =[EA]= = b[ ] = |
*) – чтобы посмотреть содержимое ячейки памяти необходимо в memory набрать логический адрес 0100:bx (или 0100:EA) – update-
Лабораторная работа №2 «Исследование команд пересылки данных в emu 8086»
Цель работы: __________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
Задание 1. Исследовать выполнение команд пересылок.
Войти в эмулятор EMU 8086 (см. лабораторная работа №1) ,записать состояние указанных регистров в таблицу 1.
Таблица 1.
ax= |
cs= |
sp= |
|
bx= |
ds= |
bp= |
|
cx= |
ss= |
si= |
|
dx= |
es= |
di= |
|
ip= |
|
||
Исследование команд загрузки.
Заполнить таблицы 2-7, вводя указанные команды с любого адреса и, выполняя программы в пошаговом режиме, занести в таблицы состояние указанных регистров, ячеек памяти и флагов.
Загрузка регистра непосредственным значением.
Таблица 2.
Команда
|
Адрес команды
|
Код команды
|
Содержимое регистров |
|
до выполнения |
после выполнения |
|||
mov ax, |
|
|
ax= |
ax= |
|
||||
mov bx, |
|
|
bx= |
bx= |
|
||||
mov cx, |
|
|
cx= |
cx= |
|
||||
mov si, |
|
|
si= |
si= |
|
||||
mov di, |
|
|
di= |
di= |
|
||||
mov bp, |
|
|
bp= |
bp= |
|
||||
Регистровые пересылки.
Таблица 3.
Команда |
Адрес команды |
Код команды |
Содержимое регистров |
|
до выполнения |
после выполнения |
|||
mov ax, bx |
|
|
bx=________ ax= |
bx=________ ax= |
|
||||
mov bx,cx |
|
|
bx=________ cx= |
bx=________ cx= |
|
||||
Загрузка данных в память.
Таблица 4.
Команда
|
Адрес команды
|
Код команды
|
Содержимое регистров |
|
до выполнения |
после выполнения |
|||
mov bx, 66h |
|
|
bx= |
bx= |
|
||||
inc bx |
|
|
bx= |
bx= |
|
||||
mov [bx], al |
|
|
al=___ EA=___ b[bx]= bx = |
al=__________ b[bx]= |
|
||||
mov [bx+3], cx |
|
|
w[bx+3]=______ cx= EA= |
w[bx+3]=______ cx= |
|
||||
Пересылка из памяти в регистр.
Таблица 5.
Команда
|
Адрес команды
|
Код команды
|
Содержимое регистров |
|
до выполнения |
после выполнения |
|||
mov dx, 1234h
|
|
|
dx =
|
dx =
|
mov dx, [bx+si+1]
|
|
|
si=___________ bx=__________ w[bx+si+1]=______ dx=__________ EA =
|
EA=___________ bx+si+1=_______ w[bx+si+1]=______ dx= |
mov ah, [bx+di] |
|
|
bx=__________ di=__________ b[bx+di]=______ ax= EA= |
bx=__________ di=__________ b[bx+di]=______ ax= |
|
||||
Команды обмена.
Таблица 6.
Команда
|
Адрес команды
|
Код команды
|
Содержимое регистров |
|
до выполнения |
после выполнения |
|||
xchg ax, cx |
|
|
ax=__________ cx=__________ |
ax=___________ cx=___________ |
|
||||
xchg [bp+80h], al |
|
|
al=___bp=_____ b[bp+80h]=______ EA= |
al=____________ b[bp+80h]=______ |
|
||||
Исследование выполнения команд пересылок адреса операнда и команд пересылок флагов.
Исследование выполнения команд пересылок адреса операнда.
Таблица 7.
Команда
|
Адрес команды
|
Код команды
|
Содержимое Rg и ячеек памяти |
|
до выполнения |
после выполнения |
|||
lea bp, [di+3] |
|
|
bp=__________ di=__________ di+03= |
EA=______ bp=______ |
|
||||
lds dx, [di+3] |
|
|
di=___________ b[di+3]=_______ b[di+4]=_______ b[di+5]=_______ b[di+6]=_______ ds=__________ dx= |
EA=______ dx=______ ds=______ ds:dx=_________ |
|
||||
les cx, [bp] |
|
|
es=___________ cx=___________ bp=___________ b[bp]=_________ b[bp+1]=_______ b[bp+2]=_______ b[bp+3]= |
es=___________ cx=___________ cl=___________ ch=_________ cs=_______ es:cx=_______ EA= |
|
||||
Исследование выполнения команд пересылок флагов.
Загрузить сегментные регистры значения
cs= |
ds= |
ss= |
es= |
Таблица 8.
Команда
|
Адрес команды
|
Код команды
|
Содержимое Rg и ячеек памяти |
|
до выполнения |
после выполнения |
|||
lahf |
|
|
ah=__________ F
S Z 0 AC 0 P 1 C |
ah=__________ F l L=
|
|
||||
mov ah, 0ffh |
|
|
ah=
|
ah= |
|
||||
sahf |
|
|
ah=__________ F lL=
|
ah=__________ F lL=
|
|
||||
mov sp, 0000h |
|
|
sp= |
sp= |
|
||||
pushf |
|
|
sp=_________ w[tos]=______ F l L=
F l H=
0 0 0 0 0 0 0 0 |
sp=_________ w[tos]=______
|
|
||||
mov ax, 1234h |
|
|
ax= |
ax= |
|
||||
push ax |
|
|
sp=__________ w[tos]=_______ b[sp]=________ b[sp+1]=______ |
sp=_________ w[tos]=______ |
|
||||
popf |
|
|
F l L=
F l H=
sp=_________ w[tos]=______ |
F l L=
F l H=
sp=___________ w[tos]= |
|
||||
pushf |
|
|
sp=_________ |
sp=___________ w[tos]=________ F l L=
F l H=
|
|
||||
1.5 Исследование команды трансляции XLAT.
1.5.1. Сформировать в памяти таблицу байтов данных.
Таблица 9.
№ элемента таблицы |
Адрес записи |
Записываемое значение |
0 |
ds: |
|
1 |
ds: |
|
2 |
ds: |
|
3 |
ds: |
|
4 |
ds: |
|
5 |
ds: |
|
Записать ___ элемент таблицы в регистр al. В регистре al задайте номер от 0 до 5 элемента таблицы байтов данных. Результаты занесите в таблицу 10.
Таблица 10.
Команда
|
Адрес команды
|
Код команды
|
Содержимое Rg и ячеек памяти |
|
до выполнения |
после выполнения |
|||
mov al, |
|
|
al= |
al= |
|
||||
mov bx, |
|
|
bx= |
bx= |
|
||||
xlat |
|
|
al+bx=_______ EA=_________ b[al+bx]= |
EA=__________ al= |
|
||||
Примечание: В регистре al необходимо задать номер элемента таблицы от 0 до5.
Определить содержимое соответствующего регистра при выполнении __ команды.
mov al, -2510 11) mov bl, -3216
mov bp, -1310 12) mov bl, -1910
mov bx, -3116 13) mov al, -2416
mov bl, -2716 14) mov dl, -3010
mov bl, -4416 15) mov dh, -3210
mov bx, -1810 16) mov sp, -3416
mov ax, -1910 17) mov cx, -4116
mov al, -1316 18) mov di, -2116
mov dx, -716 19) mov dh, -3116
mov bp, -1416 20) mov ax, -810

l
L=