// Laboratorijska vjezba 03 // By Igor Kovacic // 0246002237 // Rjesenje u asembleru .include "m128def.inc" //inicijalizacija stoga ldi r16, LOW(RAMEND) out spl, r16 ldi r16, HIGH(RAMEND) out sph, r16 glavni: ldi r31, $0 ldi r30, $1 ldi r29, $2 ldi r28, $10 // R17:R16 broj 16-bitnih podataka u polju, 6000(10)=1770(16) ldi r16, 0x70 ldi r17, 0x17 // R19:R18 donja granica, -2000(10)=F830(16) ldi r18, 0x30 ldi r19, 0xF8 // R21:R20 gornja granica, 4000(10)=0FA0(16) ldi r20, 0xA0 ldi r21, 0x0F pocetak: // postavi X na 0x2000 (X=r27:r26) ldi r26, 0x00 ldi r27, 0x20 // broj koji se upisuje r25:r24 (kreni od -10000) ldi r24, 0xF0 ldi r25, 0xD8 // upisi broj i uvecaj X st X+, r24 st X+, r25 // povecaj broj koji se upisuje za 10 add r24, r28 adc r25, r31 // smanji broj elemenata sub r16, r30 sbc r17, r30 // izadi ako je popunjeno cp r17, r31 brne pocetak cp r16, r31 breq potprogram potprogram: ldi r26, 0x00 ldi r27, 0x20 ponovi: ld r26, X+ ld r27, X+ cp r26, r18 brlt ponovi cp r27, r20 brge ponovi cp r27, r19 brlt ponovi cp r27, r21 brge ponovi add r22, r30 adc r23, r31 kraj: nop