- •Охарактеризовать язык программирования низкого уровня и его особенности
- •03. Объяснить понятие сегмента памяти. Описать основные сегменты, используемые в программах, и соответствующие сегментные регистры
- •04. Описать основные регистры: сегментные, общего назначения, указатели, индексные, признаков. Охарактеризовать их использование
- •7)Объяснить назначение меток, форму их записи и особенности использования.
- •05. Описать и объяснить обобщенные форматы машинных команд и формат кодирования команд в языке ассемблера.
- •Обобщенные форматы машинных команд
- •Трехадресные команды:
- •Двухадресные команды:
- •Одноадресные команды:
- •06. Объяснить назначение комментариев, форму их записи и особенности использования.
- •8)Объяснить назначение операндов, форму их записи и особенности использования.
- •09. Рассказать о назначении директивы page и ее использовании.
- •10. Рассказать о назначении директивы title и ее использовании.
- •11. Рассказать о назначении директивы segment и ее использовании.
- •12. Рассказать о назначении директивы proc и ее использовании.
- •13. Рассказать о назначении директивы assume и ее использовании.
- •14. Рассказать о назначении директивы end и ее использовании.
- •15)Описать основные директивы определения данных и охарактеризовать их использование.
- •16) Описать и объяснить формы инициализации программ типа .Exe.
- •17)Описать и объяснить основные этапы обработки программ: ассемблирование, компоновку.
- •18) Описать особенности работы ассемблера
- •19. Описать и объяснить порядок разработки программы.
- •20) Объяснить состав и основные особенности использования арифметических команд и неявное использование регистров в них.
- •21. Объяснить состав и основные особенности использования логических команд.
- •22. Объяснить состав и основные особенности использования команд безусловного и условных переходов
- •23. Объяснить назначение регистра признаков и описать основные признаки в его составе.
- •24. Объяснить состав и основные особенности использования команд организации циклов и неявное использование регистров в них.
- •25. Описать и объяснить понятие множества, подмножества, способы задания множеств.
- •27. Описать и объяснить понятие универсума, формы задание универсума, принцип адресации элементов множества.
- •28. Описать понятие вектора принадлежности, объяснить использование вектора принадлежности для выполнения операций.
- •29. Описать и объяснить понятие массива, размера и размерности массива. Описать состав и особенности основных операций над массивами.
- •30. Описать и объяснить понятие таблицы, принципы адресации элементов таблицы.
- •31. Объяснить понятие табличного поиска, принципы организации табличного поиска.
- •32. Объяснить понятие сортировки таблицы и вектора, принцип работы алгоритма пузырьковой сортировки
- •33. Объяснить понятие символьной цепочки. Описать состав и особенности команд для работы с цепочками.
- •34. Описать неявное использование регистров в командах для работы с цепочками, объяснить назначение префикса повторения команды
- •36. Описать принципы организации внешних подпрограмм. Объяснить назначение директив extrn и public.
- •37. Рассказать об организации связи программы с подпрограммой, о способе передачи данных через стек.
- •38)Описать особенности организации вложенных и рекурсивных подпрограмм.
- •39)Разъяснить схему работы команды прерывания int. Охарактеризовать ее назначение и использование.
- •40)Описать принципы использования прерывания бсвв int 10h для установки курсора.
- •41)Описать принципы использования прерывания бсвв int 10h для очистки экрана.
- •42)Описать принципы использования прерывания бсвв int 13h, описать его основные функции и выполняемые операции.
- •Int 13h: Дисковый ввод-вывод.
- •43) Описать принципы использования прерывания dos int 21h для организации вывода на экран.
- •44. Описать принципы использования прерывания dos int 21h для организации ввода с клавиатуры.
- •45. Объяснить понятие и назначение портов и принципы работы с ними. Описать назначение и использование команд in и out.
- •46. Объяснить организацию и применение макрокоманд без параметров.
- •47. Объяснить организацию и применение макрокоманд с параметрами.
- •48) Описать и охарактеризовать дополнительные средства макрокоманд: комментарии, директиву local. Объяснить их использование.
- •49Объяснить использование макрокоманд вложенных и библиотечных
- •50)Описать и охарактеризовать дополнительные средства макрокоманд – директивы include и purge. Объяснить их назначение и использование.
15)Описать основные директивы определения данных и охарактеризовать их использование.
Соответственно, в языке ассемблера существует 5 (!) директив для определения данных:
DB (define byte) – определяет переменную размером в 1 байт;
DW (define word) – определяет переменную размеров в 2 байта (слово);
DD (define double word) – определяет переменную размером в 4 байта (двойное слово);
DQ (define quad word) – определяет переменную размером в 8 байт (учетверённое слово);
DT (define ten bytes) – определяет переменную размером в 10 байт.
Все директивы могут быть использованы как для объявления простых переменных, так и для объявления массивов. Хотя для определения строк, в принципе, можно использовать любую директиву, в связи с особенностями хранения данных в оперативной памяти лучше использовать директиву DB.
Синтаксис директив определения данных следующий:
<имя> DB <операнд> [, <операнд>]
Операнд задаёт начальное значение переменной. В качестве операнда может использоваться число, символ или знак вопроса, с помощью которого определяются неинициализированные переменные.
Выражение может содержать константу, например:
FLD1 DB 25
или знак вопроса для неопределенного значения, например
FLDB DB ?
16) Описать и объяснить формы инициализации программ типа .Exe.
Существуют два основных типа загрузочных программ: EXE и COM. Рассмотрим требования к
EXE-программам. Для инициализации программы DOS предъявляет четыре требования:
1) указать ассемблеру, какие сегментные регистры должны соответствовать сегментам;
2) сохранить в стеке адрес, находящийся в регистре DS, в начале выполнения программы;
3) записать в стек нулевой адрес;
4) загрузить в регистр DS адрес сегмента данных.
Выход из программы и возврат в DOS сводится к использованию команды RET. Образец инициализации и выхода из программы:
CODESG SEGMENT PARA 'CODE' BEGIN PROC FAR
1. ASSUME CS:CODESG,DS:DATASG,SS:STACKG
2. |
|
PUSH |
DS |
;Запись DS в стек |
3. |
|
XOR |
AX,AX |
;Установка нуля в AX |
|
|
PUSH |
AX |
;Запись нуля в стек |
4. |
|
MOV |
AX,DATASG |
;Занесение адреса |
|
|
MOV |
DS,AX |
; DATASG в DS |
|
|
. |
|
|
|
|
. |
|
|
|
|
. |
|
|
5. |
|
RET |
|
;Возврат в DOS |
|
BEGIN |
ENDP |
|
|
|
CODESG |
ENDS |
|
|
|
|
END |
BEGIN |
|
Пояснения
(1) ASSUME – директива, которая устанавливает соответствие между конкретными сегментами и сегментными регистрами. В примере DATASG и STACKSG не определены;
обычно они представляются так:
-
STACKSG
SEGMENT
PARA
STACK Stack
'Stack'
DATASG
SEGMENT
PARA
'Data'
Ассоциируя сегменты с сегментными регистрами, ассемблер может определить смещения к отдельным областям в каждом сегменте. Так, каждая команда в сегменте кодов имеет определенную длину: первая команда имеет смещение 0, если это двухбайтовая команда, то вторая команда будет иметь смещение 2, и пр.
(2) Загрузочному модулю в памяти непосредственно предшествует 256-байтовая (шестнадцатеричное 100) область, называемая префиксом программного сегмента (ППС, PSP). Программа загрузчика использует регистр DS для установки адреса начальной точки ППС. Пользовательская программа должна сохранить этот адрес, поместив его в стек. Позже команда RET использует этот адрес для возврата в DOS.
(3) Система требует, чтобы следующее значение в стеке было нулевым адресом (точнее, смещением). Для этого команда XOR (или SUB) очищает регистр AX, а команда PUSH заносит это значение в стек.
(4) Загрузчик DOS устанавливает правильные адреса стека в регистре SS и сегмента кодов в регистре CS. Поскольку программа загрузчика использует регистр DS для своих целей,
нужно инициализировать регистр DS, как показано в примере.
(5) Команда RET обеспечивает выход из программы и возврат в DOS, используя адрес, записанный в стек в начале программы командой PUSH DS. Другим обычно используемым способом выхода служит команда INT 20H.
