Testo:
Si scriva un programma in linguaggio Assembler 8086 che esegua le seguenti operazioni:
a)Definisca un vettore VETT di N elementi ciascuno su 32 bit, inizializzato a piacimento a numeri positivi e negativi, senza utilizzare la direttiva DUP
b)Esegua la somma di tutti numeri positivi contenuti in VETT e depositi il risultato in una variabile VARP su 32 bit
c)Esegua la somma di tutti numeri negativi contenuti in VETT e depositi il risultato in una variabile VARN su 32 bit
d)Si tenga conto dell’eventuale overflow:
d1)in caso di overflow nella somma dei numeri positivi, la variabile VARP deve essere posta al valore 0
d2)in caso di overflow nella somma dei numeri negativi, la variabile VARP deve essere posta al valore 0.
Soluzione:
N EQU 4
.model small
.stack
.data
vett dd -1, 2.4, 3.2, -5.3
varp dd 0d
varn dd 0d
.code
.startup
LEA SI, vett
MOV CX, N
ciclo:
MOV AX, [SI]
ADD SI, 2
MOV BX, [SI]
CMP AX, 0
JG positivo
ADD varn+2, BX
ADC varn, AX
JNO fine
MOV varn, 0
MOV varn+2, 0
JMP fine
positivo:
ADC varp+2, BX
ADD varp, AX
JNO fine
MOV varp, 0
MOV varp+2, 0
JMP fine
fine:
ADD SI, 2
LOOP ciclo
.exit
end
| < Prec. | Succ. > |
|---|






