"Ассемблер и программирование для 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.