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)