org 400h baseadd equ 1000h ;conterra' il risultato code ;inizia programma movl #8,R1 ;carica il moltiplicando in R1 movl #5,r0 ;carica il moltiplcatore in R0 movl #baseadd,r2 ;carica l'indirizzo dove memorizzare il risultato in R2 jsr MULTIPLY ;invoca la subroutine per la moltiplicazione HALT MULTIPLY: ;subroutine per la moltiplicazione ;Pre-condizioni: ; moltiplicando e moltiplicatore in R0 e R1 ; indirizzo di memoria per risultato in R2 ;Post-condizioni: ; Il risultato della moltiplicazione e' memorizzato nella longword indirizzata da R2 ; In caso di overflow ritorna con il flag di carry settato e non aggiorna la memoria push r1 push r3 xorl r3,r3 loop: cmpl #0,r1 jz update addl r0,r3 jc overflow subl #1,r1 jmp loop update: movl r3,(r2) overflow: pop r3 pop r1 ret end