[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Система адресации памяти и устройств ввода вывода линейная.
Т.е. например слово расположенное по адресу 20h это два байта
по адресам 20h и 21h
Если производиться чтение/запись слова по четному адресу то контроллер шины проверяет ответ от устройства -MEM CS16 или -I/O CSI6.
Так например код
mov dx,20h
in ax,dx
Может выполнятся как написано(если устройство подтверждает 16-битную пересылку -I/O CSI6)
или за два цикла по шине.
Что для программиста можно представить:
mov dx,20h
in al,dx
shl ax,8
inc dx
in al,dx
dec dx
По этому и стараются писать программы так чтобы обращение к данным было выравнено на границу слова или двойного слова.
Я к стати игрался с другим аспектом.
Например для обращения к регистрам видеокарточки используется индексный доступ.
Например в регистр 3D4h записывается индекс(номер регистра к которому обращаемся) а
затем записываются данные в регистр 3D5h.
Так как оба регистра 8 битные то
mov dx,3d4h
out dx,ax
E-mail: info@telesys.ru