>>The Red<<
04-05-2010, 14:28
Ragazzi, per domani devo far eun esercizio in Assembly(8086), volevo chiedervi se è fatto bene.
L'esercizio è:
1.Scrivere un programma in assembly che calcoli l'espressione: (A-B*2)+D.
A,B,D sono variabili numeriche di 1 byte.
Indicare a fianco di ciascuna istruzione il contenuto dei registri interessati dopo l'esecuzione dell'istruzione stessa.
2.Dato l'esercizio precedente, illustrare il layout del segmento dati risultante B, supponendo che il registro DS contenga il valore esadecimale C8, indicare l'offset e l'indirizzo assoluto di ciascuna variabile.
Il programma l'ho fatto:
var segment
A DB ?
B DB ?
D DB ?
E DB 'inserire un numero' 10,13,"$"
var ends
pila segment stack
DW 100 dup
pila ends
progr segment
assume CS:progr, DS:var, DS:pila
inizio:
MOV AX, VAR
MOV DS, AX
MOV AX ,PILA
MOV SS,AX
LEA DX, E ;output stringa
MOV AH, 9H
INT 21H
MOV AH, 1H ;input A
INT 21H
SUB AL, 30
MOV A, AL
LEA DX, E ;output stringa
MOV AH, 9H
INT 21H
MOV AH, 1H ;input B
INT 21H
SUB AL, 30
MOV B, AL
LEA DX, E ;output stringa
MOV AH, 9H
INT 21H
MOV AH, 1H ;input D
INT 21H
SUB AL, 30
MOV B, AL
MOV AL, B ;calcolo espressione
ADD AL, B
SUB A, AL
ADD AL, D
ADD AL,30
LEA DX, AL ;output risultato dell'espressione
MOV AH,2H
INT 21H
MOV AH, 4CH
INT 21H
end inizio
Il programma è fatto bene o ci sono errori?
Potete aiutarmi ad indicare i valori dei registri?
Potete aiutarmi a rispondere al secondo esercizio?
Grazie 1000 a chi mi aiuta.:)
L'esercizio è:
1.Scrivere un programma in assembly che calcoli l'espressione: (A-B*2)+D.
A,B,D sono variabili numeriche di 1 byte.
Indicare a fianco di ciascuna istruzione il contenuto dei registri interessati dopo l'esecuzione dell'istruzione stessa.
2.Dato l'esercizio precedente, illustrare il layout del segmento dati risultante B, supponendo che il registro DS contenga il valore esadecimale C8, indicare l'offset e l'indirizzo assoluto di ciascuna variabile.
Il programma l'ho fatto:
var segment
A DB ?
B DB ?
D DB ?
E DB 'inserire un numero' 10,13,"$"
var ends
pila segment stack
DW 100 dup
pila ends
progr segment
assume CS:progr, DS:var, DS:pila
inizio:
MOV AX, VAR
MOV DS, AX
MOV AX ,PILA
MOV SS,AX
LEA DX, E ;output stringa
MOV AH, 9H
INT 21H
MOV AH, 1H ;input A
INT 21H
SUB AL, 30
MOV A, AL
LEA DX, E ;output stringa
MOV AH, 9H
INT 21H
MOV AH, 1H ;input B
INT 21H
SUB AL, 30
MOV B, AL
LEA DX, E ;output stringa
MOV AH, 9H
INT 21H
MOV AH, 1H ;input D
INT 21H
SUB AL, 30
MOV B, AL
MOV AL, B ;calcolo espressione
ADD AL, B
SUB A, AL
ADD AL, D
ADD AL,30
LEA DX, AL ;output risultato dell'espressione
MOV AH,2H
INT 21H
MOV AH, 4CH
INT 21H
end inizio
Il programma è fatto bene o ci sono errori?
Potete aiutarmi ad indicare i valori dei registri?
Potete aiutarmi a rispondere al secondo esercizio?
Grazie 1000 a chi mi aiuta.:)