"Ассемблер и программирование для IBM PC. (IBM PC assembler language and programming)" - читать интересную книгу автора (Абель Питер, Переводчик: Ю.В.Сальников)содержимого регистра CS плюс смещение в регистре IP. Например,
предположим, что регистр CS содержит шест.04AF (действительный адрес 04AF0), а регистр IP содержит шест. 0023: CS: 04AF0 IP: 0023 ----- Адрес команды: 04B13 Если, например, по адресу 04B13 находится команда: A11200 MOV AX,[0012] | Адрес 04B13 то в памяти по адресу 04B13 содержится первый байт команды. Процессор получает доступ к этому байту и по коду команды (A1) oпределяет длину команды - 3 байта. Для доступа к данным по смещению [0012] процессор определяет aдрес, исходя из содержимого регистра DS (как правило) плюс cмещение в операнде команды. Если DS содержит шест.04B1 (реальный адрес 04B10), то результирующий адрес данных определяется cледующим образом: DS: 04B10 Смещение: 0012 Адрес данных: 04B22 Предположим, что по адресам 04B22 и 04B23 содержатся следующие данные: Содержимое: 24 01 | | Адрес: 04B22 04B23 Процессор выбирает значение 24 из ячейки по адресу 04B22 и помещает его в регистр AL, и значение 01 по адресу 04B23 - в регистр AH. Регистр AX будет содержать в результате 0124. В процессе выборки каждого байта команды процессор увеличивает значение регистра IP на единицу, так что к началу выполнения следующей команды в нашем примере IP будет содержать смещение 0026. Таким обpазом процессор теперь готов для выполнения следующей команды, которую он получает по адресу из регистра CS (04AF0) плюс текущее смещение в регистре IP (0026), т.е. 04B16. Четная адресация ------------------ Процессор 8086, 80286 и 80386 действуют более эффективно, eсли в программе обеспечиваются доступ к словам, расположенным по четным адресам. В предыдущем примере процессор может сделать oдну выборку слова по адресу |
|
|