Информатика: Методические указания к лабораторным работам. Часть 2. Ассемблер

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

21 страница (Word-файл)

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

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

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

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

к лабораторным работам по курсу "Информатика" для студентов 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. Оформить эту же программу в виде  Си-функции.  В  ка­честве исходных  данных  использовать значения глобальных пере­менных из головной Си-программы.  Результат работы поместить  в те же глобальные переменные. Ввод и вывод данных оформить в го­ловной программе.

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

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

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