 
        
        Лабораторная 5 (2 сем)
.docxСанкт-Петербургский политехнический университет Петра Великого
Институт компьютерных наук и технологий
Высшая школа интеллектуальных систем и суперкомпьютерных технологий
ЛАБОРАТОРНАЯ РАБОТА №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. | 
Выводы:
При разработке данных программ удалось отработать посимвольное чтение из консоли, как с отображением, так и без него с помощью ассемблера. Чтение без отображения может пригодиться при создании интерфейса (чтобы меньше ресурсов тратить на перерисовку экрана).
