Написать программу проверки готовности устройства с адресом порта 200h - Assembler
Формулировка задачи:
Получил задание на ассемблере написать некую программу помогите плиз желательно с описаниями поподробней (отправлю средства на мобилку в знак благодарности)
Написать программу проверки готовности устройства с адресом порта 200h. Готовность определяется наличием 14 и 1 или 9 и 7 битами, если нет готовности, то ждать.
Заранее спасибо этому форуму и всем его участникам!Решение задачи: «Написать программу проверки готовности устройства с адресом порта 200h»
textual
Листинг программы
use16 org 100h ;выводим сообщение msg0 mov dx,msg0 mov ah,9 int 21h ;кидаем в dx номер порта mov dx,200h ;ждём @@: in ax,dx test ax,08h jz @b test ax,20h jz @b ;выводим msg1 mov dx,msg1 mov ah,9 int 21h ;ожидаем нажатия клавиши xor ax,ax int 16h ;завершаем выполнение ret msg0 db "Waiting...",13,10,"$" msg1 db "Ready",13,10,"$"
Объяснение кода листинга программы
- Используется сегментный регистр для определения сегмента данных (DS) и кода (CS), а также для обращения к переменным и вывода сообщений (в данном случае).
- Организация кода:
- Линии с комментариями (отсутствующие в коде команды) помогают понять, что делает программа.
- Команды организованы в блоки (обычно два блока: для чтения и записи), каждый из которых имеет свою функцию.
- Внутри блоков команды расположены в порядке выполнения (сначала идут более ранние операции, затем более поздние).
- Команды в блоке чтения обычно расположены в порядке возрастания регистра (AL, AH, DL, DH), а затем идут другие регистры (в данном случае нет использования BX, CX, DX, SI, DI).
- Команды в блоке записи обычно расположены в порядке убывания регистра (сначала идут более поздние операции, затем более ранние).
- Порядок выполнения:
- Сначала программа выводит сообщение
Waiting...
с помощью функции BIOSint 21h
, используя сегментный регистр DS для определения сегмента строки. - Затем программа проверяет, готов ли порт 200h (в данном случае используется регистр DX).
- Если бит 0 (самый младший) регистра AX равен 1, то порт не готов (поэтому используется
jz @b
). - Если бит 3 (второй по старшинству) регистра AX равен 1, то порт готов (поэтому используется
jnz @b
).
- Если бит 0 (самый младший) регистра AX равен 1, то порт не готов (поэтому используется
- Если порт готов, программа выводит сообщение
Ready
с помощью функции BIOSint 21h
. - Затем программа ожидает нажатия клавиши с помощью функции BIOS
int 16h
. - Наконец, программа завершается с помощью команды
ret
.
- Сначала программа выводит сообщение
- Переменные:
msg0
,msg1
- строки, содержащие сообщения, которые выводятся с помощью функции BIOSint 21h
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д