- •Охарактеризовать язык программирования низкого уровня и его особенности
- •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. Объяснить их назначение и использование.
20) Объяснить состав и основные особенности использования арифметических команд и неявное использование регистров в них.
Команды ADD и SUB выполняют сложение и вычитание байтов или слов, содержащих
двоичные данные. Вычитание выполняется по методу сложения с отрицательным числом,
представленным в дополнительном коде. Во всем, кроме первого шага, операции сложения
и вычитания идентичны. Поскольку прямой типа операции память-память не существует, эта операция выполняется
через регистр. В следующем примере к содержимому слова WORDB прибавляется
содержимое слова WORDA, описанных как DW:
Операция умножения для без знаковых данных выполняется командой MUL, для знаковых –
IMUL (Integer Multiplication – умножение целых чисел). Ответственность за выбор
подходящей команды умножения лежит на самом программисте.
Умножение байта на байт: Множимое находится в регистре AL, множитель – в байте
памяти или однобайтовом регистре. После умножения произведение находится в регистре
AX. Операция игнорирует и стирает любые данные, которые находились в регистре AH. Знаковое умножение: команда IMUL
Команда IMUL (Integer MULtiplication – умножение целых чисел) умножает знаковые числа.
Первый пример команды IMUL умножает шест. 80 (отрицательное число) на шест. 40
(положительное число). Произведение – шест. E000 – получается в регистре AX. Используя
те же данные, команда MUL дает в результате шест. 2000, так что можно видеть разницу в
использовании команд MUL и IMUL. Команда MUL рассматривает шест. 80 как +128, а
команда IMUL – как -128. В результате умножения -128 на +64 получается -8192 или шест.
E000.
Второй пример команды IMUL умножает шест. 8000 (отрицательное значение) на шест. 2000
(положительное значение). Произведение – шест. F0000000 – получается в регистрах DX:AX
и представляет собой отрицательное значение.
Деление
Операция деления для без знаковых данных выполняется командой DIV, a для знаковых –
IDIV. Ответственность за подбор подходящей команды лежит на программисте. Существуют
два основных вида операции деления:
Деление слова на байт: Делимое находится в регистре AX, делитель – в байте памяти или
однобайтовом регистре. После деления остаток получается в регистре AH, частное – в AL.
Деление двойного слова на слово: Делимое находится в регистровой паре DX:AX,
делитель – в слове памяти или регистре. После деления остаток получается в регистре DX,
частное – в регистре AX. Частное в одном слове допускает максимальное значение 32767
(шест. FFFF) для беззнакового деления и +16383 (шест. 7FFF) для знакового.
Беззнаковое деление: команда DIV
Команда DIV делит беззнаковые числа. На рис. 5 в процедуре D10DIV дано четыре примера
деления: слово на байт, байт на байт, двойное слово на слово и слово на слово. Первый
пример команды DIV делит шест. 2000 (8092) на шест. 80 (128). В результате остаток 00
получается в регистре AH, частное – шест. 40 (64) – в регистре AL.
Второй пример команды DIV выполняет прежде расширение байта BYTE1 до размеров слова.
Так как здесь предполагается беззнаковая величина, то в примере левый бит регистра AH
равен нулю. В результате деления остаток – шест. 12 – получается в регистре AH, частное – шест. 05 – в регистре AL.
Знаковое деление: команда IDIV
Команда IDIV (Integer DIVide) выполняет деление знаковых чисел. На рис. 5 в процедуре
E10IDIV используются те же четыре примера деления, что и в процедуре D10DIV, но вместо
команд DIV записаны команды IDIV. Первый пример команды IDIV делит шест. 2000
(положительное число) на шест. 80 (отрицательное число). Остаток от деления – шест. 00
получается в регистре AH, а частное – шест. C0 (-64) – в регистре AL. Команда DIV,
используя те же числа, генерирует частное +64.
