20 уроков Ассемблера
Шрифт:
Следующее нажатие F2 – значение регистра dx стало равным 109h. Почему 109? Сейчас узнаем. Ещё раз нажимаем F2 и ещё раз – и мы видим надпись "Program terminated OK" – программа успешно завершила свою работу. Если хотите,
Рассмотрим подробнее команду mov dx,offset helloworld. В отладчике мы видим иное: MOV DX,0109. Почему так?
Дело в том, что как мы узнали из предыдущей главы, регистры общего назначения, в том числе и dx, хранят всего лишь 2 байта. Вся фраза никак не поместится в регистр dx. Поэтому запись MOV DX,0109 указывает на смещение, где хранится наша фраза. Проверим это.
Нажмём клавишу F8 так, чтобы курсор переместился в окно 2. Заменяем значения DS 0000 на DS 0109. В правой части мы видим фразу "Hello, world!".
Что же такое смещение? Представить это можно в виде линеек координат. За линейку X можно представить себе сегмент, а за линейку Y – смещение. Чтобы найти адрес чего-либо, например, символа, нужно знать эти два параметра. Почему же мы здесь указываем только смещение? Да потому, что наши сегментные регистры сейчас имеют одинаковое значение (cs=ds=es=ss). Все они имеют значение первого свободного адреса, которое находит процессор и куда загружает в память. Чуть позже мы рассмотрим эти понятия на примерах.
Глава 5. Подпрограммы
Давайте подведём итоги, что мы узнали за прошедшие главы. А мы узнали вот что:
– Как установить прикладное программное обеспечение;
– Как воспользоваться файлом помощи;
Конец ознакомительного фрагмента.