Estrazione radice quadrata con registri da 8 o 16 bit                    
         =====================================================

        ;PROGRAMMA IN ASSEMBLER 51 - ESTRAZIONE RADICE QUADRATA
        ;REGISTRI A 8 BIT - RISULTATO INTERO IN R2 OPPURE IN ACC
        ;IL PROGRAMMA ESEGUE A=A+2 FINO A QUANDO A=R1          
        ;I DATI SONO TUTTI IN DECIMALE  
      
          MOV PSW,#0     ;USO REGISTRI BANCO 0
          MOV R1,#200    ;NUMERO DA ESTRARRE RQ IN R1
          MOV R2,#0      ;REGISTRO RISULTATO
          MOV ACC,#1     ;REGISTRO ACCUMULATORE
          MOV R3,#1      ;REGISTRO USO COMUNE
          CLR C         
   UNO:   INC R2
          INC R3
          INC R3
          ADD A,R3
          JC DUE         ;SALTA CON CARRY
          CLR C
          PUSH ACC
          DEC ACC
          SUBB A,R1
          POP ACC
          JC UNO         ;SALTA CON CARRY
   DUE:   MOV A,R2       ;FINE
          NOP
         
          END

        ;PROGRAMMA IN ASSEMBLER Z80 - ESTRAZIONE RADICE QUADRATA
        ;REGISTRI A 16 BIT - RISULTATO INTERO NEI REGISTRI A E B
        ;IL PROGRAMMA ESEGUE HL=HL+2 FINO A QUANDO HL=DE
        ;I DATI SONO TUTTI IN DECIMALE
     
          LD DE,50000     ;NUMERO DA ESTRARRE RQ IN DE
          LD BC,1         ;REGISTRO USO COMUNE
          LD A,0          ;REGISTRO RISULTATO
          LD HL,1         ;REGISTRO ACCUMULATORE
          AND A           ;CARRY = 0
   UNO:   INC A
          INC BC
          INC BC
          ADD HL,BC
          JRC DUE         ;SALTO RELATIVO CON C=1
          AND A
          PUSH HL
          DEC HL
          SBC HL,DE
          POP HL
          JRC UNO         ;SALTO RELATIVO CON C=1
   DUE:   LD B,A          ;FINE
          NOP
         
          END          

           
Saluti, Emilio - ik1wjq. 

(Vai a pagina1)