Вот ваши конкретные проблемы:
- Вы определяете
msg
дважды (a86 будет раздражать).
- Вы вызываете int21 fn9 с тем же значением , что вы не печатаете два сообщения, только две копии первого.
- В каждом сообщении нет символа новой строки, поэтому они будут прилегать друг к другу, а не находиться в отдельных строках.
Решения по этим пунктам (без предоставления фактического кода).
- Отметьте второе сообщение как
msg2
.
- Загрузите
msg2
в dx перед повторным вызовом int21.
- Измените сообщения, чтобы поставить символ новой строки перед символом '$' (или хотя бы первым).
Обновление: Поскольку какая-то другая полезная душа уже предоставила источник, вот мое решение. Я бы посоветовал вам выучить из этого и изменить свой собственный код, чтобы сделать то же самое. Если вы скопируете его дословно с общедоступного сайта для занятий, вы почти наверняка попадетесь на плагиат:
jmp start ; This will start the program
msg db "Hello Word.",0a,"$" ; A string variable .
msg2 db "Michael J. Crawley$" ; A string variable with a value.
start: mov ah,09 ; subfunction 9 output a string
mov dx,offset msg ; DX for the string
int 21h ; Output the message
mov dx,offset msg2 ; DX for the string
int 21h ; Output the message
exit:
mov ah,4ch
mov al,00 ; Exit code
int 21h ; End program
Это выводит:
Hello Word.
Michael J. Crawley