
Лабораторная работа №5
Простейшие программы на Ассемблере.
Правила использования инструкций простейших арифметических операций
Инструкция |
Машинный код |
Результат |
сложения ADD AX,BX |
01D8 |
AX |
вычитания SUB AX,BX |
29D8 |
AX |
умножения BX на AX – MUL BX |
F7E3 |
DX:AX (старшие: младшие биты) |
деления DX:AX на BX – DIV BX |
F7F3 |
AX- результат DX- остаток |
Задание 1.
Выполните арифметические действия над шестнадцатеричными числами
D2CF+A8=
2135+AF12=
BCAD-3124=
4561-345A=
FAx35=
FFxFF=
2346/AC= остаток=
EDFA/AD= остаток=
Поместите в отчет результаты вычислений
Способ вызова обработчика прерываний INT21
прерывание INT 21h |
CD21 |
Вызов обработчика прерываний. |
Параметры для обработчика прерываний, вызываемого инструкцией INT 21, содержатся в РОН: AH- номер прерывания (старший байт AX)
DL- параметр для прерывания (младший байт DL)
Задание 2.
Используя прерывание 21, выведите на экран символы F, 3, d, 9, >,(.
Для определения кода ASCII соответствующего символа используйте таблицу в приложении.
Прерывание INT 20.
Прерывание INT20 –завершение работы подпрограммы и передача управления вызвавшей программе.
прерывание INT 20h |
CD20 |
Завершение программы. |
Деассемблирование.
Инструкция отладчика U <адрес> выводит инструкции, записанные в память, начиная с указанного адреса, в формате:
<сегмент>:<смещение> <код инструкции> <команда ассемблера> <операнды>
Задание 3.
Введите в память начиная со смещения 100 программу из 2 строк, которая
выведет на экран символ A и завершит выполнение инструкцией INT 20.
Перед выполнением программы (команда отладчика G 104) проверьте правильность введенных кодов, выполнив деассемблирование.
Поместите результат деассемблирования в отчет
Ассемблирование
Инструкция отладчика A <адрес> позволяет вводить команды ассемблера, автоматически размещая их в соответствующем числе ячеек памяти, начиная с указанного адреса.
Задание 4.
Введите начиная с адреса 100 программу вывода на экран символа D:
INT 21
INT 20
Не забудьте установить значения регистров AH, DL
Поместите результат деассемблирования и значения регистров перед исполнением в отчет.
Команда пересылки данных.
Инструкция |
Машинный код |
Результат |
MOV AX,BX |
89C3 |
BX копирует в AX |
MOV AH,DL |
88D4 |
DL копирует в AH |
MOV AH,D2 |
B402 |
Загружает число D2 в :AH |
Задание 5.
Составьте и введите в память начиная со смещения 100 программу, которая загрузит в регистры соответствующие коды и выведет на экран символ @, после чего завершит выполнение и передаст управление отладчику.
Выполните программу
Поместите результат деассемблирования в отчет.
Файл
Команда отладчика N <имя.расширение>позволяет создать файл с определенным именем.
Команда W позволяет записать число байт, указанное в CX, на диск в поименованный файл ( в текущий каталог). BX при этом должен быть установлен в 0.
Задание 6.
Запишите на диск в файл ch.com программу вывода на экран символа @.
При выполнении из командной строки DOS программа должна выводить на экран символ @
Программа вывода на экран строки символов
Для того, чтобы составить программу вывода строки из памяти, нужно воспользоваться прерыванием 09h. Эта функция DOS выводит на экран последовательность символов до появления символа $ (24h). Смещение начала строки в сегменте данных указывает число в регистре DX.
Задание 7
Введите строку символов «Hello, Dolly!$» в память, начиная с со смещения 200, введите в память начиная со смещения 100 программу, которая загрузит в регистры коды прерывания 21 09, адрес строки в памяти (200).
При помощи команды деассемблирования проверьте введенные коды программы.
Для проверки правильности введенных кодов символов строки используйте команду отладчика D <адрес>. Эта команда выводит на экран данные в формате
<адрес-сегмент><адрес-смещение><строка кодов><строка символов>.
Определите длину программы (начиная со смещения 100) вместе со строкой символов (до первого символа после $).
Запишите программу в файл str.com
Проверьте ее работу, запустив из командной строки
Перешлите файлы ch.com и str.com вместе с файлом отчета.