; helder.correia@fe.up.pt ; -------== Ex3 ==------- ; Suponha um vector v com 50 elementos de um byte cada representados em ; complemento para 2. Escreva um programa que conte quantos elementos ; negativos, nulos e positivos existem no vector. As contagens devem ser ; guardadas nas variáveis nn, nz e np respectivamente. Declare todas as ; variáveis num segmento recolocável em MDI. Repita considerando agora ; que v está declarado num segmento recolocável em MDE. vars segment data ; -[ vars segment xdata ]--no-segundo-caso-(MDE)- rseg vars v: ds 50 nn: ds 1 nz: ds 1 np: ds 1 cseg at 0 mov r7,#50 ; inicialização mov r0,#v ; dos registos mov nn,#0 mov nz,#0 mov np,#0 loop: mov a,@r0 ; mete em acc o valor de v[i] acall test inc r0 djnz r7,loop sjmp $ ; stop: sjmp stop test: jz nulo ; para antever os dois outros casos rlc a ; move o bit de sinal para carry jc sinal inc np ; sem ser neg ou nulo será positivo ret sinal: inc nn ; bit de carry em 1 significa numero negativo ret nulo: inc nz ; número nulo (zero) ret end