Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
МИНИСТЕРСТВО ОБРАЗОВАНИЯ НИЖЕГОРОДСКОЙ ОБЛАСТИ
ГОСУДАРСТВЕННОЕБЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«НИЖЕГОРОДСКИЙ РАДИОТЕХНИЧЕСКИЙ КОЛЛЕДЖ»
Дисциплина: «Микропроцессоры и микропроцессорные системы»
МЕТОДИЧЕСКОЕ ПОСОБИЕ ДЛЯ СТУДЕНТОВ
ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОГО ПРАКТИКУМА
«СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА К1810ВМ86»
Рабочая тетрадь отчетов
Вариант _
Студент__________________________
Группа___________________________
Специальность____________________
Работу проверил преподаватель:
_________________________________
Нижний Новгород
201_
Лабораторная работа №1
«Изучение программного эмулятора EMU 8086»
Emu8086 сочетает в себе мощный редактор исходного кода, ассемблер, дизассемблер, программный эмулятор (виртуальный ПК) с отладчиком и поэтапное обучение.
Эта программа чрезвычайно полезна для тех, кто только начинает изучать ассемблер. Она компилирует исходный код и выполняет его с помощью эмулятора шаг за шагом.
Визуальный интерфейс очень прост в работе. Вы можете наблюдать регистры, флаги и память во время выполнения вашей программы.
Арифметико-логическое устройство (АЛУ) показывает внутреннюю работу центрального процессора (CPU).
Эмулятор выполняет программы на виртуальном ПК, который полностью исключает возможность доступа из вашей программы к реальным аппаратным средствам, таким как жесткие диски и память. Так как ваш код ассемблера выполняется на виртуальной машине, то отладка становится более легкой.
Машинный код 8086 полностью совместим со всеми последовавшими за ним поколениями микропроцессоров Intel и AMD, а так же ряда процессоров прочих фирм. Это делает код 8086 очень привлекательным, так как он выполняется как на старых, так и на современных компьютерных системах. Другим преимуществом является то, что набор команд 8086 сравнительно невелик, и поэтому изучить его будет легче.
Emu8086 имеет более легкий синтаксис, чем любые другие ассемблеры, но будет генерировать программу, которая сможет быть выполнена на любом компьютере, поддерживающем машинный код 8086. Это большой плюс для начинающих.
Официальный сайт программы: www.emu8086.com.
С данного сайта Вы сможете скачать демонстрационную версию emu8086, а так же заказать полную. На момент написания данного текста стоимость программы для одного пользователя (Single User License) составляла 19.95 USD.
После запуска emu8086 откроет окно приветствия (welcome…) и предложит создать новый проект или открыть некоторые из готовых (примеры или examples), поставляемых вместе с программой. В нашем случае закрываем это окно и продолжаем работу.
Перейдите в меню file - examples - Hello, world. В главном окне откроется код программы «Hello, world», которая располагается в папке Examples.
Для быстрого запуска Эмулятора нужно просто нажать кнопку emulate (). Программа сама скомпилирует приложение и запустит ее в своей виртуальной среде.
Второй способ. Сначала необходимо скомпилировать приложение (кнопка compile ()). Откроется диалоговое окно, в котором нужно указать путь и имя файла для компиляции. После чего нужно запустить приложение (file - open, далее кнопка Run).
Слева в окне Эмулятора располагаются регистры процессора Intel 8086, а именно: AX, BX, CX, DX, CS, IP, SS, SP, BP, SI, DI, DS и ES. По-центру окна располагаются адреса команд в памяти, справа - код программ
Откройте файл z01.asm (из главного окна щелкните по кнопке examples, найдите файл z01.pas и нажмите Открыть).
Исходный код программы:
; output: com
org 100h
.data
msg db "Hello, World", 24h
.code
mov ax, @data
mov ds, ax
mov dx, offset msg
mov ah, 9
int 21h
.exit
Далее нажмите кнопку Emulate, а потом Run. Появиться окно emulator screen. В этом окне эмулируется монитор, работающий в текстовом режиме. По алгоритму программы в него выводится предложение Hello, World (Привет, Мир).
mov al, 84h;
add al, al
mov bx, 66h;
inc bx;
mov[bx], al;
mov[bx+3], al;
указанных регистров и ячеек памяти до выполнения команды и после выполнения, а также записывать код команды и её логический адрес.
Таблица 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. Исследовать выполнение команд пересылок.
Таблица 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=__________ Fl L= S Z 0 AC 0 P 1 C |
ah=__________ Fl L= |
||
mov ah, 0ffh |
ah= |
ah= |
||
sahf |
ah=__________ FlL= |
ah=__________ FlL= |
||
mov sp, 0000h |
sp= |
sp= |
||
pushf |
sp=_________ w[tos]=______ Fl L= Fl 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 |
Fl L= Fl H= sp=_________ w[tos]=______ |
Fl L= Fl H= sp=___________ w[tos]= |
||
pushf |
sp=_________ |
sp=___________ w[tos]=________ Fl L= Fl H= |
||
1.5 Исследование команды трансляции XLAT.
1.5.1. Сформировать в памяти таблицу байтов данных.
Таблица 9.
№ элемента таблицы |
Адрес записи |
Записываемое значение |
0 |
ds: |
|
1 |
ds: |
|
2 |
ds: |
|
3 |
ds: |
|
4 |
ds: |
|
5 |
ds: |
Таблица 10.
Команда |
Адрес команды |
Код команды |
Содержимое Rg и ячеек памяти |
|
до выполнения |
после выполнения |
|||
mov al, |
al= |
al= |
||
mov bx, |
bx= |
bx= |
||
xlat |
al+bx=_______ EA=_________ b[al+bx]= |
EA=__________ al= |
||
Примечание: В регистре al необходимо задать номер элемента таблицы от 0 до5.
Лабораторная работа №3
«Исследование выполнения арифметических команд в EMU 8086»
Цель работы: ______________________________________________________ __________________________________________________________________
Запускаем эмулятор EMU 8086 (лаб. работа №1 )
Задание 1.Первоначальная загрузка регистров.
Таблица 1.
Команда |
Адрес |
Код |
MOV AХ, 47h |
||
MOV BX, 1234h |
||
MOV CX, 0155h |
||
MOV DX, 0666h |
||
MOV SI, 0002h |
||
MOV DI, -1 |
||
MOV BP, 4F1Ah |
Задание 2. Исследование арифметических команд.
Таблица 2.
Команда |
Адрес команды |
Код команды |
Содержимое Rg и ячеек памяти |
Пояснения выполнения команды |
|
До выполнения |
После выполнения |
||||
SUB AX, AX |
AX=_______ |
AX=________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
SUB AX, 0007h |
AX=_______ |
AX=_________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
CMP AX, 0FEDCh |
AX=_______ |
AX=_________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
SUB AX, 0FEDCh |
AX=_______ |
AX=_________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
SUB BL, BL |
BL=_______ |
BL=_________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
MOV CX, 0C421h |
CX=_______ |
CX=__________ |
|||
MOV [0102h], CX |
W[0102h]=___________ |
W[0102h]=___________________ |
|||
MOV BX, 5678h |
BX= |
BX= |
|||
ADD BX, [0102h] |
W[0102h]=____________ BX=______ |
W[0102h]=_____ BX=__________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
SUB [0102h], BL |
b[0102h]= ___________ BX=_______ |
b[0102h]=______ BX=__________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
MOV CX, 4A01h |
CX= |
CX= |
|||
ADD CX, 6355h |
CX=______ |
CX=__________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
MOV BX, -3 |
BX= |
BX= |
|||
ADD BX, CX |
BX=______ CX=______ |
BX=______ CX=______ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
NEG BX |
BX=______ |
BX=______ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
STC |
Cf= |
Cf= |
|||
MOV AL, 0F0h |
AL= |
AL= |
|||
ADC AL, 0A3h |
AL=_______ |
AL=__________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
SBB AL, 96h |
AL=_______ |
AL=__________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
|||
SBB AL, 01h |
AL=_______ |
AL=__________ Zf=___ Cf=___ Pf=___ Of=___ Sf=___ AСf=___ |
Таблица 3.
Команда |
Адрес команды |
Код команды |
Содержимое Rg и ячеек памяти |
Пояснения выполнения команды |
|
До выполнения |
После выполнения |
||||
|
Проверка кода команды
__ __ __ __ __ __ | __ | __ | __ __ | __ __ __ | __ __ __ _______________________________
код
= ________ ____________________h
Лабораторная работа № 4
«Исследование выполнения логических, цепочечных команд, команд управления состояниями флагов и команд сдвигов в EMU 8086»
Цель работы __________________________________________________________________
_____________________________________________________________________________
Запустить эмулятор EMU 8086 (лаб. работа №1).
Задание 1. Первоначальная загрузка регистров.
Таблица 1.
Команда |
Адрес |
Код |
MOV AL, |
||
MOV BX, |
||
MOV CX, |
||
MOV DX, |
||
MOV SI, |
||
MOV DI, |
||
MOV BP, |
||
1.2 Записать в таблицу 2 состояние регистров и флагов.
Таблица 2.
AX= |
SP= |
CS= |
Cf= |
Af= |
BX= |
BP= |
DS= |
Zf= |
Of= |
CX= |
SI= |
SS= |
Sf= |
If= |
DX= |
DI= |
ES= |
Pf= |
Df= |
IP= |
1.3 Заполнить таблицы 3-6, вводя данные команды с любого адреса и, выполняя программу в пошаговом режиме, занести в таблицы состояние измененных регистров, ячеек памяти и флагов.
Таблица 3.
Команда |
Адрес команды |
Код команды |
Состояние флагов |
|
До выполнения |
После выполнения |
|||
CLC |
Cf= |
Cf= |
||
STC |
Cf= |
Cf= |
||
CMC |
Cf= |
Cf= |
||
STD |
Df= |
Df= |
||
CLD |
Df= |
Df= |
||
CLI |
If= |
If= |
||
STI |
If= |
If= |
3. Исследование логических команд.
Таблица 4.
Команда\пояснение команды |
Адрес команды |
Код команды |
Содержимое Rg и ячеек памяти |
|
До выполнения |
После выполнения |
|||
MOV [BX+SI],1234h |
w[BX+SI]=_____ SI=____ BX=___ BX+SI=EA=_____ |
w[BX+SI]=______ |
||
AND BYTE PTR[BX+SI], 0CCh |
w[BX+SI]=_____ b[BX+SI]=______ SI=____ BX=___ BX+SI=EA=_____ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
w[BX+SI]=______ b[BX+SI]=______ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
||
MOV AX, 1248h |
AX= |
AX= |
||
OR AL, 0Ah |
AX=_________ AL=_________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
AX=_________ AL=_________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
||
CBW |
AX= |
AX= |
||
CWD |
AX=_____ DX=_____ |
AX=_____ DX=_____ |
||
NOT AX |
AX= |
AX= |
||
XOR AX, 1235h |
AX=_______ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
AX=______ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
||
TEST AL, 0A0h |
AX=______ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
AX=______ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=___ |
4. Исследование выполнения команд сдвигов.
Таблица 5.
Команда/ пояснение команды |
Адрес команды |
Код команды |
Содержимое Rg и ячеек памяти |
|
До выполнения |
После выполнения |
|||
MOV AX, 1234h |
AX= |
AX= |
||
RCL AX, 1 |
AX=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
AX=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
MOV CL, 3 |
CL= |
CL= |
||
RCR AX,CL |
AX=_________ CX=_________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
AX=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
MOV DX, 1155h |
DX= |
DX= |
||
ROL DX, CL |
DX=________ CL=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
DX=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
MOV CX, 0007h |
CX= |
CX= |
||
ROR DX, CL |
DX=_______ CL=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
DX=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
MOV[0401h], 0011h |
b[0401h]= |
b[0401h]= |
||
SHL BYTE PTR[0401h], 1h |
b[0401h]=_____ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
b[0401h]=_____ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
SHL BYTE PTR[0401h], 5h |
b[0401h]=_____ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
b[0401h]=_____ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
SAR AX, CL |
AX=_______ CL=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
AX=_____ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
||
SHR AX, 1 |
AX=________ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
AX=_______ Cf=___ Pf=___ Sf=___ Of=___ Zf=___ ACf=__ |
5 Исследование выполнения цепочечных команд MOVS, CMPS, SCAS, STOS, LODS.
SI1, DI1 содержимое регистров до выполнения цепочечной команды
SI2, DI2 содержимое регистров после выполнения цепочечной команды
Таблица 6.
Команда |
Адрес команды |
Код команды |
Содержимое Rg и ячеек памяти |
Содержание операции |
|
До выполнения |
После выполнения |
||||
CLD MOV AX,_______ MOV SI,________ MOV DI,________ MOV WORD PTR [SI],________ MOV WORD PTR [DI],________ |
Df=__________ AX=_________ SI=_________ DI=__________ W[SI]=_______ W[DI]=_______ |
Df=__________ AX=__________ SI=___________ DI=___________ W[SI]=________ W[DI]=________ |
|||
MOVSW |
SI1=_________ DI1=_________ W[SI1]=______ W[DI1]=______ DF = |
SI2=___________ DI2=__________ W[SI1]=_______ W[DI1]=_______ |
|||
MOV WORD PTR [SI],________ MOV WORD PTR [DI],________ |
W[SI]=________ W[DI]=________ |
||||
CMPSW |
SI1=_________ DI1=_________ W[SI1]=______ W[DI1]=______ Of=__ Cf=__ Sf=__ Df=__ Zf=__ Pf=__ |
SI2=___________ DI2=__________ W[SI1]=_______ W[DI1]=_______ Of=__ Cf=___ Sf=__ Zf=___ Df=__ Pf=___ |
|||
STD MOV WORD PTR [SI],________ MOV WORD PTR [DI],________ |
Df=___________ W[SI]=________ W[DI]=________ AX=__________ |
||||
SCASW |
AX=________ SI1=_________ DI1=_________ W[SI1]=______ W[DI1]=______ Of=__ Cf=__ Sf=__ Df=__ Zf=__ Pf=__ |
AX=__________ SI2=___________ DI2=__________ W[SI1]=_______ W[DI1]=_______ Of=__ Cf=__ Sf=__ Df=__ Zf=__ Pf=__ |
|||
MOV AX, MOV WORD PTR [SI],________ MOV WORD PTR [DI],________ |
b[SI]=_________ b[DI]=_________ AX=__________ |
||||
LODSB |
AX=_________ SI1=_________ DI1=_________ b[SI1]=______ b[DI1]=______ DF = |
AX=__________ SI2=___________ DI2=__________ b[SI1]=_______ b[DI1]=_______ |
|||
MOV WORD PTR [SI],________ MOV WORD PTR [DI],________ |
W[SI]=________ W[DI]=________ AX=__________ |
||||
STOSW |
AX=_________ SI1=_________ DI1=_________ W[SI1]=______ W[DI1]=______ DF = |
AX=__________ SI2=___________ DI2=__________ W[SI1]=_______ W[DI1]=_______ |
Изм.
Лист
№ докум.
Подпись
Дата
Изм.
Лист
№ докум.
Подпись
Дата