home *** CD-ROM | disk | FTP | other *** search
/ Pokey's Magazine 7 / Pokeys_Magazine_07_1991_04___nl_Side_B.atr / lescr.txt < prev    next >
Text File  |  2023-02-26  |  6KB  |  1 lines

  1. ¢¢¢¢¢¢Welkom bij de april aflevering van...¢.............CODERUNNER..............¢¢Deze keer een aantal nieuwe instrukties.¢ BEQ¢ BNE¢ INC¢ DEC¢ INY¢ DEY¢ INX¢ DEX¢ CPX¢ CPY¢ CMP¢¢Eerst INC en DEC.¢Met deze instructies kun je de inhoud van adressen vBEQ¢ BNE¢ INC¢ DEC¢ INY¢ DEY¢ INX¢ DEX¢ CPX¢ CPY¢ CMP¢¢Eerst INC en DEC.¢Met deze instructies kun je de inhoud van adressen verhogen en verlagen.¢Voorbeeld:¢INC $0600 - Dit verhoogt de inhoud van adres $0600 met 1.¢DEC $0600 - Dit verlaagt de inhoud erhogen en verlagen.¢Voorbeeld:¢INC $0600 - Dit verhoogt de inhoud van adres $0600 met 1.¢DEC $0600 - Dit verlaagt de inhoud erhogen en verlagen.¢Voorbeeld:¢INC $0600 - Dit verhoogt de inhoud van adres $0600 met 1.¢DEC $0600 - Dit verlaagt de inhoud erhogen en verlagen.¢Voorbeeld:¢INC $0600 - Dit verhoogt de inhoud van adres $0600 met 1.¢DEC $0600 - Dit verlaagt de inhoud van adres $0600 met 1.¢¢10       * = $0600¢20       LDA #10¢30       STA $3000¢35 ; In lokatie $3000 staat nu het decimale gevan adres $0600 met 1.¢¢10       * = $0600¢20       LDA #10¢30       STA $3000¢35 ; In lokatie $3000 staat nu het decimale gevan adres $0600 met 1.¢¢10       * = $0600¢20       LDA #10¢30       STA $3000¢35 ; In lokatie $3000 staat nu het decimale gevan adres $0600 met 1.¢¢10       * = $0600¢20       LDA #10¢30       STA $3000¢35 ; In lokatie $3000 staat nu het decimale gevan adres $0600 met 1.¢¢10       * = $0600¢20       LDA #10¢30       STA $3000¢35 ; In lokatie $3000 staat nu het decimale getal 10.¢40      INC $3000¢45 ; In lokatie $3000 staat nu het decimale getal 11.¢50      DEC $3000¢55 ; Nu weer 10.¢60      DEC $3000¢65 ; Nu 9 etc.¢¢Verhogen en verlagen kan ook met registers.¢Dit geldt voor de registers X en Y. Voorbeeld:¢INX = verhoog de inhoud van het X-register met 1.¢DEX = verlaag de inhoud van het X-register met 1.¢¢De instrukties BEQ (Branch on Equal)en BNE (Branch on Not Equal) hebben betrekking op het zgn 'voorwaardelijk' springen in een programma.¢Zo kan het zijn dat je naar een ander stukje van je programma wilt springen als een bepaald adres of register een bepaald getal bevat.¢Dat is makkelijk te zien in een eenvoudig voorbeeldprogramma......:¢¢10                 * = $ 0600¢15 TERUG¢20              LDA #0¢25 ; Is het een 0 ?¢26 ; Ja, dus spring naar verder.¢30              BEQ VERDER¢40              .SBYTE "Stukje tekst"¢50  VERDER¢60              LDA #1¢65 ; Is het een 0 ?¢66 ; Nee, dus spring naar terug.¢70              BNE TERUG¢¢Of :¢    LDA ADRES¢    staat er een 0 in lokatie 'ADRES'?¢    BEQ ERGENS¢    zoja spring naar 'ERGENS'¢Het zelfde:¢    LDA $3000¢    BEQ $0600¢¢Of:¢    LDA $3000¢    BNE $0600¢    Spring als er geen 0 in $3000 staat naar $0600¢¢Zo kun je ook kijken of na het verhogen of verlagen van een adres een nul wordt bereikt.¢¢    LDA #40¢    STA $3000¢    Berg 40 op in lokatie $3000¢LUS ( label )¢    DEC $3000¢    Verlaag de inhoud van lokatie $3000¢    BNE LUS¢    Blijf terug springen naar 'LUS' tot een 0 wordt bereikt.¢¢Of:¢    LDA #0¢    STA $3000¢LUS¢    INC $3000¢    BNE LUS¢    Ga 255 keer rond.¢¢Met de opdracht CMP (CoMPare) kun je de accumulator vergelijken met een bepaald getal.¢Bijvoorbeeld:¢    LDA $3000¢    CMP #34¢    Vergelijk de inhoud van lokatie $3000 met het getal 34.¢    BEQ VERDER¢    Spring als de getallen gelijk zijn naar lokatie 'VERDER'¢    In feite worden de getallen bij de opdracht CMP van elkaar afgetrokken. Zijn ze gelijk dan onstaat als resultaat een 0.¢    Als de aftreksom niet op 0 uitkomt wordt hier dus niet gesprongen.¢    Dat is omgekeerd met de opdracht BNE.¢    CMP #34¢    BNE VERDER¢    Spring steeds als lokatie $3000 niet het getal 34 bevat.¢¢Het X en Y register zijn op een dergelijke manier te testen.¢Dit gaat via de opdrachten : CPX en CPY¢¢    CPX #12¢    BEQ ERGENS¢    Spring als in X het getal 12 staat naar ergens.¢    CPY #33¢    BNE ERGENS¢    Spring niet naar ERGENS als in Y het getal 33 staat.¢¢Zo kun je met deze registers eenvoudig tellers produceren.¢De registers X en Y kun je ook eenvoudig verhogen en verlagen.¢¢    INY¢    Verhoogt Y met 1.¢    DEY¢    Verlaagt Y met 1.¢    INX¢    Verhoogt X met 1.¢    DEX¢    Verlaagt X met 1.¢¢Bijvoorbeeld :¢    *=$0600¢LUS¢    INY¢    Verhoog Y met 1¢    CPY #100¢    Vergelijk Y met 100¢    BNE LUS¢    Spring terug naar lus en ga dus door met het verhogen van Y tot 100 is bereikt.¢¢Of:¢    *=$0600¢    LDX #100¢    DEX¢    Verlaag X.¢    BNE $0600¢    Spring terug naar $0600 tot X een 0 bevat.¢¢Op deze manier wordt vaak een vertragingslus in een programma gezet. Bijvoorbeeld om het programma ergens trager te laten lopen. Dat is bij machinetaal meer dan eens nodig.¢¢PAUZE¢    LDX #40¢LUS1¢    LDY #255¢LUS2¢    DEY¢    BNE LUS2¢    Spring 255 maal naar 'LUS2' tot Y een 0 bevat.¢    DEX¢    Verlaag dan X met 1.¢    BNE LUS1¢    Doe de lus met het Y register opnieuw tot X een 0 bevat.¢Zo hebben we dus 40 keer het register Y van 255 tot 0 laten tellen.¢¢Dit kan ook met lokaties, maar dat is trager. Voor een vertraging is dat niet zo erg.¢¢PAUZE¢     LDA #40¢     STA $03000¢LUS1¢     LDA #255¢     STA $03001¢LUS2¢     DEC $03001¢     BNE LUS2¢     DEC $03000¢     BNE LUS1¢¢Verhoog de kleur van het beeldscherm alle kleuren langs.¢KLEUR¢    LDY #0¢LUS¢    STY 710¢    INY¢    BNE LUS¢Daar zie je niks van.¢Zo wel :¢KLEUR¢    LDA #0¢    STA 710¢LUS¢    LDX #255¢LUS1¢    LDY #255¢LUS2¢    DEY¢    BNE LUS2¢    DEX¢    BNE LUS1¢    INC 710¢    BNE LUS¢Vooral in machinetaal is de 'timing' van een programma belangrijk.¢Vaak kun je met een net iets andere manier van programmeren een andere timing bereiken.¢Het voorbeeldprogramma laat weer het een en ander over het scherm rollen. Met bovenstaande uitleg moet het te volgen zijn.¢Laat zelf eens wat over het scherm lopen in verschillende snelheden.¢¢Tot de volgende keer.¢Jack de Bruijn.¢¢¢¢¢¢¢¢¢¢¢¢¢¢ə