Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная 5 (2 сем)

.docx
Скачиваний:
4
Добавлен:
18.07.2022
Размер:
75.62 Кб
Скачать

Санкт-Петербургский политехнический университет Петра Великого

Институт компьютерных наук и технологий

Высшая школа интеллектуальных систем и суперкомпьютерных технологий

ЛАБОРАТОРНАЯ РАБОТА №5

«Составление ассемблерной программы ввода символов»

по дисциплине «Архитектура вычислительных систем»

Выполнил

студент гр. 3530903/80001 А. В. Шильникова

Руководитель Н. М. Вербова

«___» __________ 2021 г.

Санкт-Петербург

2021

Цель работы: изучить элементы и принципы составления линейных программ.

Задачи:

1. Разработать программу на ассемблере, считывающую символы, вводимые с клавиатуры

2. Составить комментарий к программе

3. Ввести программу и проверить ее работу

Код, написанной программы в FASM:

Программа в WinHex:

Разбор кода:

«use16» – сообщает, что нужно генерировать 16-битный код.

«org 100h» – объясняет, что следующие команды и данные будут располагаться в памяти, начиная с адреса 100h. Дело в том, что при загрузке программы в память, DOS размещает в первых 256 байтах (с адресов 0000h — 00FFh) свои служебные данные.

B4 01

mov ah, 01h

Команда DOS - 01H: ввод с клавиатуры с эхо (отображением символа на экране). Считывает (ожидает) символ со стандартного входного устройства.

CD 21

int 21h

Вызов обработчика прерываний. Номер вектора

прерываний = 2116. Это прерывание служит главным входом большинства функций DOS.

B4 08

mov ah, 08h

Команда DOS - 08H: Консольный ввод без эха. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL.

CD 21

int 21h

Вызов обработчика прерываний. Номер вектора

прерываний = 2116. Это прерывание служит главным входом большинства функций DOS.

88 C2

mov dl, al

Команда 88 указывает, что это команда mov между регистрами, а за ней идет байт ModR/m.

C2 = 1100 0010

MOD: 11 – регистровая адресация

REG: 000 - источник al

R/M: 010 - приемник dl

B4 02

mov ah, 02h

Команда DOS - 02H: вывод на дисплей. Посылает символ из DL на стандартный вывод. обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции.

CD 21

int 21h

Вызов обработчика прерываний. Номер вектора

прерываний = 2116. Это прерывание служит главным входом большинства функций DOS.

B4 4C

mov ah, 4Ch

Копирование значения 4С16 в регистр ah, 4С – функция DOS завершения программы.

CD 21

int 21h

Вызов обработчика прерываний. Номер вектора

прерываний = 2116. Это прерывание служит главным входом большинства функций DOS.

Выводы:

При разработке данных программ удалось отработать посимвольное чтение из консоли, как с отображением, так и без него с помощью ассемблера. Чтение без отображения может пригодиться при создании интерфейса (чтобы меньше ресурсов тратить на перерисовку экрана).