
- •2. Работа с файлами с использованием дескриптора файла, стандартные файлы-устройства.
- •3. Косвенный межсегментный переход, формат команды, адресация перехода, алгоритм команды, флаги, пример использования команды.
- •2. Структура байта атрибута, назначение атрибутов файла.
- •3. Команда дальнего возврата, формат команды, адресация перехода,
- •2. Организация главной программы как дальней процедуры.
- •3 Команда test, алгоритм команды, формируемые флаги, формат, пример использования
- •2. Инициализация сегментных регистров при запуске exe-файла.
- •3. Команды арифметического сдвига, алгоритмы команды, флаги, формат, пример использования.
- •2. Параметр объединения at, пример использования.
- •3. Команды циклического сдвига, алгоритмы команды, флаги, формат, пример использования.
- •2.Параметры директивы сегмент public и stack. Условия их применения.
- •3 Команды циклического сдвига через флаг переноса, алгоритмы команд, флаги, формат, пример использования.
- •2. Использование командной строки при запуске exe-файла.
- •2. Организация «оператора case» на ассемблере с использованием внутрисегментного косвенного перехода.
- •2.Порядок передачи параметров в процедуру(функцию) на паскале. Привести пример программы, нарисовать стек процедуры (функции).
2. Использование командной строки при запуске exe-файла.
3. Функция ввода ah=3fh int 21h.Алгоритм работы,пример использования.
Ввод с клавиатуры
AH=3fh
mov AH,3Fh
mov BX,0
mov CX,5
lea DX,IOA
int 21h
je err
При вводе символов с клавиатуры они отображаются с текущей позиции
курсора. Количество набранных символов не ограничивается числом в CX, на-
пример, на клавиатуре набрано(на экране отображено)
Дескриптор <Enter>
После нажатия <Enter> строка помещается в системный буфер ввода(область
оперативной памяти). Символы 13, 10 завершают строку.
┌──────────┬──┬──┐
│Дескриптор│13│10│
└──────────┴──┴──┘
Первые 5 символов переписываются из буфера ввода в область IOA,где
записана строка "Дескр". Буфер ввода не сбрасывается. При повтореном вы-
зове функции будет осуществляться чтение из буфера ввода(обращения к
клавиатуре и задержки выполнения программы не будет). В поле IOA занесет-
ся строка "иптор".
При первом и втором обращении к функции в AX возвращается число 5.
В буфере осталось еще 2 символа(13,10). При третьем обращении к функции
считываются эти символы, а в AX возвращается число 2.
Максимальное количество символов, которые набраны на клавиатуре и
отображаются на экране равно 127. При 128 нажатии клавиши выдается зву-
ковой сигнал. При нажатии Enter в системный буфер ввода сбрасываются 127
символов, а за ними добавляются символы 13, 10.
Билет 8.
2. Организация «оператора case» на ассемблере с использованием внутрисегментного косвенного перехода.
Пример. Реализация оператора Case(программного дешифратора) на
ассемблере с использованием команды CALL.
case i of
i - номер команды
1: PP1
2: PP2
--------
15: PP15
end;
dseg segment
adr dw PP1,PP2,...,PP15
┌───────┬───────┬───┬────────┐
поле adr │адр PP1│адр PP2│...│адр PP15│
└───────┴───────┴───┴────────┘
;{формирование номера подпрограммы NPP}
mov SI,NPP
sub SI,1 ; Определение смещения в поле Adr.
shl SI ;
CALL Adr[SI] ;Прямая адресация с индексированием определяет
;слово в памяти, в котором содержится адрес под-
;программы с номером NPP.
Пример реализации программного дешифратора с использованием команды
JMP.
Пусть в программе используются метки M1,M2,...,M15. При наличии
adr dw M1,m2,...,M15
можно организовать case командой
jmp adr[SI].
3. Функция создания файла ah=3ch int 21h.Алгоритм работы, пример использования.
Создание файла.
mov AH,3Ch
mov CX,атрибут
lea DX,file_name
int 21h
jc err
mov file_num,AX
При создании файла он открывается для записи и чтения, т.е. до
закрытия в файл можно писать и читать из него. Для работы с файлом ис-
пользуется системная переменная - указатель. Указатель имеет такое же
назначение как курсор на экране. Позиции файла это байты, которые про-
нумерованы с нуля. С позиции указателя осуществляются операции чтения/
записи. После создания файл пустой, его указатель равен 0. Запись пер-
вого байта переводит указатель в позицию 1 и т.д. До закрытия файла
можно прочитать записанную информацию, для чего указатель нужно пере-
местить назад. Это выполняется функцией SEEK(эта функция должна быть
известна из Паскаля).
Билет 9.