Subliminal Extacy #02
01 января 1995

Playing With The Index Registers

Playing With The Index Registers
                Playing With The Index Registers                
                --------------------------------                
                         By Bogie Of E-3                        
                         ---------------                        
NB: Some knowledge of m/c is needed for this article!!!         
                                                                
In this article I am going to tell you things about IX and IY   
you NEVER knew.  In all the manuals and m/c books that I have   
seen, they state that IX and IY cannot be split up, i.e.        
                             LD X,50                            
is not possible to do.  But infact you CAN do this!!!           
                                                                
I started looking into this when ICABOD told me that he had     
found out (via the internet) that there are ways of doing this. 
So I decided to look further into how IX and IY work!!!  All    
that the IX and IY do is take the op-code for HL and prefix it  
with #DD for IX and #FD for IY.

For convenience I shall call the hi byte of IX hX and the low   
byte of IX X. I shall only use IX today but if you wish to use  
IY then just change #DD to #FD!!!!                              
                                                               
For a small example type this into yor assembler and PRINT USR  
the address to which you assemble it to!!!                      
                                                                
       LD IX,0       
       LD HL,65535   
       DEFB #DD      
       LD L,50       
       PUSH IX       
       POP BC        
       RET           
                                                               
Because it looks like I don't change IX in anyway, you would    
expect 0 to be printed.  But infact 50 is printed!!!!  This is  
due to 'Prefixing' LD L,50 by #DD, which changes it into        
LD X,50.  Which apparantly is impossible!!!!!                   
                                                                
It is also possible to LoaD hX and X by other registers!!!!     
                                                                
       LD IX,0                                                 
       LD DE,12345   
       DEFB #DD                                               
       LD H,D                                                 
       DEFB #DD                                               
       LD L,E                                                 
       PUSH IX                                                
       POP BC                                                 
       RET
                                                                
If you PRINT USR then 0 will not be Printed but infact  2345    
will be printed!!  This is because this is what you have really 
DONE:                                                        
      LD IX,0                                               
      LD DE,12345                                            
      LD hX,D                                                
      LD X,E                                                
      PUSH IX                                               
      POP BC                                                
      RET                                                       
Which your assembler will not be able to cope with because      
according to Sinclair Research, is NOT possible!!  There are    
some LD X,r which I have yet to find out how to do, these are:  
                                                               
      LD X,Y                                                
      LD hX,Y                                               
      LD X,hY                                               
      LD hX,hY                                              
      LD X,H                                               
      LD X,L                                               
      LD hX,H                                                
      LD hX,L                                                   
These maybe possible but not in an easy to understand way, but  
if ICABOD can find the informtion on the internet again, then   
maybe he can update us in the next issue of Subliminal Extacy   
                                                                
You can also use hX and X in logic operations, for example:     
                                                                
      LD IX,0                                                  
      DEFB #DD                                                 
      LD L,69                                               
      LD L,0                                                
      LD A,69                                               
      DEFB #DD                                              
      AND L                                                
      DEFB #DD                                              
      LD L,A                                               
      PUSH IX                                              
      POP BC                                                   
      RET                                                       
What this does is LoaD X,69                                     
                  LoaD A,69                                     
                  And X                                         
So 69 And 69 = 69, so 69 will be printed with PRINT Usr.        
                                                                
I hope you can understand this article but just incase here is a
basic run down of this article:                                 
                                                                
DEFB #DD  LD H,n  =  LD hX,n                                   
DEFB #DD  LD H,r  =  LD hX,r                                   
DEFB #DD  LD L,n  =  LD X,n                                    
DEFB #DD  LD L,r  =  LD X,r                                  
DEFB #DD  AND H   =  AND hX                                  
DEFB #DD  AND L   =  AND X                                  
DEFB #DD  OR H    =  OR hX    
DEFB #DD  OR L    =  OR X                                   
DEFB #DD  XOR H   =  XOR hX                                  
DEFB #DD  XOR L   =  XOR X                                  
DEFB #DD  INC H   = INC hX                                 
DEFB #DD  INC L   =  INC X                                     
DEFB #DD  DEC H   =  DEC hX                                    
DEFB #DD  DEC L   =  DEC X                                      
                                                               
That's all for now, happy coding.                  Bogie of E-3! 



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

How To Use Subliminal Extacy #2

How To Contribute To Subliminal Extacy

IMPORTANT!

Editorial

Karaoke Anyone?

Bogie's Got No Penis!

HOW TO WRITE A CRAP DEMO - PART 2

WEIRD GAME CORNER

20 THINGS TO STICK UP YOUR FANNY

AMANDAS ALL NEW X-RATED DIARY

ASK UNCLE FUDGEPACKER

GIRLZILLAS GUIDE TO LAGER

SPECTRUM SET-UPS

20 THINGS TO DO IF YOUR FOOTBALL TEAM IS LOSING AWAY

THE VOICE OF THE PEOPLE

SPECTRUM SUPPORT SCENE

Chinese Proverbs

Stupid Lists

I'M A BIT SILLY

Basics Of Machine Code - Part 2

ACB Stereo - A New Sound Experience

How To Be Lame

Mother Yolpa Gives Birth

Playing With The Index Registers

A DREAM

WHAT THE HELL IS THE WoMo-TEAM?

English To German Household Terms

Euronews

Who To Write Too

Buy your games from Sintech!

FREE SOfTWARE AND MAGIC CARPETS!

The Final Words Of Wisdom


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

Похожие статьи:
X-Files - Воздействие НЛО на почву и растительность.
Nonsese - процедура и описание алгоритма эффекта Пламени (огня).
Вступление - содержание номера.
AMIGA NEWS - Программинг на Amiga: О Amiga изнутри, Графика, Сопроцессоры, Особенности ассемблера.
Наша Челяба - Слухи.

В этот день...   25 апреля