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)