Вы находитесь на странице: 1из 2

1) #MAKE_COM# - самый старый и самый простой формат исполнимого файла.

Такие файлы загружаются с префиксом 100h (256 байтов).

2) Структура ассемблерной программы


Каждый язык программирования имеет свои особенности. Язык ассемблера - не
исключение. Традиционно первая программа выводит приветственное сообщение на
экран „Hello World‟.
В отличие от многих современных языков программирования в ассемблерной
программе каждая команда располагается на ОТДЕЛЬНОЙ СТРОКЕ. Нельзя
разместить несколько команд на одной строке. Не принято, также, разбивать одну
команду на несколько строк.
Язык ассемблера является РЕГИСТРОНЕЧУВСТВИТЕЛЬНЫМ.Т. е. в большинстве
случаев нет разницы между большими и малыми буквами. Команда может быть
ДИРЕКТИВОЙ - указанием транслятору. Они выполняются в процессе превращения
программы в машинный код. Многие директивы начинаются с точки. Для удобства
чтения программы они обычно пишутся БОЛЬШИМИ БУКВАМИ. Кроме директив
еще бывают ИНСТРУКЦИИ - команды процессору. Именно они и будут составлять
машинный код программы.
3) Cтрока ORG 100h устанавливает значение программного счетчика (IP) в 100h,
потому что при загрузке СОМ-файла в память DOS занимает первые 256 байт
(100h) блоком данных PSP и располагает код программы только после этого
блока. Все программы, которые компилируются в файлы типа СОМ, должны
начинаться с этой директивы.
4) Команда MOV DX, OFFSET MESSAGE помещает в регистр DX смещение метки
MESSAGE относительно начала сегмента данных, который в нашем случае
совпадает с сегментом кода. OFFSET (по-английски - это смещение). Когда, при
ассемблировании, Ассемблер дойдет до этой строки, он заменит OFFSET
MESSAGE на АДРЕС (смещение) этой строки в памяти. Если мы запишем OFFSET
MESSAGE (хотя, правильнее будет MOV DX, WORD OFFSET MESSAGE), то в DX
загрузится не адрес (смещение), а первые два символа нашей строки (в данном
случае "He"). Так как DX - шестнадцатиразрядный регистр, в него можно
загрузить только два байта (один символ всегда один байт).
5) Команда INT 21H (и 20Н также, видимо)вызывает системную функцию DOS (int
от англ. interrupt - прерывание). Прерывание MS-DOS - это своего рода
подпрограмма (часть MS-DOS), которая находится постоянно в памяти и может
вызываться в любое время из любой программы. Эта команда - основное
средство взаимодействия программ с операционной системой.
6) Команда RET пользуется обычно для возвращения из процедуры. DOS
вызывается COM-программы так, что команда RET корректно завершает
программу.
6) В примере вызывается функция DOS (строка 7) - вывести строку на экран. Эта
функция выводит строку от начала, адрес которого задается в регистрах DS:
DX, до первого встречного символа $.
7) Метка BEGIN: располагается перед первой командой в программе и будет
использоваться в директиве END. директива END завершает программу,
одновременно указывая, с какой метки должно начинаться ее выполнение.
8) Хз

1. Как происходит организация оперативной памяти: представление


данных в виде байта, слова, двойного слова?
2. Что такое регистр микропроцессора, основные группы
регистров? Каково их назначение?
3. Какие существуют особенности представления и именования
двухбайтовых регистров общего назначения?
4. Что такое сегментные регистры (метод "сокращения" адресов)?
5. Что такое флаг, и для чего он нужен?
6. Объясните назначение флагов переноса и нуля.
7. Объясните назначение флагов переполнения и знака.
8. В чем различие представления между целыми числами без знака
(неотрицательными) и со знаком?
9. Поясните особенности хранения в памяти чисел размером в
слово и двойное слово. С чем это связано?
10. Что называется дополнительным кодом числа? Приведите
примеры.
11. Принципы хранения символьных данных в памяти компьютера?
12. Перечислите основные форматы машинных команд и дайте
9) краткое описание каждой из них.

1) Байт – это наименьшая адресуемая ячейка памяти. Байты


нумеруются начиная с 0, порядковый номер байта
называется его адресом.
Слово (word) – это два соседних байта. Размер слова – 16 бит
(разрядов). Они нумеруются, если рассматривать слово как единое
целое, справа налево от 0 до 15. Адресом слова считается адрес его
первого байта (с меньшим адресом).
Двойное слово (double word) – это четыре соседних байта или, что
то же самое, два соседних слова. Размер двойного слова – 32 разряда,
они нумеруются справа налево от 0 до 31. Адрес двойного слова – адрес
первого из его байтов (с наименьшим адресом).
2)