- •В.Ф. Гузик, с.М. Гушанский, в.А. Каляев, а.О. Пьявченко, а.И. Костюк основы программирования на языке «ассемблер»
- •1. Введение для кого написано это учебное пособие.
- •2. Предварительные сведения или азы, которые необходимо знать!
- •2.1. Ассемблер, что это такое?
- •2.2. Как писать ассемблерную программу, и какие программы нужны для ее последующей трансляции.
- •2.3. Системы счисления
- •2.4. Оперативная память.
- •2.5. Стек
- •Сегментация памяти.
- •Программная модель процессора.
- •Система команд.
- •Inc word ptr [bx]
- •2.9 Выделение памяти под переменные и массивы
- •2.10 Exe и com программы
- •2.11 Трансляция ассемблерной программы
- •Passes: 1
- •Примеры программирования на ассемблере.
- •3.1. Наша первая программа.
- •3.2. Работа с клавиатурой и экраном.
- •Прерывания dos для работы с клавиатурой.
- •Функция 7 прерывания int 21h
- •Функция 6 прерывания int 21h.
- •Функция 0ah прерывания int 21h.
- •Прерывания bios для работы с клавиатурой
- •1. Функция 0 прерывания int 16h
- •Входные параметры: нет
- •2. Функция 1 прерывание int 16h
- •Входные параметры: нет
- •Прерывания dos для работы с экраном
- •1. Функция 2 прерывания int 21h
- •2. Функция 9 прерывание int 21h
- •Прерывания bios для работы с экраном
- •Функция 1 прерывание int 10h
- •Функция 2 прерывание int 10h
- •Функция 3 прерывание int 10h
- •Функция 6 прерывание int 10h
- •Функция 9 прерывание int 10h
- •Функция 0eh прерывания int 10h
- •Задания к лабораторной работе «Клавиатура и экран»
- •Работа с гибкими дисками.
- •Inc nomber
- •3.4. Перехват прерываний и создание резидентных программ
- •Inst: mov ah, 9
- •Inst: mov ah,9
- •3.5. Работа со звуком.
- •Отладка программ.
- •Приложение
- •Сервисные прерывания dos.
- •Сервисные прерывания bios.
- •Int 10h, функция 07h. Инициализация или прокрутка окна вниз.
- •Int 10h, функция 08h. Чтение символа и атрибута в позиции курсора.
- •Int 10h, функция 09h. Запись символа и атрибута в позицию курсора.
- •Int 10h, функция 0ah. Запись символа в позицию курсора.
- •Int 10h, функция 0eh. Запись символа в режиме телетайпа.
- •Int 10h, функция 10h, подфункция 03h. Переключение бита «мерцание/яркость».
- •Int 10h, функция 13h. Запись строки в режиме телетайпа.
- •Int 15h, функция 86h. Программная задержка на заданное число микросекунд.
- •Int 16h, функция 00h (10h). Чтение символа с клавиатуры.
- •Int 16h, функция 01h (11h). Чтение символа с клавиатуры.
- •Int 16h, функция 02h (12h). Получение статуса клавиатуры.
- •Int 1ah, функция 0h. Число тиков таймера.
- •Коэффициенты пересчета для нот
- •Значение цветов в байте атрибута
- •Буфер клавиатуры.
- •Литература
- •7. Содержание
Inc nomber
; выводим название файла на экран, начиная с текущей позиции курсора
mov cx, 11 ; число повторений цикла (8 – название, 3 – расширение)
mov ah, 0eh ; функция
m4:
mov al, [si] ; в al заносим ASCII – код очередного выводимого символа
int 10h ; выводим символ, курсор сам сдвигается на позицию вправо
inc si ; теперь si адресует следующий выводимый символ
loop m4
; переводим курсор в начало следующей строки экрана
mov ah, 9
mov dx, offset mess1
int 21h
add si, 21 ; 11 мы уже прибавили к si в цикле при выводе названия файла
jmp m2 ; переходим к исследованию следующего элемента каталога
exit1:
cmp nomber, 0
jne exit ; были файлы, начинающиеся с Т
; выводим сообщение, что искомых файлов не было
mov ah, 9
mov dx, offset mess2
int 21h
exit:
; выводим сообщение, с просьбой нажать любую клавишу
mov ah, 9
mov dx, offset mess3
int 21h
mov ah, 7
int 21h ; ждем, когда клавишу нажмут
mov ah, 4ch
int 21h
code ends
end start
В заключение данного раздела приведем варианты заданий для лабораторной работы.
ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ
1. Программа анализирует диск и выводит на экран общее число кластеров на диске, число свободных кластеров, число занятых кластеров и число плохих кластеров.
2. Программа анализирует диск и выводит на экран общее количество файлов в корневом каталоге, количество системных файлов, количество скрытых файлов, количество файлов "только для чтения" и количество подкаталогов.
3. Программа выводит на экран список файлов из корневого каталога. При нажатии клавиши S программа сортирует этот список по алфавиту.
4. Программа выдает на экран цепочку кластеров, которую занимает заданный файл. Имя файла задается в программе с клавиатуры.
5. Найти самый большой файл в корневом каталоге и вывести на экран его имя и размер в килобайтах.
6. Поиск файла в корневом каталоге и, если он есть, выдача на экран номера его начального кластера. Имя файла задается в программе с клавиатуры.
7. Программа выводит на экран список файлов из корневого каталога. При нажатии клавиши U программа сортирует этот список по размеру
8. Вывести на экран названия всех файлов из корневого каталога и номера их начальных кластеров.
9. Программа выводит на экран список файлов (без подкаталогов) из корневого каталога, отмечая для каждого файла, является ли он скрытым или нет. При нажатии клавиши С все скрытые файлы становятся "открытыми" и наоборот, причем не только на экране, но и на диске.
10. После запуска программа выводит на экран меню: "Удалить" и "Восстановить". Производится выбор одного из пунктов этого меню, например путем нажатия соответствующей клавиши. Затем программа запрашивает ввод буквы и, если был выбран пункт "Удалить", удаляет из корневого каталога все файлы, имя которых начинается с этой буквы. Если был выбран пункт "Восстановить, программа восстанавливает в корневом каталоге все удаленные файлы, используя для этого введенную букву.
11. Определить есть ли в корневом каталоге файлы с расширением EXE и, если таковые имеются, вывести на экран их список.
12. Найти в корневом каталоге самый "старый" файл и вывести на экран его имя и дату создания.