PDA

View Full Version : [Assembly 8086]Chiarimenti esercizio per domani....è urgente!


>>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.:)

>>The Red<<
04-05-2010, 17:16
Ragazzi, per favore è urgentissimo!!!:ave: :ave: :ave: