Читайте также: |
|
Отчет по лабораторной работе № 2
Создание и отладка ассемблерных программ. Разработка.EXE-файла.
Получение навыков отладки в среде Turbo Debugger.
Цель работы: Разработка.EXE-файла. Получение навыков отладки в среде Turbo Debugger.
Оборудование: ПК с программой Turbo Debugger.exe.
Ход исследования:
Программа пересылки данных из одного места оперативной памяти в другое в обратном порядке.
stack1 segment stack 'stack'; сегмент стека
db 10 dup ('stack '); резервирование места в памяти
stack1 ends
dseg segment; сегмент данных
source db 10,20,30,40; исходная таблица
dest db 4 dup (?); место под результирующую таблицу
dseg ends
cseg segment; сегмент кода
assume cs: cseg, ds: dseg, ss: stack1; связь сегментов с регистрами
our_prog:; точка входа программы
mov ax,dseg; инициализация регистра DS
mov ds,ax
; присвоить элементам таблицы dest нулевые начальные значения
mov dest,0; обнуление первого байта
mov dest+1,0; обнуление второго байта
mov dest+2,0; обнуление третьего байта
mov dest+3,0; обнуление четвертого байта
; копирование таблицы source в таблицу dest в обратном порядке
mov al,source
mov dest+3,al
mov al,source+1
mov dest+2,al
mov al,source+2
mov dest+1,al
mov al,source+3
mov dest,al
mov ah,4ch; выход в DOS
int 21h
cseg ends; конец сегмента кода
end our_prog; конец программы
Трансляция и компоновка программы
Листинг трансляции zad2.lst
1 – № строки
2 – относительные адреса команд от начала сегмента
3 – машинные коды команд
4 – исходный текст программы (мнемоническое представление)
1 2 3 4
1 0000 stack1 segment stack 'stack'; сегмент стека
2 0000 0A*(73 74 61 63 6B + db 10 dup ('stack '); резервирование места в памяти
3 20)
4 003C stack1 ends
6 0000 dseg segment; сегмент данных
7 0000 0A 14 1E 28 source db 10,20,30,40; исходная таблица
8 0004 04*(??) dest db 4 dup (?); место под результирующую таблицу
9 0008 dseg ends
11 0000 cseg segment; сегмент кода
12 assume cs: cseg, ds: dseg, ss: stack1; связь сегментов с
13; регистрами
14 0000 our_prog:; точка входа программы
15 0000 B8 0000s mov ax,dseg; инициализация регистра DS
16 0003 8E D8 mov ds,ax
18; присвоить элементам таблицы dest нулевые начальные значения,
20 0005 C6 06 0004r 00 mov dest,0; обнуление первого байта
21 000A C6 06 0005r 00 mov dest+1,0; обнуление второго байта
22 000F C6 06 0006r 00 mov dest+2,0; и т.п.
23 0014 C6 06 0007r 00 mov dest+3,0
25; копирование таблицы source в таблицу dest в обратном порядке
27 0019 A0 0000r mov al,source
28 001C A2 0007r mov dest+3,al
29 001F A0 0001r mov al,source+1
30 0022 A2 0006r mov dest+2,al
31 0025 A0 0002r mov al,source+2
32 0028 A2 0005r mov dest+1,al
33 002B A0 0003r mov al,source+3
34 002E A2 0004r mov dest,al
36 0031 B4 4C mov ah,4ch; выход в DOS
37 0033 CD 21 int 21h
39 0035 cseg ends; конец сегмента кода
40 end our_prog; конец программы
Symbol Name Type Value
??DATE Text "09/12/13"
??FILENAME Text "zad2 "
??TIME Text "16:14:58"
??VERSION Number 040A
@CPU Text 0101H
@CURSEG Text CSEG
@FILENAME Text ZAD2
@WORDSIZE Text 2
DEST Byte DSEG:0004
OUR_PROG Near CSEG:0000
SOURCE Byte DSEG:0000
Groups & Segments Bit Size Align Combine Class
CSEG 16 0035 Para none
DSEG 16 0008 Para none
STACK1 16 003C Para Stack STACK
Дата добавления: 2015-09-06; просмотров: 92 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Просмотреть содержимое регистров микропроцессора до начала выполнения задания 4 и после его завершения. | | | КАК БЫЛА НАПИСАНА ЭТА КНИГА — И ПОЧЕМУ |