Новосибирский государственный технический университет
Кафедра автоматики
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторным работам по курсу "Информатика" для студентов 2 курса дневного отделения факультета автоматики
Часть 2. Ассемблер
Новосибирск – 1996
Лабораторная работа N 1
ТЕХНОЛОГИЯ РАБОТЫ С ПРОГРАММАМИ НА ЯЗЫКЕ АССЕМБЛЕРА В СИСТЕМЕ ПРОГРАММИРОВАНИЯ QUICK-C. ЭЛЕМЕНТАРНЫЕ ОПЕРАЦИИ.
1. Цель работы
Ознакомиться с технологией написания и отладки программ на языке Ассемблера. Ознакомиться с простейшими операциями: пересылки, арифметические операции, поразрядные операции.
2. Краткие теоретические сведения
Современные системы программирования на языке Си включают в себя также средства для написания и отладки ассемблерных программ - как в виде вставок в Си-программы, так и в виде автономных модулей. При этом вставка ассемблерных фрагментов в программу на Си выполняется с помощью директивы _asm в двух вариантах:
вариант 1: _asm mov ax, bx
_asm add ax, 33h
_asm and ax,1
вариант 2: _asm
{
movax, bx
add ax, 33h
and ax, 1
}
При этом, естественно, должны соблюдаться соглашения по использованию регистров, принятые для данного компилятора и данной модели памяти.
Часто ассемблерные подпрограммы оформляются в виде автономного программного модуля. В этой случае они размещаются в файле с расширением .asm и могут компилироваться и отлаживаться отдельно. Для упрощения программирования используется набор встроенных псевдокоманд.
Пример автономной программы на Ассемблере:
TITLE HELLO
CR EQU 13 ;определение констант
LF EQU 10
.MODEL TINY;генерировать .СОМ - файл
.STACK lOOh ;стек 256 байт
.DATA ;начало сегмента данных
msg DB "Hello, world.", CR, LF, "$" ; текст для вывода
.CODE ;начало кодовогосегмента
.STARTUP;инициализировать сегмент
данных и задать SS=DS
mov ah, 9h ;обращение к DOS, функция 9
mov dx, OFFSET msg ;загрузить в DS смещение
;строки (сегмент уже в DS)
int 21.h ;вывести строку
.EXIT 0 ;выход с кодом возврата 0
END ;конец текста программы
При компиляции и отладке этой программы следует правильно установить режим работы QC:
Options –Make - Compiler flags - Memory model - Small
Options – Make - Linker flags - Generate COM-file
Пример оформления этой программы в виде Си-функции
TITLE HELLO
CR EQU 13;определение констант
LF EQU 10
.MODEL SMALL,С
.DATA ;начало сегмента данных
msg DB "Hello, world.", CR, LF, "$" ; текст для вывода
.CODE ;начало кодового сегмента
hello PROC NEAR, С ;начало процедуры
mov ah, 9h ;обращение к DOS, функция 9
mov dx, OFFSET msg ;загрузить в DS смещение
;строки (сегмент уже в DS)
int 21h ;вывести строку
ret ;возврат из процедуры
hello ENDP
Перед компиляцией следует отключить режим генерации СОМ-файла (см. выше), поскольку QC не поддерживает эту возможность.
Пример этого же фрагмента в виде ассемблерной вставки:
char msg[] = "Hello, world.\r\n$ ";
_asm
{
mov ah, 9h ;обращение к DOS, функция 9
movdx, OFFSET msg ;загрузить в DS смещение
строки (сегмент уже в DS)
int 21h ;вывести строку
}
При использовании таких ассемблерных вставок желательно сохранять в стеке и затем восстанавливать используемые регистры.
3. Методические указания
При выполнении работы можно использовать регистры AX, BX, CX, DX и регистровый и непосредственный методы адресации. Для задания констант используйте директиву EQU.
При пошаговой отладке программы и подпрограмм контролировать содержимое регистров можно в окне Registers, которое включается с помощью цепочки команд:
View - Windows - Register
Длясвязи ассемблерных подпрограмм с Си следует использовать директивы EXTRN и GLOBAL.
4. Порядок выполнения работы
4.1. Написать автономную программу на Ассемблере, выполняющую арифметические и логические операции над словами и байтами по вариантам согласно заданиям. Исходные данные задать с помощью директивы EQU. Результаты работы поместить в ячейки памяти. Проконтролировать правильность работы программы в пошаговом режиме.
4.2. Оформить эту же программу в виде Си-функции. В качестве исходных данных использовать значения глобальных переменных из головной Си-программы. Результат работы поместить в те же глобальные переменные. Ввод и вывод данных оформить в головной программе.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.