Скачиваний:
69
Добавлен:
11.02.2014
Размер:
76.29 Кб
Скачать

Днепропетровский национальный университет

Радиофизический факультет

Кафедра автоматических систем обработки информации

Отчет

по лабораторной работе №1

по курсу «Программирование

на языке Ассемблер»

Выполнил студент группы РС-05-1

Калиновский Константин

Днепропетровск

2006

Содержание

  1. Краткие теоретические сведения

  2. Текст задания (вариант №9)

  3. Листинг программы

  4. Протокол работы программы на компьютере

  5. Текст файла диагностических сообщений при компиляции программы

  6. Дамп памяти переменных, значения которых нельзя распечатать на экран из отладчика

  7. Выводы о результатах работы

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

используется для вывода на экран строки и выхода в ДОС. Поэтому невозможно распечатать на экран числа. Для прослеживания выделения памяти распечатаем дамп памяти (только для переменных, которые нельзя вывести на экран). Также распечатаем листинг программы и текст диагностических сообщений при компиляции программы.