Star #01
30 августа 1996

Программистам - Слияние картинок, инвертирование экрана, сдвиг влево на один пиксел, сдвиг вправо на один пиксел.

<b>Программистам</b> - Слияние картинок, инвертирование экрана, сдвиг влево на один пиксел, сдвиг вправо на один пиксел.


+------------------------------+
|  ----- ПРОГРАММИСТАМ -----   |
+------------------------------+
                                
Сегодня в разделе процедуры:    
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 в
том же компьютере.              
__________________________________________



Другие статьи номера:

От редакции - Здравствуйте дорогие читатели!

Юмор - Анекдоты.

Программистам - Слияние картинок, инвертирование экрана, сдвиг влево на один пиксел, сдвиг вправо на один пиксел.

Система - Саtаlоuge Рlus, Соnvertоr S.Т.-D.S., З.В.V.bооt, Сhemnesоft bооt.

Хит-парад

Новинки - Аlast hero of the light force, Dune 2, Городки.

Игрушки - Питон.

Реклама


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

Похожие статьи:
Перо - Анжей Иконников-Галицкий.
От редакции - Содержание номера.
Сам себе Пушкин - Денис Гаврилов, Eлена Зотова, Сергей Фролов, Oксана Кряжова, Bиктор Королёв, Сергей Колесников.

В этот день...   8 декабря