Переход на новую строку
Для организации перехода на новую строку достаточно вывести на экран символы перевода строки и возврата каретки (CR/LF). Эти символы имеют коды 10 и 13. Если в нашей программе необходимо после вывода строки перейти на новую, то для этого достаточно переписать вторую строку программы:
mes2 db 'Выводим строку и переходим на новую...', 10, 13, '$'
Переход на новую строку можно выполнить и до вывода сообщения на экран:
mes3 db 10, 13, 'Выводим с новой строки...$'
Вариант 2:
|
text segment |
;Начало сегмента команд |
|
assume CS:text,DS:data |
;Сегментный регистр CS будет указывать на сегмент команд, а сегментный регистр DS - на сегмент данных |
|
start: mov AX,data |
;Адрес сегмента данных сначала загрузим в АХ, |
|
mov DS,AX |
;а затем перенесем из АХ в DS |
|
mov AH,09h |
;Функция MS-DOS 9h вывода на экран |
|
mov DX,offset mesg |
;Адрес выводимого сообщения должен быть в DX |
|
int 21h |
;Вызов MS-DOS |
|
mov AH,4Ch |
;Функция 4Ch завершения программы |
|
mov AL, 0 |
;Код 0 успешного завершения |
|
int 21h |
;Вызов MS-DOS |
|
text ends |
;Конец сегмента команд |
|
data segment |
;Начало сегмента данных |
|
mesg db 'Hello world!$' |
;Выводимый текст |
|
data ends |
;Конец сегмента данных |
|
stk segment stack |
;Начало сегмента стека |
|
db 256 dup (0) |
;Резервируем 256 байт для стека |
|
stk ends |
;Конец сегмента стека |
|
end start |
;Конец текста программы с точкой входа start |
Задание
-
Написать программу, которая выводит одно под другим следующие сообщения:
Привет!
Меня зовут ФИО студента!
Я изучаю Ассемблер!
-
Сравните и проанализируйте исходные тексты программ Вариант 1 и Вариант 2.
Контрольные вопросы
-
Перечислите, из каких структурных компонентов состоит программа на языке Ассемблера.
-
Как выполняются трансляция и компоновка программы на Ассемблере.
-
Каким образом в ассемблере объявляются константы и переменные?
-
От чего зависит размер поля, отводимого под размещаемые данные?
-
С какой целью используется служебное слово DUP?