Вход/Регистрация
20 уроков Ассемблера
вернуться

Углев Семён

Шрифт:
image l:href="#"/>

и отдельно к старшему и младшему байту:

Надеюсь, с этим всё ясно. Скомпилируем нашу программу, создав с помощью Far новый файл test.asm (Shift+F4) и поместив в каталог с ним программы MASM.EXE, ML.EXE, LINK.EXE (либо прописав соответствующие системные пути для них. Для LINK.EXE у меня это сделать не получилось, он остаётся в папке с программой). Не забудьте выбрать кодировку файла 866 (клавишей F8), иначе увидите на экране кракозябры.

Выполняем: ML test.asm /AT

В папке с программой должно появиться ещё два файла – test.obj и test.com. Последний нам и нужен. Запускаем его и видим на экране фразу "Hello, world!".

Глава 4. Отладчик

Итак, понемногу мы подвигаемся вперёд. Сегодня мы узнаем о такой важной вещи, как отладчик. В нашем комплекте программ он есть и называется AFD Pro. Для чего нужен отладчик? Как ясно из его названия, для отладки программы. Например, у вас что-то не работает, и нужно найти причину. У нас пока всё работает, но мы хотим посмотреть на работу программы "изнутри". Откроем нашу программу test.com в отладчике:

Файл afdpro.exe должен быть прописан в системных путях или находиться в папке с программой.

Что же мы видим? В верхней части – значения регистров, о которых мы писали в предыдущей статье. Правее – состояние Stack – стека, о чём мы будем говорить позже. Ниже – командная строка, а ещё ниже, как мы, наверное, догадались, наша программа (первые четыре строчки соответствуют нашему коду). Теперь немного об управлении:

F1 – пошаговая трассировка с заходом в прерывания и процедуры.

F2 – то же самое, но без захода в процедуры и прерывания.

Чтобы перемещаться и изменять, например, регистры, дамп памяти – используйте клавиши F7 (вверх), F8 (вниз), F9 (влево), F10 (вправо).

Нажмём F2: программа переместится на следующую строчку, при этом регистры будут отображать нам числовые значения, в них хранящиеся. Первой командой мы занесли в ah число 9. Всё правильно: в левом верхнем углу значение регистра ax показывает 0900 (ah=9, al=0 – он не менялся).

Следующее нажатие F2 – значение регистра dx стало равным 109h. Почему 109? Сейчас узнаем. Ещё раз нажимаем F2 и ещё раз – и мы видим надпись "Program terminated OK" – программа успешно завершила свою работу. Если хотите, можете проверить работу программы ещё раз – для этого нужно нажать клавишу F3 и Enter. Но где же хранят нашу фразу "Hello, world!"?

Рассмотрим подробнее команду 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. Подпрограммы

Давайте подведём итоги, что мы узнали за прошедшие главы. А мы узнали вот что:

– Как установить прикладное программное обеспечение;

– Как воспользоваться файлом помощи;

Конец ознакомительного фрагмента.

  • 1
  • 2
  • 3

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: