Ciao a tutti, devo dare l'esame di laboratorio di architettura degli elaboratori nel prossimo mese e sto svolgendo gli esercizi che ha dato la professoressa.
Mi sono inpallato su questo esercizio, non ho capito se in base alla traccia l'ho fatto bene. Potete controllare e darmi una vostra opinione. Grazie a tutti in anticipo.
La Traccia è la seguente:
Scrivi un frammento assembly che
1. Lasci in DX,AX il valore di (a*(b-c) *d) dove a, b, c, d denotano
rispettivamente il contenuto di AL, BL, CL, e DL in formato signed ad
8 bit. (assumi che il risultato sia rappresentato come signed a 32 bit)
Il codice che ho scritto è questo:
;lasci in DX,AX il valore di (a*(b-c)*d)
;dove a,b,c,d denotano rispettivamente il contenuto di AL,BL,CL,DL in formato signed ad 8 bit
;(assumi che il risultato sia rappresentato come signed a 32 bit)
dati segment
a db 2
b db 4
c db 2
d db 2
ris dd 0
ends
code segment
ASSUME DS:DATI,CS:CODE,SS:STACK
START:
MOV AX,DATI
MOV DS,AX
MOV ES,AX
;*********INIZIALIZZO***********
XOR AX,AX ;inizializzo AX,BX,CX,DX
XOR BX,BX
XOR CX,CX
XOR DX,DX
INIZIOPROGRAMMA:
MOV AL,a
MOV BL,b
MOV CL,c
MOV DL,d
OPERAZIONI:
SUB BX,CX; Faccio la sottrazione b-c
MOV CX,DX;Sposto CX in DX
IMUL DX; Moltiplico a*b AX:DX
IMUL BX; Moltiplico a*d il risultato stara' in AX:DX
MOV ris,AX
ends
end start
Le cose che non ho capito se le ho fatte bene sono le seguenti:
- Lasci in DX,AX il valore di (a*(b-c) *d)
- Assumi che il risultato sia rappresentato come signed a 32 bit