|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
[assembler] MOV AX,BH Trasferire da registro a 8 bit a registro a 16 bit
So che la cosa direttamente non si può fare infatti
MOV AX,BH esempio è sbagliato ma allora come faccio a risolevere il problema??? C'è qualche modo per farlo???? cmq il codice il question è il seguente: Codice:
.MODEL SMALL .STACK 100H .DATA n1 DB 00 n2 DB 00 ris DB 00 .CODE .STARTUP MOV AH,01H INT 21H SUB AL,30H MOV n1,AL ; legge il primo numero e lo sposta in n1 ;Codice per andare a capo MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H ;Fine a capo MOV AH,01H INT 21H SUB AL,30H MOV n2,AL ; legge il secondo numero e lo sposta in n2 ;Codice che fa la divisone MOV BH,n1 MOV BL, n2 MOV AX,BH ;ECCO L'ERRORE MA COME LO CORREGGO???? NELLA DIV IL DIVIDENDO DEVE STARE PER FORZA IN AX SOLO CHE COSI TRASFERISCO DA UN REGISTRO A 8 A UNO A 16 CHE NON SI PUò? COME FACCIO??? DIV BL MOV ris, AL ;Codice che stampa il risultato MOV DL,ris ADD DL,30H MOV AH,02H INT 21H .EXIT END - il risultato è in AL in AH c'è il resto (che a me non interessa) - Devo spostare il AX il dividendo e in un altro registro il divisore... Grz in anticipo a tutti ciao Davide
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
UP
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Ho risolto così:
Codice:
.MODEL SMALL .STACK 100H .DATA n1 DB 00 n2 DB 00 ris DB 00 op DB 00 mess1 DB "Inserisci il primo nummero: $" mess2 DB "Inserisci il secondo nummero: $" mess3 DB "Inserisci operatore: $" mess4 DB "Il risultato e' $" som DB "Somma $" divis DB "Divisione $" sottra DB "Sottrazione $" moltip DB "Moltiplicazione $" .CODE .STARTUP ;Inizio aquisizione numeri LEA DX,mess1 MOV AH,09H INT 21H ; stampa mess1 MOV AH,01H INT 21H SUB AL,30H MOV n1,AL ; legge il primo numero e lo sposta in n1 MOV DL,0AH ; inizio - a capo MOV AH,02H INT 21H ; fine MOV DL,0DH ; inizio-charrege return MOV AH,02H INT 21H ; fine LEA DX,mess2 MOV AH,09H INT 21H ; stampa mess2 MOV AH,01H INT 21H SUB AL,30H MOV n2,AL ; legge il secondo numero e lo sposta in n2 MOV DL,0AH ; inizio - a capo MOV AH,02H INT 21H ; fine MOV DL,0DH ; inizio-charrege return MOV AH,02H INT 21H ; fine LEA DX,mess3 MOV AH,09H INT 21H ; stampa mess3 MOV AH,01H INT 21H MOV op,AL ; legge l'operatore e lo sposta in op MOV DL,0AH ; inizio - a capo MOV AH,02H INT 21H ; fine MOV DL,0DH ; inizio-charrege return MOV AH,02H INT 21H ; fine ;Fine Aquisizione di n1,n2,op MOV AH,op CMP AH,"+" JE SOMMA ;salta se e vero CMP AH,"-" JE DIFFERENZA CMP AH,"*" JE MOLTIPLICAZIONE JMP DIVISIONE ;Fine confronti SOMMA: MOV AH,n1 MOV AL,n2 ADD AH,AL MOV ris,AH JMP FINE DIFFERENZA: MOV AH,n1 MOV AL,n2 SUB AH,AL MOV ris,AH JMP FINE MOLTIPLICAZIONE: MOV BH,n1 MOV BL,n2 MOV AL,BH MUL BL MOV ris,AL JMP FINE DIVISIONE: MOV AL, n1 MOV AH,00 MOV BL, n2 DIV BL MOV ris, AL JMP FINE FINE: ;Stampo il risultato LEA DX,mess4 MOV AH,09H INT 21H ; stampa mess4 MOV DL,ris ADD DL,30H MOV AH,02H INT 21H .EXIT END Queste so state le righe chiave: MOV AL, n1 MOV AH,00
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
a) Generica MOV AL,BH XOR AH,AH b) Solo per 80386+ MOVZX AX,BH
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Grazie mille. Ora provo anche l'altro metodo per vedere se funziona.
XOR AH,AH è uguale a dire MOV AH,0 vero???? Grazie ciao
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
L'istruzione MOVZX (è una MOV con Zero Extension), come ho già detto, è disponibile solo a partire dagli 80386 in poi. Se non stai lavorando su sistemi DOS con processori 8086 o 80286 (e chi li ha ancora???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:09.



















