Как добавить две строки для вывода сообщений на экран в DOSBox?

Как изменить код ниже, чтобы вывести на экран еще две строки сообщения? Я пробовал добавлять две строки по типу третьей строки, и менял 13-ю строку, но мои действия оказались неудачными. 

```assembly
; Программа Hello_1 – Ваша первая программа

Data SEGMENT ; Открыть сегмент данных
Greet DB 'Hello, My friends!', 13, 10, '$' ; Определить строку символов с именем Greet
Message1 DB 'This is message 1!', 13, 10, '$' ; Добавить строку 1
Message2 DB 'This is message 2!', 13, 10, '$' ; Добавить строку 2

Data ENDS ; Закрыть сегмент данных

Ourstack SEGMENT Stack ; Открыть сегмент стека
    DB 100h DUP (?) ; Отвести под стек 256 байт
Ourstack ENDS ; Закрыть сегмент стека

ASSUME CS:Code, DS:Data, SS:Ourstack ; Назначить сегментные регистры

Code SEGMENT ; Открыть сегмент кодов
    Start: 
        mov AX, Data ; Инициализировать сегментный регистр DS
        mov DS, AX ; сегментный регистр DS

        mov AH, 09h ; Вывести строку Greet
        mov DX, OFFSET Greet ; на экран с помощью
        int 21h ; DOS

        mov AH, 09h ; Вывести строку Message1
        mov DX, OFFSET Message1 ; на экран с помощью
        int 21h ; DOS

        mov AH, 09h ; Вывести строку Message2
        mov DX, OFFSET Message2 ; на экран с помощью
        int 21h ; DOS

        mov AL, 0 ; Завершить программу
        mov AH, 4Ch ; с помощью
        int 21h ; DOS

Code ENDS ; Закрыть сегмент кодов
END Start ; Конец исходного модуля
```
  • 4 октября 2023 г. 7:27
Ответы на вопрос 1
Чтобы добавить еще две строки для вывода сообщений на экран, вам нужно добавить две строки в сегмент данных (Data segment). Также нужно обновить значение переменной `$` для каждой строки, чтобы указать конец строки. 

Вот измененный код:

```assembly
Data SEGMENT ; Открыть сегмент данных
Greet DB 'Hello, My friends!', 13, 10, '$' ; Определить строку символов с именем Greet
Message1 DB 'This is message 1!', 13, 10, '$' ; Добавить строку 1
Message2 DB 'This is message 2!', 13, 10, '$' ; Добавить строку 2
Message3 DB 'This is message 3!', 13, 10, '$' ; Добавить строку 3
Message4 DB 'This is message 4!', 13, 10, '$' ; Добавить строку 4

Data ENDS ; Закрыть сегмент данных
```

А вот измененная часть кода, осуществляющая вывод новых строк на экран:

```assembly
mov AH, 09h ; Вывести строку Greet
mov DX, OFFSET Greet ; на экран с помощью
int 21h ; DOS

mov AH, 09h ; Вывести строку Message1
mov DX, OFFSET Message1 ; на экран с помощью
int 21h ; DOS

mov AH, 09h ; Вывести строку Message2
mov DX, OFFSET Message2 ; на экран с помощью
int 21h ; DOS

mov AH, 09h ; Вывести строку Message3
mov DX, OFFSET Message3 ; на экран с помощью
int 21h ; DOS

mov AH, 09h ; Вывести строку Message4
mov DX, OFFSET Message4 ; на экран с помощью
int 21h ; DOS
```

Теперь программа будет выводить на экран все четыре строки сообщений.
Похожие вопросы