30 августа 1996 |
|
+------------------------------+ | ----- ПРОГРАММИСТАМ ----- | +------------------------------+ Сегодня в разделе процедуры: 1."Слияние картинок" 2."Инвертирование экрана" З."Сдвиг влево на один пиксел" 4."Сдвиг вправо на один пиксел" 1." Слияние картинок " Эта процедура объединяет картин- ку, храняшуюся в ОЗУ , с текущим экраном.Атрибуты не изменяются. LD HL,16З84 LD DE,ADDR LD ВС,6144 LOP LD А,(DE) OR (HL) LD (HL),А INC HL INC HL DEC ВС LD А,В OR С JR NZ,LOP RET Как она работает : В пару регистров HL загружается начальный адрес экрана , в пару регистров DE загружается адрес картинки храняшуюся в ОЗУ, реги- стровая пара ВС служит счетчиком В аккумулятор А загружается байт с адресом в DE и выполняется ло- гическое 'ИЛИ' ( OR ) этого зна- чения с байтом экрана. Результат помещается в область экрана. HL и DE перемещаются на следу- ющую позицию,счетчик уменьшается Если счетчик не равен нулю, то процедура возвращается назад для повторения процесса со следующем байтом. 2." Инвертирование экрана " Эта процедура инвертирует все в экране : если пиксель включен,он сбрасывается, если выключен , то устанавливается. LD HL,16З84 LD ВС,6144 LD D,255 LOP LD А,D SUB (HL) LD (HL),А INC HL DEC ВС LD А,В OR С JR NZ,LOP RET Как она работает : В пару регистров HL загружается адрес начала экрана, а в ВС за- гружается его длина. В D-регистр записывается число 255. Всякий раз когда процедура возвращается к LOP, в аккумулятор загружается значение из D-регистра. Значение байта,хранящегося по адресу,ука- занному в HL,вычитается из акку- мулятора,а результат загружается в тот же самый байт.Таким обра- зом делается инвертирование. HL увеличивается , указывая на следующий байт , а счетчик ВС уменьшается на единицу , если он не равен нулю, то процедура воз- вращается к LOP. З."Сдвиг влево на один пиксел" Эта процедура сдвигает все содержимое экрана на один пиксел влево. Атрибуты не изменяются. LD HL,22527 LD С,192 LOP1 LD В,З2 OR А LOP2 RL (HL) DEC HL DJNZ LOP2 DEC С JR NZ,LOP1 RET Как она работает : В пару регистров HL загружается адрес последнего байта экрана, а в регистр С загружается колли- чество линий в экране. В регистр ' В ' загружается колличество байтов в одной линии.Флаг пере- носа устанавливается в ноль. Байт, адресованый HL сдвигается на один бит влево , бит переноса копируется в крайний правый бит, а крайний левый бит копируется во флаг переноса. Пара регистров HL уменьшается для указания на следующий байт. Счетчик ' В ' уменьшается. Если он не равен 0, то осуществляется переход на LOP2 , иначе уменьшается коли- чество обрабатываемых линий, и, если оно не равно 0,подпрограмма возвращается к процедуре LOP1. 4."Сдвиг вправо на один пиксел" Эта процедура сдвигает все содержимое экрана на один пиксел вправо. Атрибуты не изменяются. LD HL,16З84 LD С,192 LOP1 LD В,З2 OR А LOP2 RR (HL) INC HL DJNZ LOP2 DEC С JR NZ,LOP1 RET Как она работает : В пару регистров HL загружается адрес начала экрана, а в регистр 'С' колличество линий на экране. В регистр 'В' загружается колли- чество байтов на одной линии. Флаг переноса устанавливается в 0.Байт по адресу HL сдвигается на один бит вправо, бит переноса копируется в крайний левый бит, а крайний правый бит копируется во флаг переноса.Пара регистров HL увеличивается , указывая на следующий байт и счетчик ' В ' уменьшается.Если он не равен 0, то программа переходит на LOP2, иначе уменьшается колличество обрабатываемых линий, и, если не равно 0, подпрограмма переходит на LOP1. Небольшой ананос - В следующем выпуске вы можете узнать : Как поставить защиту от Magic на компьютере Scorpion . Как перехватить кнопку Magic в том же компьютере. __________________________________________
Other articles:
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 21 November