Архитектура микропроцессорной системы. Состав машинных команд и основы программирования микропроцессорной системы на ассемблере. Булатов В.Н. - 55 стр.

UptoLike

Составители: 

Пример 1 Пусть команда CALL 010F находится по адресу 0100.
Вычисляем disp, учитывая, что команда трехбайтовая: disp = 010F —
(0100 + 3) = 000C. В целом получаем:
Address Command Assembler
0100 E8 CALL 010F
0101 OC
0102 00
0103
КОП следующей
команды
Как выполняется команда CALL 010F ?
1). Stack:= <IP> = 0103 (спрятать в стек адрес следующей
команды, то есть адрес возврата);
2). IP:= 010F (назначить IP новый адресадрес подпрограммы).
8.1.2 Внутрисегментный, с косвенной адресацией
а) Ассемблер: CALL NEAR dst. Комментарий: перейти по адресу,
который находится в dst (2 байта);
б) КОП:
Пример 2 Пусть АХ=010F и пусть имеет место следующий фрагмент
программы:
Address Command Assembler
0100 FF CALL AX
0101 E0
0102
КОП следующей
команды
Результат выполнения этого фрагмента:
1) Stack := <IP> = 0106;
2) IP := <AX> = 010F.
8.2 Межсегментные переходы
8.2.1 Межсегментный, с прямой адресацией; команда 5-и байтовая:
55
     Пример 1 — Пусть команда CALL 010F находится по адресу 0100.
Вычисляем disp, учитывая, что команда трехбайтовая: disp = 010F —
(0100 + 3) = 000C. В целом получаем:

            Address        Command              Assembler
             0100              E8              CALL 010F
             0101              OC
             0102              00
                         КОП следующей
             0103
                            команды

     Как выполняется команда CALL 010F ?
     1). Stack:=  = 0103 (спрятать в стек адрес следующей
команды, то есть адрес возврата);
     2). IP:= 010F (назначить IP новый адрес — адрес подпрограммы).
     8.1.2 Внутрисегментный, с косвенной адресацией
     а) Ассемблер: CALL NEAR dst. Комментарий: перейти по адресу,
который находится в dst (2 байта);
     б) КОП:




     Пример 2 — Пусть АХ=010F и пусть имеет место следующий фрагмент
программы:

           Address          Command               Assembler
            0100                FF                CALL AX
            0101                E0
                          КОП следующей
            0102
                             команды

     Результат выполнения этого фрагмента:
     1) Stack :=  = 0106;
     2) IP :=  = 010F.

8.2 Межсегментные переходы
     8.2.1 Межсегментный, с прямой адресацией; команда 5-и байтовая:

                                                                       55