- •V.1 Язык программирования asm-51
- •2. Структурное программирование на языке Assembler
- •3. Использование сегментов в ассемблере
- •4. Программы и подпрограммы. Связь по управлению и по данным
- •5. Прерывания и их обработка.
- •Контроллер прерываний и микропроцессоры 80х86.
- •6. Сопроцессор и его программирование
- •7. Виртуальная память
- •9. Лабораторные работы
- •Лабораторная работа № 1
- •Изучение среды программирования turbo assembler
- •И отладчика программ debuGger
- •Лабораторная работа № 2. Программирование циклов и условий. Работа с массивами.
- •Лабораторная работа № 3. Программы и подпрограммы. Связь по управлению и по данным
- •Лабораторная работа № 4. Сопроцессор и его программирование
- •Лабораторная работа 5 Использование средств bios на языке Ассемблер
- •Краткие сведения о прерываниях bios
9. Лабораторные работы
Лабораторная работа № 1
Изучение среды программирования turbo assembler
И отладчика программ debuGger
Из программы FAR MANAGER или TOTAL COMMANDER, а можно и непосредственно из WINDOWS, требуется запустить программу ta.exe, расположенную в папке, содержащей файлы, необходимые для работы ТурбоАссемблера. Открывается окно турбосреды, аналогичное тому, какое имеют языковые среды ПАСКАЛЬ или СИ.
Вход в верхнее меню осуществляется с помощью клавиши F10.
Необходимо выполнить команду FILE – NEW, чтобы начать вводить новую программу.
После ввода небольшой тестовой программы её необходимо откомпилировать и устранить синтаксические ошибки (пункт меню COMPILE – COMPILE TO OBJ). Ниже приводится пример такой программы, складывающей два числа.
Одной из самых грубых ошибок начинающего программиста на языке Ассемблер является нежелание (или непонимание необходимости) правильно писать вход и выход из программы, а также соблюдать все правила её обрамления. Из-за этого, во-первых, может проявиться неправильный доступ к данным (обычно обнаруживаемый синтаксическим анализатором), а главное – сбой при завершении программы. Категорически рекомендуется как можно чаще сохранять вводимый текст, чтобы с минимальными потерями продолжать работу после «вылета» программы. Придерживайтесь приводимого ниже синтаксического образца. Первые 5 (пять) команд программы, и самую последнюю, следует писать буквально, так, как приведено в примере. Они называются прологом и эпилогом программы, и даются согласно стандартному соглашению о связях для операционной системы MS/DOS (пролог и эпилог для WINDOWS пишется совсем по-другому, но, во-первых, эти понятия есть и там, а во-вторых, научитесь сначала писать простые программы). Слова, стоящие в строках примера после символа «;» (точка с запятой), являются комментариями, и их набивать не требуется (хотя и не запрещается).
Когда программа набита, сохранена, и все синтаксические ошибки исправлены, следует перейти в отладчик DEBUG. В нём необходимо сначала открыть окно отображения регистров и флагов (пункт верхнего меню VIEW – REGISTERS), а затем оттащить его (мышкой, или с помощью CTRL-F5) в сторону, чтобы не загораживало текст программы. Второе используемое окно для отображения значений переменных (WATCHS) уже открыто, и находится внизу. В нём можно проставить имена тех данных, изменения которых требуется проследить.
Далее, нажимая клавишу F7, выполнить каждую команду программы до её логического конца.
; Самая первая программа для трассировки
;
assume cs:mycode,ds:mydate,ss:mystack
mycode segment para
start: push ds ; Эта и следующие 4 команды
xor ax,ax ; называются прологом.
push ax
mov ax,seg mydate
mov ds,ax
mov ax,x ; Операнд1 помещается в регистр AX
add ax,y ; и складывается с Операнд2.
mov z,ax ; результат пишется в переменную z.
retf ; завершение программы (эпилог).
mycode ends
mydate segment para
x dw 5
y dw 4
z dw 0
mydate ends
mystack segment para stack ‘stack’
dw 100 dup (?) ; резервируется место для стека.
mystack ends
end start
Протранслировав программу, и выполнив её покомандно в отладчике, следует выполнить повторную инициализацию программы с помощью пункта меню RUN – PROGRAM RESET, после чего обратиться к преподавателю с целью её показа.
Модифицировать программу так, чтобы она вычисляла:
-
Произведение двух чисел;
-
Частное и целочисленный остаток от деления;
-
Побитовые операции «Не», «Или», «И», «Исключающее Или»;
-
Операции сдвига;
-
Преобразования цифрового символа в двоичное число.