Escolar Documentos
Profissional Documentos
Cultura Documentos
Assembler
Assembler
Sempre que uma instruo fizer referncia, ou apontar para uma outra
instruo (CALLs e JUMPs), o endereo desejado ser obtido pelo valor do offset
contado partir do incio do segmento apontado pelo CS. Sempre que uma
instruo fizer referncia a um dado (ler/gravar num determinado endereo) o
endereo ser obtido pelo DS. O mesmo vale para as operaes com o stack
(PUSHs e POPs), caso em que o apontador usado ser o SS.
Uma vez definido o tipo de programa a ser criado, parte-se para a criao
das rotinas bsicas, ou seja, impresso na tela, acesso ao teclado, gravao em
disco, etc.
Os desvios incondicionais
Os desvios incondicionais so executados, como o nome indica, quando
no h nenhuma condio a ser verificada para a realizao do salto. O programa
simplesmente encontra uma instruo JMP e desvia a execuo para o endereo
determinado. Traduzindo isto para o computs, o fato que um computador 486
possui um registrador de 64 bits cuja funo apontar para o endereo da instruo
que est sendo executada naquele exato momento. Quando os ciclos que uma
Os desvios condicionais
Os desvios condicionais s so executados quando uma determinada
condio se verifica verdadeira. Na totalidade dos casos, a condio requerida diz
respeito a uma flag da CPU e as instrues de desvio devero preceder a algum
tipo de comparao.
As aparncias enganam
Outro aspecto curioso do Turbo Assembler que ele possui uma diretiva
chamada JUMPS. Quando esta diretiva acionada , todos os desvios condicionais
de um programa que excedeu 128 bytes no geraro um erro, porm o montador ir
criar uma seqncia de instrues alternando a condio do desvio e usando para
o salto um desvio incondicional. Desta forma, se a instruo JZ CHEGUEI estiver
fora do alcance, o Turbo Assembler ir assemblar algo parecido com:
jnz ABC
jmp CHEGUEI
ABC:
CX 0000
:6 [ENTER]
-w [ENTER[ENTER]
-rcx [ENTER]
CX 0000
:6 [ENTER]
-w [ENTER]
Writing 0006 bytes
-q [ENTER]
Bibliografia
Revista Micro Sistemas - pgs. 18,19,20,21,22,23,24 e 25.