Директива BYTE сама по себе не является инструкцией по сборке, это просто способ попросить ассемблер зарезервировать и при желании инициализировать ячейку памяти для байта или массива байтов. Кроме того, эта ячейка памяти связывается с меткой (именем переменной) для последующего использования в программе.
Итак ...
promptl BYTE "Enter a signed integer: ",0
просто определит переменную prompt1, которая будет содержать эту строку и будет завершена (дополнительным) байтом, содержащим 0. Он нигде не выведет приглашение.
Если вы хотите отобразить это сообщение, вам обычно нужно вызвать примитивную функцию системы, чтобы сделать это. В мире MS-DOS многие из этих базовых услуг предоставляются вызовами известного INT $ 21 (Прерывание # 21), предварительно загрузив регистр A с числовым кодом, указывающим требуемый «сервис» (вместе с дополнительными регистрами и т. д. в зависимости от конкретного «желаемого» сервиса).
Итак, в мире MS-DOS начало вашей программы может выглядеть примерно так: Затем вам нужно будет преобразовать входное значение в целое число, сохранить его в рабочей переменной, заново запросить пользователя, получить другое значение, преобразовать его и, наконец, добавить эти два значения. Конечно, вы бы, вероятно, ввели подпрограммы, чтобы вы могли обрабатывать повторяющиеся задачи без чрезмерного дублирования кода.
prompt1 byte "Enter a signed integer: " ; btw in most assemblers the explicit added null char is not needed.
inputStr db 50,? ; defines a variable where to store the user's response (up to 50 bytes)
; prompt the user
mov dx, offset prompt1
mov ah, 9
int 21h
; input a string:
mov dx, offset inputStr
mov ah, 0ah
int 21h
;etc...