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


          

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


ПРИМЕР МАШИННЫХ КОДОВ: ОПРЕДЕЛЕНИЕ РАЗМЕРА ПАМЯТИ ------------------------------------------------------------
Ассемблер для 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]

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