Рассмотрим теперь создание строк символов. Символы представ-ляют собой допустимые операнды директив определения данных, поэ-тому строку символов можно определить следующим образом:
String DB ‘A’, ‘B’, ‘C’, ‘D’
В Турбо Ассемблере в этом случае предусмотрена также удобная сокращенная форма:
String DB ‘ABCD’
Если вы хотите использовать вид строки, принятый в языке Си (которая заканчивается нулевым байтом), вы должны явно указать в конце строки нулевой байт. Аналогично, если вы хотите завершить строку символами возврата каретки и перевода строки, их также нужно включить в строку. В следующем примере определяется тексто-вая строка, за которой следует символ возврата каретки, символ перевода строки и нулевой байт:
HelloString DB ‘Привет!’,0dh,0ah,0
Чтобы переместиться к левому краю следующей строки, вы должны вывести пару символов «возврат каретки/перевод строки».
Например, программа:
DOSSEG
MODEL SMALL
STACK 100h
.DATA
String1 DB ‘Line1’,’$’
String2 DB ‘Line2’,’$’
String3 DB ‘Line3’,’$’
.CODE ProgramStart:
mov ax,@data
mov ds,ax
mov ah,9 ; функция DOS печати строки
mov dx,OFFSET String1 ; печатаемая строка
int 21h ; вызвать DOS для печати строки
mov dx,OFFSET String2 ; печатаемая строка
int 21h ; вызвать DOS для печати строки
mov dx,OFFSET String3 ; печатаемая строка
int 21h ; вызвать DOS для печати строки
mov ah,4ch ; функция DOS завершения
; программы
int 21h
END ProgramStart
печатает следующее:
Line1Line2Line3
Однако если в конце каждой строки вы добавите пару символов «возврат каретки/перевод строки»:
String1 DB ‘Line1’,’$’,0dh,0ah,’$’
String2 DB ‘Line2’,’$’,0dh,0ah,’$’
String3 DB ‘Line3’,’$’,0dh,0ah,’$’
то вывод будет выглядеть следующим образом:
Line1
Line2
Line3
