ti do la spiegazione passo passo in grassetto
1) Scrivere un programma che dati due numeri interi positivi esegua la somma, la sottrazione e stampi somma e differenza.
#include <stdio.h>
main()
{
short int n1;
short int n2;
short int somma;
short int diff;
n1, n2, somma , diff sono variabili intere che tu dichiari
printf("inserisci n1="); // corrisponde al nostro cout<<" inserisci n1 "
scanf("%d",&n1); // corrisponde al nostro cin>>n1
printf("inserisci n2=");
scanf("%d",&n2); // inseriamo n2
qui inizia il modulo assembly
_asm {
MOV AL, n1 carichiamo il numero n1 , ad esempio n1 = 5 nel registro AL
ADD AL, B sommo il valore di B ad AL cioè AL = AL + B cioè AL = 5 + B
MOV somma, AL trasferisco il valore di AL dentro una variabile chiamata somma
cioè somma = AL
MOV AL, n1 trasferisco n1 dentro AL cioè AL = n1
MOV BL, n2 trasferisco n2 dentro BL cioè BL = n2
CMP AL, BL confronto AL con BL cioè confronto n1 con n2 , corrisponde al nostro if
JA qui il codice è sbagliato perchè JA vuol dire Salta se il primo operando è maggiore
del secondo operando, deve saltare da qualche parte SALTA DOVE? manca il punto in cui deve saltare
SUB AL, BL sottrai AL = AL - BL
MOV diff, AL carica nella variabile diff il valore di AL cioè diff = AL
JB errore come prima , salta dove?
SUB BL, AL
MOV diff, BL
}
printf("stampa somma %d",&somma);
printf("stampa diff %d",&diff);
}