[an error occurred while processing this directive]
|
Так они же адрес. И меняться адрес имеет свойство в цикле обращения к внешней шине. Каковой цикл формируется аппаратно при обращении к портам (portr,portw), внешней памяти программ (тут вообще от инструкций может не зависеть или reada,writa) или данных (куча инструкций, но те же 64к). Вне цикла он не меняется, точнее все адресные ноги переходят в неактивное состояние по окончании цикла.
А поскольку пространство IO (как и память данных) ограничено 64к, т.е. a0-a15, то старшие разряды адреса при обращении к IO или внешней памяти данных обязательно=0. Иначе это означало бы больший размер адресного пространства. У памяти программ 64к ограничение отсутствует, адрес в принципе может быть любым от 0 до 2^22. Может и не любым, от MP-MC и OVLY зависит, т.е. какая часть программной памяти внутри, какая снаружи. Но на шине, еще раз, он только на время цикла обращения к памяти программ. Так что изменить состояние a16-a22 Вы можете только обратившись к внешней памяти программ. Через writa,reada.
Но наверное Вы состояние этих ног собираетесь изменить не просто из любви к искусству. Хотите обратиться к внешнему устройству видимо.
А если так, то это внешнее устр-во должно использовать сигналы MEMSTRB и PS. Ну или в частных случаях MEMSTRB. Но не IOSTRB и IS, они просто формироваться не будут при обращении к памяти программ (равно как и к памяти данных). Так что если внешнее устр-во использует IOSTRB, IS то обращаться к нему как к памяти программ бесполезно. Только portr, portw, а с этими командами
a16-a22 всегда=0 на время цикла и неактивны между циклами. И ничего тут не сделаешь, проц. так устроен.
E-mail: info@telesys.ru