МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра МОЭВМ
отчет
по лабораторной работе №1
по дисциплине «Организация ЭВМ и систем»
Тема: Трансляции, отладка и выполнение программ на языке Ассемблера
Студент гр. |
|
|
Преподаватель |
|
|
Санкт-Петербург
2018
Цель работы.
Ознакомиться с трансляцией, выполнением и отладкой программы на языке Ассемблер.
Ход работы.
Часть 1.
-
В программе DOSBOX была подключена папка MASM с исходными файлами.
-
Программа hello1.asm была просмотрена в режиме редактирования и были исправлены ошибки. Также была преобразована строка приветствия.
-
Программа была транслирована с помощью команды:
> masm hello1.asm
И были созданы объектный файл h1.obj и файл листинга h1.lst, которые приведёны в приложении А.
-
Был скомпонован загрузочный модуль h1.exe с помощью команды:
> link h1.obj
И были создана карта памяти h1.map.
-
Программа была выполнена в автоматическом режиме с помощью команды:
> h1.exe
Рисунок 1 – запуcк h1.exe
В соответствии с рисунком 1 работоспособность программы h1.exe подтверждена.
-
Была создана программа hello1_2.asm, дополненная ещё одним оператором вывода дополнительной строки. Код программы приведён в приложении Б.
-
Программа hello1_2.asm была протранслирована, скомпонован загрузочный модуль и выполнен её запуск.
Рисунок 2 – запуск h1_2.exe
Согласно рисунку 2 программа отработала, верно.
-
Программа hello1 была выполнена в пошаговом режиме под управлением отладчика отладчика afd:
> afd h1.exe
Стартовые значения регистров:
-
(CS) = 11AC
-
(DS) = 119C
-
(SS) = 11B1
-
(ES) = 119C
Результат выполнения программы представлен в таблице 1.
Таблица 1
Адрес Команды |
Символический код команды |
16-ричный код команды |
Содержимое регистров и ячеек памяти |
|
до выполнения |
после выполнения |
|||
0000 |
mov ax,@data |
B8 ---- R |
(ax) = 0000 (ip) = 0010 |
(ax) = 11AE (ip) = 0013 |
0003 |
mov ds,ax |
8E D8 |
(ds) = 119c (ax) = 11AE (ip) = 0013 |
(ds) = 11AE (ax) = 11AE (ip) = 0015 |
0005 |
mov dx,OFFSET Greeting |
BA 0000 R |
(dx) = 0000 (ip) = 0015 |
(dx) = 0000 (ip) = 0018 |
0008 |
mov ah,9 |
B4 09 |
(ah) = 11 (ip) = 0018 |
(AH) = 09 (ip) = 001A |
000A |
int 21h |
CD 21 |
(ip) = 001A |
(ip) = 001C |
000C |
mov ah,4ch |
B4 4C |
(Ah) = 09 (ip) =001C |
(ah) = 4C (ip) = 001E |
000E |
int 21h |
CD 21 |
(ip) = 001E |
(ip) = 0020 |
Часть 2
-
Программа hello2.asm была просмотрена в режиме редактирования. Была отредактирована строка приветствия. Листинг программы приложен в приложении В.
-
Программа hello2.asm была транслирована для создания объектного файла h2.obj и файла листинга h2.lst, листинг представлен в приложении В.
-
Программа hello2.exe была скомпонована с помощью компоновщика Link.
-
Был выполнен запуск программы и проверка на её работоспособность.
Рисунок 3 – запуск h2.exe
-
Программа hello2 была выполнена в пошаговом режиме под управлением отладчика отладчика afd:
> afd h2.exe
Стартовые значения регистров:
-
(CS) = 11B2
-
(DS) = 119C
-
(SS) = 119C
-
(ES) = 119C
Результат выполнения программы представлен в таблице 2.
Таблица 2
Адрес Команды |
Символический код команды |
16-ричный код команды |
Содержимое регистров и ячеек памяти |
|
до выполнения |
после выполнения |
|||
0005 |
push DS |
1E |
(DS) = 119C (IP) = 0005 |
(DS) = 119C (ip) = 0006 |
0006 |
sub AX,AX |
2B C0 |
(AX) = 0000 (ip) = 0006 |
(AX) = 0000 (ip) = 0008 |
0008 |
push AX |
50 |
(AX) = 0000 (ip) = 0008 |
(AX) = 0000 (ip) = 0009 |
0009 |
mov AX,DATA |
B8 ---- R |
(AX) = 0000 (ip) = 0009 |
(AX) = 11AE (ip) = 000C |
000C |
mov DS,AX |
8E D8 |
(DS) = 119C (AX) = 11AE (ip) = 000C |
(DS) = 11AE (AX) = 11AE (ip) = 000E |
000E |
mov DX, OFFSET HELLO |
BA 0000 R |
(DX) = 0000 (IP) = 000E |
(DX) = 0000 (IP) = 0011 |
0011 |
call WriteMsg
|
E8 0000 R |
(IP) = 0011 |
(IP) = 0000 |
0000 |
mov AH,9 |
B4 09 |
(aH) = 11 (ip) = 0000 |
(aH) = 09 (ip) = 0002 |
0002 |
int 21h |
CD 21 |
(ip) = 0002 |
(ip) = 0004 |
0004 |
ret |
C3 |
(ip) = 0004 |
(ip) = 0014 |
0014 |
mov DX, OFFSET GREETING |
BA 000A R |
(DX) = 0000 (IP) = 0014 |
(DX) = 000A (IP) = 0017 |
0017 |
call WriteMsg |
E8 0000 R |
(IP) = 0017 |
(IP) = 0000 |
0000 |
mov AH,9 |
B4 09 |
(aH) = 09 (ip) = 0000 |
(aH) = 09 (ip) = 0002 |
0002 |
int 21h |
CD 21 |
(ip) = 0002 |
(ip) = 0004 |
0004 |
ret |
C3 |
(ip) = 0004 |
(ip) = 0014 |
001A |
ret |
CB |
(IP) = 001A |
(IP) = 0000 |
0000 |
int 20 |
CD20 |
(IP) = 0000 |
(ip) =0005 |
Вывод:
В ходе лабораторной работы было произведена трансляция, линковка, выполнение и отладка программ на языке Ассемблера. Результатом выполнения лабораторной работы являются рабочие программы h1.exe и h2.exe.