Ваш код:
mov dx, offset d2
add dx, 2
mov ah, 9
int 21h
делает то же самое, что и:
mov dx, offset d3 ; offset d3 equals offset d2 + 2, because d2 is a word.
mov ah, 9
int 21h
Несколько инструкций данных db
создают последовательные байты в памяти (здесь), так что:
d3 db 'ABC'
d4 db 'DE'
d5 db 'F'
d6 db '$'
эквивалентно следующему:
d3 db 'ABCDEF$' ; assuming you don't need labels d4, d5, d6 somewhere else
Таким образом, вы передаете строку 'ABCDEF$'
в int 21h
, функцию AH=9
, «Показать строку» , и это печатает все символы строки, которую вы передаете в DX
, вплоть до финального '$'
.Таким образом, он печатает
ABCDEF
, как и ожидалось.