lunedì 20 giugno 2011

cerca lettera

ORG $8000
STRINGA DC.B 'no one likes you',0
SUM DS.W 1

* Inizio area codice del MAIN
ORG $8400
MAIN ADDA #-2,SP
PEA STRINGA
JSR CONTA
MOVE.W 4(SP),SUM
ADDA #6,SP
CLR.L D0-D5/A0-A5
STOP #$2000

*Inizio subroutine
ORG $8800
CONTA LINK A6,#0
MOVEM.L A0/D0-D2,-(SP)
CLR.L D2
MOVEA.L 8(A6),A0
CICLO MOVE.B (A0)+,D1
BEQ FINE
CMP #32,D1
BEQ CICLO
ADD #1,D2
BRA CICLO
FINE MOVE D2,12(A6)
MOVEM.L (SP)+,A0/D0-D2
UNLK A6
RTS


END MAIN

contadispari

ORG $8000 Inizio area MAIN
MAIN ADDA #-2,SP
PEA VETT
JSR CONTADISP
ADDA #4,SP
MOVE.W (SP)+,RIS
STOP #$2000

ORG $8100 Inizio area SUBROUTINE
CONTADISP LINK A6,#0
MOVEM.L A0/D0/D1,-(SP)
CLR D0
CLR D1
MOVEA.L VETTOFF(A6),A0
LOOP MOVE.W (A0)+,D1
BEQ FINE
BTST #0,D1
BEQ LOOP
ADDQ #1,D0
BRA LOOP

FINE MOVE.W D0,RISOFF(A6)
MOVEM.L (SP)+,A0/D0/D1
UNLK A6
RTS
ORG $8200
VETT DC.W 1,5,6,3,7,4,2,0
RIS DS.W 1

VETTOFF EQU 8
RISOFF EQU 12
END MAIN

inciarmo

RESoff EQU 14
DIMoff EQU 12
V1off EQU 08
V2off EQU 04
RIToff EQU 00


*main:
ORG $8000
INIZIO ADDA #-4,SP
MOVE.W DIM,-(SP)
MOVE.L #V1,-(SP)
MOVE.L #V2,-(SP)

JSR PRODSCAL
MOVE.L (SP)+,RES
FINE JMP FINE


*sottoprog:

PRODSCAL MOVEA.L RIToff(SP),A2
MOVEA.L V2off(SP),A1
MOVEA.L V1off(SP),A0
MOVE.W DIMoff(SP),D0

CLR.L D7

SOMMA MOVE.B (A0)+,D1
MOVE.B (A1)+,D2
MULT MULU D1,D2
ADD.L D2,D7
CTRL SUB #1,D0
BNE SOMMA
ESCI MOVE.L D7,RESoff(SP)
ADDA.L #RESoff,SP

JMP (A2)
*dati:

ORG $8100
V1 DC.B 0,1,3,2
V2 DC.B 3,2,2,1
DIM DC.W 4
RES DS.L 1

END INIZIO