Функциональная организация микро-ЭВМ и микроконтроллеров. Часть 1: PDP-11. Негода В.Н - 15 стр.

UptoLike

MOV OP2, R0 ; R0 = OP2
ASH #4, R0 ; позиционирование копии OP2 против поля X
ADD R0,OP1 ; подсуммирование копии OP2 к полю X
; Очистка бита с номером NUM в слове W
MOV #1, R0 ; создание маски с одной единицей
ASH NUM, R0 ; позиционирование 1 в разряд R0[NUM]
BIC R0, W ; очистка бита W[NUM]
Для арифметической обработки данных повышенной точности использу-
ются команды ADC, SBC, SXT. Например, пусть имеются 16-разрядная перемен-
ная A16 и 32-разрядные переменные A32 и B32, объявленные в Си следующим
образом:
short A16;
long A32, B32;
Пусть при обработки этих данных выполняются операторы:
A32 = (long)A16;
B32 += A32;
Эти операторы могут быть реализованы на ассемблере следующим образом:
; Преобразование 16-разрядного операнда A16 в 32-разрядный A32
MOV A16, A32 ; пересылка младшего слова
SXT A32+2 ; формирование старшего слова операнда
; Подсуммирование A32 к 32-разрядному B32
ADD A32, B32 ; подсуммирование младшего слова
ADC B32+2 ; подсуммирование переноса
ADD A32+2, B32+2 ; подсуммирование старшего слова
Изменение естественного порядка следования команд выполняется по спе-
циальным командам перехода. К этой группе команд в PDP-11 относятся коман-
ды безусловного перехода JMP, организации цикла SOB, обращения к подпро-
грамме JSR, возврата из подпрограммы RTS, возврата с восстановлением стека
MARK, организации программных прерываний EMT, TRAP, IOT, BPT, RTI и RTT,
а также большая группа команд ветвления BR, BEQ и др. Все эти команды при-
ведены в таблицах 3 и 4.
Команды безусловного перехода JMP и перехода к подпрограмме в каче-
стве адреса перехода используют эффективный адрес операнда. Поэтому для
этих команд недопустима регистровая адресация. При входе в подпрограмму по
команде JSR Ri, Adr содержимое регистра Ri сохраняется в стеке, в регистр Ri
заносится адрес возврата и в PC заносится адрес перехода. При возврате из
подпрограммы по команде RTS адрес возврата переносится из Ri в PC и старое
содержимое Ri восстанавливается из стека. Поэтому команда RTS должна ссы-
латься на тот же Ri, что и команда вызова данной подпрограммы. Чаще всего в
качестве регистра используется PC, то есть команды имеют вид JSR PC,
адрес
и RTS PC, а адрес возврата сохраняетеся в стеке.