Registrador AX

1. Registrador AX

Paulo
paulo_moc

(usa Ubuntu)

Enviado em 14/09/2012 - 02:59h

Bem, eu tenho uma dúvida sobre este registrador, se eu executar o comando :

MOV AX, 4fh

então AX = 4fh(79 em decimal), AX é dividido em AH e AL, que são os registradores high e low, qual dos dois vã receber esse valor?

seria assim : AH = 4 e AL = f?


  


2. Re: Registrador AX

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/09/2012 - 04:10h

AX é um registrador de 16 bits, e pode ser acessado separadamente como dois registradores de oito bits, sendo que os oito bits mais altos (High) ficam em AH, e os oito mais baixos (Low) em AL.

Desse modo, um mov 0x4F, %ax é a mesma coisa que mov 0x004f, %ax -- ou seja: AH ficará com zero, e AL com 0x4F.


3. Re: Registrador AX

Paulo
paulo_moc

(usa Ubuntu)

Enviado em 15/09/2012 - 03:13h

poderia me explicar como é feita a divisão dos bits para cada um?


4. Re: Registrador AX

Paulo
paulo1205

(usa Ubuntu)

Enviado em 04/10/2012 - 03:43h

Já está explicado. O que você não entendeu?


5. Compreendendo a arquitetura

douglas
dsbonafe

(usa Fedora)

Enviado em 04/10/2012 - 05:20h

Bem... vai depender da arquitetura que está utilizando.
Se você estiver programando para um IAPX86/88 (8086/88), então ele possui arquitetura Litle Endian. Isso significa que, diferente das arquiteturas Motorola, por exemplo, o LSByte fica no endereço mais baixo da memória e o MSByte no endereço mais alto. Desta forma, ao fazer:


...
mov AX, 4Fh
...



-----------------------
| AH | AL | ==> ---------------------
---------------------- | AL | <= Fh
---------------------
| AH | <= 4h
---------------------



6. Re: Registrador AX

Frederico Miranda Brandão Alves
Hexadecimais

(usa Fedora)

Enviado em 06/10/2012 - 18:25h

Suponho que você, shoxsz, esteja familiarizado com o conceito de "relevância" de um algarismo de acordo com sua posição no número.

Por exemplo, o número 156897, possui os algarismos "1" e "7", como você pode ver. Se trocarmos o "7" por "0", a variação não é de nem 1%, e podemos até dizer que tal variação é desprezível. Mas se trocarmos "1" por "2", a variação chega a ser de 100%! Em poucas palavras, o "7" nesse número é "menos significativo", enquanto o "1" é "mais significativo".

A instrução "MOV AX,4Fh" move para o registrador AX o valor 004Fh.
"AH", abreviação para "Accumulator High", contém o byte mais significativo de "004Fh", que é "00h". ("High" = alto, indicando "mais significativo")
"AL", abreviação para "Accumulator Low", contém o byte menos significativo de "004Fh", que é "4Fh". ("Low = baixo, indicando "menos significativo")

Então, após a instrução "MOV AX,4Fh", a distribuição dos bytes em AH e AL ficaria:
AH = 00h, AL = 4Fh.

shoxsz, percebo que você manifesta interesse por programação com C e Assembly. Lamento te desapontar, mas a quantidade de material útil escrito em português pode não ser tão abundante quanto você deseja. O material que encontro em português se refere ao Assembly para 8086, uma arquitetura que, apesar de ainda existir nos processadores atuais utilizados na vasta maioria dos computadores pessoais, está presente apenas para compatibilidade reversa. O código de máquina voltado à arquitetura 80x86, mais conhecida como x86 (engloba 80386, 80486, 80586, 80686...), é o que está presente nos arquivos binários executáveis nos computadores recentes. É mais fácil encontrar documentação disponível na língua inglesa, e por esse motivo recomendo que aprenda esse idioma. Por exemplo, uma documentação completa nos mínimos detalhes, disponibilizada pela própria Intel sobre essas arquiteturas de processadores (e arquiteturas não-tão-novas mas novas, como "amd64" que, muitíssimo provavelmente, estão presentes no computadores que você está usando agora).

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Se aulas de inglês num curso particular ou escola sejam insuportavelmente chatas para você, recomendo o aprendizado da língua inglesa através da leitura de mangá:

http://www.mangapanda.com/
http://mangafox.me/



7. Re: Registrador AX

deivide
dision08

(usa Ubuntu)

Enviado em 13/10/2012 - 21:02h

Bom, uma coisa que pode te ajudar nesse e em outros problemas é utilizar o GDB (gnu debugger). Nele vc pode verificar o que está ocorrendo com os registradores utilizando o comando: print $"registrador", por exemplo.










8. Registrador AX

Osvaldo Jacques
ojacques

(usa Outra)

Enviado em 13/05/2015 - 20:38h

Bem, vamos lá

No caso, quando fazemos mov AX,4F estamos utilizando codigo hexadecimal ou seja 4Fh
Escrevendo 4Fh em binário temos 01001111b, ocupando 8 bits, ou um byte (4=0100, F=1111). Cada símbolo
em hexadecimal correspondem a 4 símbolos binários.
O registrador AX tem 16 bits ou 2 bytes, compostos de parte alta (AH) e parte baixa (AL) cada um
com 8 bits. Logo o AX seria composto da seguinte maneira.
--------AH-------- -------AL---------
|0|0|0|0|0|0|0|0| |0|1|0|0|1|1|1|1|

Ou seja, 4F ficaria em AL.

Se a arquitetura prefere carregar o AH à direita de AL ou à esquerda não influencia na
programação. São mais critérios de utilidade no armazenamento.











Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts