; helder.correia@fe.up.pt ; -------== Ex2 ==------- ; Escreva um programa que implemente na variável Cont - definida num ; segmento de dados recolocável - um contador cíclico de 24 bits. ; Considere dois casos: contagem crescente e decrescente. ; ; a) contagem crescente: 0, 1, 2, ..., 2^24-1, 0, 1, ... vars segment data rseg vars cont: ds 3 ; no programa o byte mais significativo é cont ; para na Memory Window (dScope) ficar + intuitivo cseg at 0 incr: mov cont,#0 ; inicializa mov cont+1,#0 ; os 3 bytes mov cont+2,#0 ; a zero ciclo: inc cont+2 ; começa a incrementer o 1º byte mov a,cont+2 cjne a,#0FFh,ciclo ; if(cont+X==FFh) começa incr proximo byte inc cont+1 ; incrementa segundo byte mov a,cont+1 cjne a,#0FFh,ciclo inc cont ; incrementa terceiro byte mov a,cont cjne a,#0FFh,ciclo jmp incr ; no fim volta tudo a zero end ; b) contagem decrescente vars segment data rseg vars cont: ds 3 cseg at 0 decr: mov cont,#0FFh ; a ideia é decrementar o byte menos significativo mov cont+1,#0FFh ; quando esse xegar a 00 decrementa o proximo byte mov cont+2,#0FFh ; e volta a decrementar de FFh a 00h o LSB ciclo: djnz cont,ciclo ; FF00h-1=FEFFh djnz cont+1,ciclo ; djnz cont+2,ciclo ; sjmp decr ; end