assembly -> múltiplo de 1000

Tyran

Power Member
Boas

Estou aqui a tentar descobrir se um número de 16 bits é múltiplo de 1000 em assembly 8051, mas até agora nada...
E estou limitado a operações de 8 bits, pelo que já tentei muita coisa e nada lol

Se alguém souber e puder dar umas dicas agradeço ;)

cumpzz
 
Última edição:
Tem de ser divisível por 2 três vezes e por 5 três vezes.
Por 2 podes fazer 3 shifts para ver se os bits são zeros.

Mas os 5s deixam-me com problemas...
 
Bem, fiz de uma maneira tosca visto que sei o número de amostras máximo lol
Mas qualquer dica para fazer isto mais ELEGANTE é bem vinda

cumpzz
 
MULTIPLO: PUSH DPH desconta o endereço inicial X:1000h
PUSH DPL
MOV A,DPL
SUBB A,#LOW(1000H)
MOV B,A
MOV A,DPH
SUBB A,#HIGH(1000H)
MOV R7,#8
;
CICLO_COMPARA:
CLR C
SUBB A,#HIGH(1000D)
PUSH ACC
MOV A,B
CLR C
SUBB A,#LOW(1000D)
MOV B,A
POP ACC

CLR C
ADD A,B
JZ FIM_OK
SUBB A,B
DJNZ R7,CICLO_COMPARA
FIM_OK:
POP DPH
POP DPL
RET
Bem, não é o ideal mas como a pergunta diz que o máximo são 8000 amostras...

cumpzz
 
Última edição:
Back
Topo