Программирование в машинных кодах и на языке ассемблера 1993 г.

Расширение системы команд процессора - конструкции передачи данных.


В этом разделе мы рассмотрим конструкции, выполняющие следующие манипуляции с данными: копирование, хранение, перемещение, обмен, ввод, вывод, удаление и установку.

2.3.1. Конструкции копирования и загрузки данных.

112. Копирование из адреса в регистр. LD reg, (ADDR) LD A, (ADDR)

LD reg, A

ИЛИ

LD HL,ADDR LD reg,(HL)

113. Загрузка числа во флаговый регистр. LD F, N LD rpl, N

PUSH HL POP AF

114. Копировать данные из адреса во флаговый регистр. LD F, (ADDR) LD HL, (ADDR)

PUSH HL POP AF

115. Скопировать в HL данные из адреса, содержащегося в

HL .

LD HL, (HL) LD A, (HL)

INC HL LD H, (HL) LD L, A

116. Загрузить в BC или DE данные из адреса, содержащегося

в HL.

LD rp, (HL) LD rpl, (HL)

INC HL LD rph, (HL) DEC HL

2.3.2. Конструкции, предназначенные для сохранения данных.

117. Копировать содержимое регистра в память.

ИЛИ

LD HL,ADDR LD (HL),reg

118. Копировать содержимое флагового регистра в память. LD (ADDR) , F PUSH AF

POP HL

LD (ADDR) , HL

ИЛИ

PUSH AF POP HL LD A, L LD (ADDR) , A

119. Копировать содержимое регистровой пары в ячейку памяти, адрес которой находится в HL.

LD (HL),rp LD (HL),rpl

INC HL LD (HL),rph DEC HL

2.3.3. Конструкции перемещения данных.

LD A,reg LD (ADDR) , A

12 0. Перенос аккумулятора во флаговый регистр. LD F, A LD rpl, A

PUSH rp POP AF

Перенос флагового регистра в аккумулятор. PUSH AF POP rp LD A,rpl

121 LD A, F

Перенос данных из одной регистровой пары в другую LD rp2l,rp 11 LD rp2h,rp1h 123. Перенос указателя стека в HL.

122 . LD rp2,rp1

LD HL,S P

LD HL,0 ADD HL , S P

Перенос указателя стека в индексный регистр. LD xy, 0 ADD xy, SP

Перенос содержимого регистровой пары в индексный

PUSH rp POP xy

12 6. Перенос содержимого индексного регистра в регистровую

пару.

LD rp, xy PUSH xy

POP rp

127. а) Перенос из IX в IY.

LD IY, IX PUSH IX

POP iy б) Перенос из IY в IX. LD IX,IY PUSH IY

POP IX

128. Перенос данных из HL в программный счетчик. LD PC, HL JP (HL)

12 9. Перенос данных из индексного регистра в программный счетчик.

LD PC, xy JP (xy)

130. Перенос данных из двух байтов памяти в программный счетчик (косвенный переход).

LD PC,(ADDR) LD HL,(ADDR)

JP (HL)

131. Заполнение области памяти данными, содержащимися в аккумуляторе. Адрес начала области - в HL. Длина области - в регистре В.

FILL: LD (HL),A - копирование акк-ра в память

INC HL - переход к следующему адресу

DJNZ FILL - повторить, если В<>0

124. LD xy, SP

125 . регистр. LD xy,rp

132. Обмен между регистрами через аккумулятор

EX reg1, reg2 LD A,reg1

LD reg1, reg2 LD reg2, A

133. Другие пути обмена между регистрами.

а) между BC и HL:

EX BC, HL PUSH BC

EX HL, (SP) POP BC

б) между произвольными регистровыми парами: EX reg1, reg2 PUSH rp1,

PUSH rp2 POP rp1 POP rp2

134. Обмен между указателями стека и HL.

EX SP, HL EX DE, HL - сохранить HL в DE

LD HL,0 - поместить указатель стека ADD HL,S P в регистр HL EX DE,HL - восстановить HL LD SP, HL - поместить HL в SP EX DE,HL - восстановить в HL значение SP Эта процедура может применяться, если пользователь организует свой машинный стек, отличный от системного, например, при одновременной работе с двумя программами. Они "прозрачны" друг для друга.

135. Обмен индексного регистра с регистровой парой. EX xy,rp PUSH xy

PUSH rp POP xy POP rp

13 6. Обмен индексных регистров. EX IX,IY PUSH IX

PUSH IY POP IX POP IY

137. Очистка аккумулятора.

SUB A или XOR A или LD A,0

Третий вариант работает медленнее, чем два первых и занимает больше памяти, но зато не влияет на флаги. Применяйте тот вариант, который Вам больше подходит.

138. Очистка регистра.

LD reg, 0

139. Очистка заданной ячейки памяти.

SUB A

LD (ADDR) , A

ИЛИ

LD HL,ADDR LD (HL),0

Второй вариант более медленный, но зато не затрагивает ни содержимое аккумулятора, ни флаги.

140. Очистка флага переноса.

AND A ИЛИ OR A

ИЛИ SCF

CCF

2.3.6. Конструкции установления заданного значения

141. Установить в аккумулятре FF. (Аналог LD A,FF)

SUB A DEC A

142. Установить FF в заданном адресе. LD (ADDR) , FF LD A, FF

LD (ADDR) , A

ИЛИ

LD HL,ADDR LD (HL) , FF




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Доска почета - Почта №1: открытое письмо Дмитрия Кленова об информационном голоде на ZX Spectrum.
Одно умное изречение
Поиск - поиск игр, программ.

В этот день...   18 сентября