* * * Z80 SIMULATION v3.00 (Freeware) * * * | |
Esempi di Programmazione |
ESEMPIO 1
Il programma che segue effettua la moltiplicazione di due numeri a 8 bit in complemento a 2. I numeri possono essere compresi tra -128 e 127 ed il il risultato sarà espresso da un valore a 16 bit sempre in complemento a 2.
;**************************
; MOLTIPLICAZIONE 8X8 BIT; H <-- MOLTIPLICATORE
; E <-- MOLTIPLICANDO
; PRODOTTO --> HL ;
;**********************************XOR A
LD C,A
OR H
JP P,NONEG1
NEG
LD H,A
SCF
RL C
NONEG1 XOR A
OR E
JP P,NONEG2
NEG
LD E,A
SCF
RL C
NONEG2 CALL MULT
XOR A
OR C
JP PE,FINE
PUSH HL
POP DE
LD HL,#0000
SBC HL,DE
FINE HALT
;..........................
; ROUTINE DI MOLTIPLICAZIONE ;
; DI INTERI POSITIVI ;
;.........................;
LENGTH EQU 8
MULT LD B,LENGTH
LD L,0
LD D,L
LOOP ADD HL,HL
JR NC,NOADD
ADD HL,DE
NOADD DJNZ LOOP
RET
ESEMPIO 2
Il programma che segue effettua la divisione tra 2 numeri positivi. Il dividendo è un numero a 16 bit (registro HL) mentre il divisore è un numero a 8 bit (registro C). Il quoziente a 16 bit viene memorizzato al termine del programma in HL mentre il resto a 8 bit nell'accumulatore.
;*************************************
; ROUTINE DI DIVISIONE FRA ;; NUMERI NATURALI ;
; HL DIVIDENDO ;
; C DIVISORE ;
; ------------------------------------------- ;
; HL QUOZIENTE ;
; A RESTO ;
;*************************************
LD B,16
XOR A
LODIV ADD HL,HL
RL A
JR C,OVFLOW
CP C
JR C,NOSUB
OVFLOW SUB C
INC HL
NOSUB DJNZ LODIV
HALT