Методические указания к лабораторным работам по курсу "Информатика"

Страницы работы

Содержание работы

Новосибирский  государственный технический университет

Кафедра автоматики

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к лабораторным работам по курсу "Информатика" для студентов 2 курса дневного отделения факультета автоматики

Часть 4. Ассемблер

Лабораторная работа N 1

ТЕХНОЛОГИЯ РАБОТЫ С ПРОГРАММАМИ НА ЯЗЫКЕ  АССЕМБЛЕРА В  СИСТЕМЕ ПРОГРАММИРОВАНИЯ QUICK-C. ЭЛЕМЕНТАРНЫЕ ОПЕРАЦИИ.

ТЕХНОЛОГИЯ РАБОТЫ С ПРОГРАММАМИ НА ЯЗЫКЕ  АССЕМБЛЕРА В  СИСТЕМЕ ПРОГРАММИРОВАНИЯ QUICK-C. ЭЛЕМЕНТАРНЫЕ ОПЕРАЦИИ.

1. Цель работы

Ознакомиться с технологией написания и отладки программ на языке Ассемблера.  Ознакомиться с простейшими операциями: пере­сылки, арифметические операции, поразрядные операции.

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

Современные системы  программирования на языке Си включают в себя и средства для написания и отладки ассемблерных программ -  как  в виде вставок в Си-программы,  так и в виде автономных модулей.  При этом вставка ассемблерных фрагментов в  программу на Си выполняется с помощью директивы _asm в двух вариантах:

вариант 1:     _asm mov ax, bx

                       _asm add ax, 33h

                       _asm and ax,l

вариант 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

end                           ;конец текста программы

При компиляции  и отладке этой программы следует правильно установить режим работы QC:

Options –Make - Compiler flags - Memory model - Small

Options – Make - Linker flags - Generate COM-file

Пример оформления этой программы в виде Си-функции

TITLE   HELLO

CR EQU 13;определение констант

LF ECU  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. Оформить  эту же программу в виде ассемблерного фраг­мента в головной программе.  Исходные данные и результат помес­тить в локальные переменные, описанные в головной программе.

Задания к лабораторной работе.

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Методические указания и пособия
Размер файла:
111 Kb
Скачали:
0