"Ассемблер и программирование для IBM PC. (IBM PC assembler language and programming)" - читать интересную книгу автора (Абель Питер, Переводчик: Ю.В.Сальников) ________________________________________________________________
Цель данного примера - проиллюстрировать простую программу на машинном языке, ее представление в памяти и результаты ее выполнения. Программа показана в шестнадцатиричном формате: Команда Назначение B82301 Переслать шест. значение 0123 в AX. 052500 Прибавить шест. значение 0025 к AX. 8BD8 Переслать содержимое AX в BX. 03D8 Прибавить содержимое AX к BX. 8BCB Переслать содержимое BX в CX. 2BC8 Вычесть содержимое AX из AX (очистка AX). 90 Нет операции. CB Возврат в DOS. Можно заметить, что машинные команды имеют различную длину: один, два или три байта. Машинные команды находятся в памяти непосредственно друг за другом. Выполнение программы начинается с первой команды и далее последовательно выполняются остальные. Не следует, однако, в данный момент искать большой смысл в приведенном машинном коде. Например, в одном случае MOV - шест.B8, а в другом - шест.8B. Можно ввести эту программу непосредственно в память машины и выполнить ее покомандно. В тоже время можно просматривать cодержимое регистров после предыдущее - ввод команды oтладчика DEBUG и нажатие клавиши Return. После загрузки DEBUG на экране высвечивается приглашение к вводу команд в виде дефиса. Для печати данного упражнения включите принтер и нажмите Ctrl и PrtSc одновременно. Для непосредственного ввода программы на машинном языке введите следующую команду, включая пробелы: E CS:100 B8 23 01 05 25 00 (нажмите Return) Команда E обозначает Enter (ввод). CS:100 определяет адрес памяти, куда будут вводиться команды, - шест.100 (256) байт от начала сегмента кодов. (Обычный стартовый адрес для машинных кодов в отладчике DEBUG). Команда E записывает каждую пару шестнадцатиpичных цифр в память в виде байта, начиная с адреса CS:100 до адреса CS:105. Следующая команда Enter: E CS:106 8B D8 03 D8 8B CB (Return) вводит шесть байтов в ячейки, начиная с адреса CS:106 и далее в 107, 108, 109, 10A и 10B. Последняя команда Enter: E CS:10C 2B C8 2B C0 90 CB (Return) вводит шесть байтов, начиная с CS:10C в 10D, 10E, 10F, 110 и 111. |
|
|