Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Программа типа СОМ

Команды общего назначения | Команды ввода-вывода | Индивидуальное задание. | Форматы арифметических данных. | Команда сложения ADD и команда сложения с добавлением переноса ADC. | Команда вычитания SUB и вычитания с заемом SBB. | Индивидуальное задание. | Команда коррекции деления для представления в кодах ASCII (команда AAO ) | Логические команды OR, AND и XOR. | Команды сдвига |


Читайте также:
  1. A) Қолданушыға қажет жұмыстарды атқаруға мүмкіндік беретін программа.
  2. VI. ПРОГРАММА СОРЕВНОВАНИЙ
  3. Авто программа компании RA GROUP Int. – «Моя автоМечта!» Используй свой уникальный шанс реализовать свою автоМечту! Получи от компании RA GROUP Int. новый автомобиль.
  4. Адресная программа
  5. Бұл программаның нәтижесі кадрлер түрінде төменде көрсетілген.
  6. Билетная программа по химии (2015-216 уч.год)
  7. В связи с высоким уровнем заболеваемости населения колоректальным раком, во многих странах разработана скрининг-программа по ранней диагностике данной патологии.

Традиционно первая программа для освоения нового языка программирования — программа, выводящая на экран текст «Hello world!».

Итак, наберите в любом текстовом редакторе, который может записывать файлы как обычный текст (например: EDIT.COM в DOS, встроенный редактор в Norton Commander или аналогичной программе, NOTEPAD в Windows), следующий текст:

; hello-l.asm; Выводит на экран сообщение "Hello World!" и завершается.model tiny; модель памяти, используемая для СОМ.code; начало сегмента кода org 100h; начальное значение счетчика - 100hstart: mov ah,9; номер функции DOS - в АН mov dx,offset message; адрес строки - в DX int 21h; вызов системной функции DOS ret; завершение СОМ-программыmessage db "Hello World!",0Dh,0Ah,'$'; строка для вывода end start; конец программы

и сохраните его как файл hello-l.asm. Можно также использовать готовый файл с этим именем. Чтобы превратить программу в исполнимый файл, сначала надо вызвать ассемблер, для того чтобы скомпилировать ее в объектный файл с именем hello-1.obj, набрав в командной строке следующую команду:

Для TASM:

tasm hello-1.asm

С ассемблерными программами также можно работать из интегрированных сред разработки, как обычно работают с языками высокого уровня, но в них обычно удобнее создавать процедуры на ассемблере, вызываемые из программ на языке, для которого предназначена среда, а создание полноценных программ на ассемблере требует некоторой перенастройки.

Формат объектных файлов, используемых всеми тремя рассматриваемыми ассемблерами по умолчанию (OMF-формат), совпадает, так что можно пользоваться ассемблером из одного пакета и компоновщиком из другого.

Для TLINK:

tlink /t /x hello-1.obj

Теперь получился файл HELLO-1.COM размером 23 байта. Если его выполнить, на экране появится строка «Hello World!» и программа завершится.

Рассмотрим исходный текст программы, чтобы понять, как она работает.

Первая строка определяет модель памяти TINY, в которой сегменты кода, данных и стека объединены. Эта модель предназначена для создания файлов типа СОМ.

Директива.CODE начинает сегмент кода, который в нащем случае также должен содержать и данные.

ORG 100h устанавливает значение программного счетчика в 100h, так как при загрузке СОМ-файла в память DOS занимает первые 256 байт (100h) блоком данных PSP и располагает код программы только после этого блока. Все программы, которые компилируются в файлы типа СОМ, должны начинаться с этой директивы.

Метка START располагается перед первой командой в программе и будет использоваться в директиве END, чтобы указать, с какой команды начинается программа.

Команда MOV АН,9 помещает число 9 в регистр АН. Это — номер функции DOS «вывод строки».

Команда MOV DX,OFFSET MESSAGE помещает в регистр DX смешение метки MESSAGE относительно начала сегмента данных, который в нашем случае совпадает с сегментом кода.

Команда INT 21h вызывает системную функцию DOS. Эта команда — основное средство взаимодействия программ с операционной системой. В нашем примере вызывается функция DOS номер 9 — вывести строку на экран. Эта функция выводит строку от начала, адрес которого задается в регистрах DS:DX, до первого встреченного символа $. При загрузке СОМ-файла регистр DS автоматически загружается сегментным адресом программы, а регистр DX был загружен предыдущей командой.

Команда RET используется обычно для возвращения из процедуры. DOS вызывает СОМ-программы так, что команда RET корректно завершает программу.

DOS при вызове СОМ-файла помещает в стек сегментный адрес программы и ноль, так что RET передает управление на нулевой адрес текущего сегмента, то есть на первый байт PSP. Там находится код команды INT 20h, которая и используется для возвращения управления в DOS. Можно сразу заканчивать программу командой INT 20h, хотя это длиннее на 1 байт.

Следующая строка программы HELLO-1.ASM определяет строку данных, содержащую текст «Hello World!», управляющий символ ASCII «возврат каретки» с кодом 0Dh, управляющий символ ASCII «перевод строки» с кодом 0Ah и символ «$», завершающий строку. Эти два управляющих символа переводят курсор на первую позицию следующей строки точно так же, как в строках на языке С действует последовательность «\n».

И наконец, директива END завершает программу, одновременно указывая, с какой метки должно начинаться выполнение программы.


Дата добавления: 2015-11-13; просмотров: 35 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Индивидуальное задание.| Программа типа ЕХЕ

mybiblioteka.su - 2015-2024 год. (0.007 сек.)