
лабораторная работа / лабораторные работы по ASSAMBLER / отчет1
.docДнепропетровский национальный университет
Радиофизический факультет
Кафедра автоматических систем обработки информации
Отчет
по лабораторной работе №1
по курсу «Программирование
на языке Ассемблер»
Выполнил студент группы РС-05-1
Калиновский Константин
Днепропетровск
2006
Содержание
-
Краткие теоретические сведения
-
Текст задания (вариант №9)
-
Листинг программы
-
Протокол работы программы на компьютере
-
Текст файла диагностических сообщений при компиляции программы
-
Дамп памяти переменных, значения которых нельзя распечатать на экран из отладчика
-
Выводы о результатах работы
1. Краткие теоретические сведения
Существуют несколько стандартных типов данных, поддерживаемых ассемблером для процессоров Intel 8086/8088. Среди них – строковый тип и целочисленный.
Все данные описываются в сегменте данных программы. При компиляции каждый символ строки заменяется соответствующим ASCII-кодом. Так что можно задать строку непосредственно набором соответствующих ASCII-кодов. Числа могут задаваться в двоичной(в конце числа ставится b - binary), восьмеричной(в конце числа q), десятичной (в конце числа ничего не ставится или ставится d), и шестнадцатиричной системах счисления(h). При компиляции программы все числа переводятся в шестнадцатиричную систему счисления.
Процесс компиляции программы на ассемблере заключается в двух шагах: трансляция программы(TASM) и компоновка программы (TLINK). В результате образуется EXE или COM файл.
2. Текст задания
Определить пять типов приведенных данных. Используя прерывания DOS (VM DOS), распечатать значения данных на экран монитора. Для чисел их шестнадцатиричные эквиваленты независимо от значения.
Вариант №9
Переменные: длина{значение}
Var1: S{Ф.И.О., гр.}
Var2: 8{23eeh}
Var3: 1{11100111b}
Var4: 4{308134049}
Var5: 10{1ed89efa23b74b60a43eh}
3. Листинг программы
masm
model small
.stack 100h
.data
var1 db 'Kalinowskij Konstantin Aleksandrovich RS-05-1','$'
var2 dq 23eeh
var3 db 11100111b
var4 dd 308134049d
var5 dt 01ed89efa23b74b60a43eh
.code
start:
mov ax, @data
mov ds, ax
mov dx, offset var1
mov ah, 09h
int 21h
mov ax, 4c00h
int 21h
end start
4. Протокол работы программы на компьютере
В качестве протокола работы программы выведем содержимое MAP-файла, который образуется в результате компоновки программы.
Start Stop Length Name Class
00000H 00010H 00011H _TEXT CODE
00020H 00064H 00045H _DATA DATA
00070H 0016FH 00100H STACK STACK
Program entry point at 0000:0000
5. Текст файла диагностических сообщений
при компиляции программы
Assembling file: 1.ASM
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 473k
6. Дамп памяти переменных,
значения которых нельзя распечатать на экран
Для
отображения дампа памяти воспользуемся
стандартным приложением TASM
TD.EXE.
(см. рис.1). Так же для отображения дампа
можно воспользоваться встроенным
отладчиком MS-DOS
debug.
Для этого в сеансе MS-DOS
запустим нашу программу, после чего
наберем в командной строке \debug
и после знака запроса (-) введем d
(сокращение от debug).(см
рис 2)
Рис. 1
0BD9:0000 CD 20 FF 9F 00 9A EE FE-1D F0 4F 03 26 06 8A 03 . ........O.&...
0BD9:0010 26 06 17 03 26 06 C7 04-01 01 01 00 02 FF FF FF &...&...........
0BD9:0020 FF FF FF FF FF FF FF FF-FF FF FF FF D3 05 4E 01 ..............N.
0BD9:0030 FD 0A 14 00 18 00 D9 0B-FF FF FF FF 00 00 00 00 ................
0BD9:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0BD9:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
0BD9:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 .....
0BD9:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........
Рис. 2
Дамп памяти позволяет нам проследить, произошла ли инициализация (выделение памяти в компьютере) некоторых данных. На примере нашей программы, когда используются прерывания для символьного типа, очень удобно использовать дамп для отслеживания инициализации численных данных.
7. Выводы о результате работы
В ходе данной работы были определены пять типов данных. Используя прерывания MS-DOS распечатали данные на экран. Стандартное прерывание
mov ah, 09h
int 21h
используется для вывода на экран строки и выхода в ДОС. Поэтому невозможно распечатать на экран числа. Для прослеживания выделения памяти распечатаем дамп памяти (только для переменных, которые нельзя вывести на экран). Также распечатаем листинг программы и текст диагностических сообщений при компиляции программы.