Moderadores: andre_luis, 51, guest2003, Renie
xultz escreveu:Rafael, a diferença entre uma variável global e local, é que a global aloca posição da RAM, e fica alocada prá sempre. A local, é alocada na RAM, porém quando a rotina é encerrada, o compilador pode alocar aquele endereço para outra variável em outra função. Note que ele pode, nem sempre ele faz isso, é comum ele só fazer quando não tiver mais memória prá usar.
Também comecei com basic nos anos 80 e assembly na seqüência (trema para sempre). No entanto, em minha insignificância e ignorância, creio não ser esta a linguagem ideal para mc´s...As duas. Espero que não espere 30 anos para percebê-lo.
CLRF PORTA ; Antes da instrução o PORTA = B'10011110'
; Após a instrução ficou PORTA = B'00000000' e Z=1
BCF STATUS,C ; Limpa o carry ( 0 -> C)
mastk escreveu:A instrucao CLRF, ... , apaga os Flags da CPU, flag que indicam CARRY em um instrucao de soma, subtracao, shift e similares, zero e outros. Essa intrucao eh chamada a fim que os novos calculos e operacao nao sejam bagucando em funcao dos execultados anteriormente.
rafael l escreveu:Olhei melhor a saída em ASM, realmente as variáveis locais são declaradas igual as globais (reserva um espaço da RAM do PIC na inicialização), a diferença é que e zerada (CLRF) no inicio da subrotina.
Acredito que unica forma de economizar memoria e reutilizar a variável evitando uma nova declaração.
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante