Ассемблер и программирование для IBM PC



       

ГЛАВА 2. Выполнение программ - часть 10


ПРИМЕР МАШИННЫХ КОДОВ: ОПРЕДЕЛЕНИЕ РАЗМЕРА ПАМЯТИ ------------------------------------------------------------

Ассемблер для IBM PC. Глава 2 40

В первом упражнении в данной главе проводилась проверка размера памяти (RAM), которую имеет компьютер. BIOS (базовая система ввода/вывода) в ROM имеет подпрограмму, которая определяет pазмер памяти. Можно обратиться в BIOS по команде INT, в данном cлучае по прерыванию 12H. В результате BIOS возвращает в регистр AX размер памяти в килобайтах. Загрузите в память DEBUG и введите для INT 12H и RET следующие машинные коды:

E CS:100 CD 12 CB

Нажмите R (и Return) для отображения содержимого регистров и первой команды. Регистр IP содержит 0100, при этом высвечивается команда INT 12H. Теперь нажмите T (и Return) несколько раз и просмотрите выполняемые команды BIOS (отладчик показывает мнемокоды, хотя в действительности выполняются машинные коды):

STI PUSH DS MOV AX,0040 MOV DS,AX MOV AX,[0013] POP DS IRET

В этот момент регистр AX содержит размер памяти в шестнадца тиpичном формате. Теперь введите еще раз команду T для выхода из BIOS и возврата в вашу программу. На экране появится команда RET для машинного кода CB, который был введен вами.

СПЕЦИАЛЬНЫЕ СРЕДСТВА ОТЛАДЧИКА ------------------------------------------------------------

В операционной системе DOS версии 2.0 и старше можно использовать DEBUG для ввода команд ассемблера так же, как и команд машинного языка. На практике можно пользоваться обоими методами.

Команда A

Команда отладчика A (Assemble) переводит DEBUG в режим приема команд ассемблера и перевода их в машинные коды. Установим начальный адрес следующим образом:

A 100 [Return]

Отладчик выдаст значение адреса сегмента кодов и смещения в ввиде хххх:0100. Теперь можно вводить каждую команду, завер шая клавишей Return. Когда вся программа будет введена, нажмите снова клавишу Return для выхода из режима ассембле ра. Введите следующую программу:

Ассемблер для IBM PC. Глава 2 41

MOV AL,25 [Return] MOV BL,32 [Return] ADD AL,BL [Return] RET [Return]




Содержание  Назад  Вперед