Testo:
Si scriva un programma in linguaggio Assembler 8086 che esegua le seguenti operazioni:
a)Definisca due variabili VAR1 e VAR2 su 16 bit
b)Ne calcoli e memorizzi in VAR3 il massimo comune divisore utilizzando il metodo dei resti.
Il metodo dei resti implementato in C:
int N = 18, M = 12;
int MCD;
int MIN, MAX, RESTO;
if (N<M) { MIN = N;
MAX = M;
} else {
MIN = M; MAX = N;
}
while(MIN!=0){ RESTO = MAX % MIN;
MAX = MIN; MIN = RESTO;
} MCD = MAX; //risultato MCD = 6
Soluzione:
N EQU 16
.model small
.stack
.data
var1 dw 21
var2 dw 28
var3 dw ?
.code
.startup
MOV CX, var1
MOV DX, var2
CMP CX, DX
JG maggiore:
MOV AX, DX
MOV BX, CX
JMP dopo
maggiore:
MOV AX, CX
MOV BX, DX
dopo:
;AX maggiore
;BX minore
ciclo:
CWD
IDIV BX
MOV AX, BX
MOV BX, DX
CMP BX, 0
JNE ciclo
MOV var3, AX
.exit
end
| < Prec. | Succ. > |
|---|






