Esercizio assembly loop

di Anonimizzato20351 il
8 risposte
Salve, dovrei fare un esercizio in assembly per scuola, il testo dice così: "Dati due numeri , moltiplicarli attraverso somme e scrivere il risultato in memoria centrale".
Io volevo fare così: fare un loop che continui a sommare il numero per se stesso e sommare 1 ad un contatore finché non arriva al numero del 2° fattore, non so se mi sono spiegato
Ho trovato su internet che basta utilizzare il comando "INC" per fare un loop ma non so di preciso come usarlo e come fare in modo che il loop si interrompa quando il contatore arrivi a il valore del 2° fattore.

8 Risposte

  • Se usi una INC che incrementa devi fare il controllo se sei arrivato al valore finale con altre istruzioni per poi eseguire il salto.

    Al posto di tutto ciò, puoi utilizzare l'istruzione LOOP che decrementa il valore di cx e automaticamente controlla il valore saltando se non è zero.
    Quindi carichi in cx il valore e il ciclo lo concludi con LOOP
  • Forse ho capito utilizzando INC, però mi serve una conferma, con il comando JL posso scrivere per esempio"JL BL,CL"? Scusate se sono domande banali ma sono proprio agli inizi e il prof. non spiega molto bene
  • Hai letto quello che ti ho risposto?
  • Sì, però non ho molto capito, praticamente con loop lui di decrementa direttamente il 2° fattore per ogni somma che è stata fatta?
  • LOOP è una istruzione (come INC o JL o DEC) che effettua le seguenti operazioni mostrate qui

    http://x86.renejeschke.de/html/file_module_x86_id_161.html

    Ovvero, se tu scrivi

    MOV CX,3
    ciclo:

    LOOP ciclo

    verrà ripetuto 3 volte quello che è contenuto nel corpo del ciclo.

    Se copi in CX il valore del secondo operando e nel ciclo metti l'addizione, è tutto risolto.
  • AAAAAAA ok ho capito... e una volta arrivato a zero smette in automatico e va all'operazione seguente?
  • Sì, se leggi ... If the count is 0, the loop is terminated and program execution continues with the instruction following the LOOP instruction
  • Perfetto, grazie mille, e complimenti per la velocità
Devi accedere o registrarti per scrivere nel forum
8 risposte