edutecnica

Esercizio 5        

Per calcolare l'MCD tra due numeri naturali useremo un algoritmo basato sul seguente flowchart dove i due numeri da confrontare vengono inizialmente posti nei registri BL e BH.


TITLE SETTE
;calcola MCD di due numeri
.
MODEL SMALL
.STACK .DATA
.CODE
MOV BH,15
MOV BL,6
TESTA: CMP BH,BL
JE FINE
JB GIRA
SUB BH,BL ;se i due registri non sono uguali e BH
;non è minore, vuol dire che è maggiore
JMP TESTA GIRA:
SUB BL,BH;se si arriva qui se BH è minore di BL
JMP TESTA
FINE: MOV AL,BH ;si arriva qui se i due numeri sono uguali
CALL TRAD
MOV AX,4C00H
INT 21H

TRAD PROC NEAR
MOV CL,10
DIV CL;
PUSH AX
CMP AL,0
JE SALTA
ADD AL,48 ; stampa del quoto
MOV AH,02
MOV DL,AL
INT 21H
SALTA: POP AX
XCHG AL,AH
ADD AL,48 ; stampa del resto
MOV AH,02
MOV DL,AL
INT 21H
RET
TRAD ENDP
END

L'algoritmo confronta i due numeri e sottrae il più piccolo attuale dal più grande, finchè i valori contenuti nei valori dei due numeri correnti non diventano uguali..