Jump to content

Dúvida Sobre Assembly


Klien
 Share

Recommended Posts

Estou com uma dúvida sobre um exercicio de Assembly, talvez me possam ajudar.

Posted Image

Eu penso que a instrucao nao é valida.

Penso que | movl 1020, $eax

seria uma opcao valida para enviar o valor 5324 para o registo $eax.

Edited by Klien
Link to comment
Share on other sites

Se não estou em erro é o 123.

Já dei Assembly há muito tempo, por isso não me responsabilizo pela minha resposta :P :P

E digo isto porque:

movl Y(%esi), %eax

Estás a mover para %eax, o valor XPTO que se encontra na posição de memória 5324 a contar do valor armazenado em %esi, que é 0.

Ou seja, começando a percorrer a memória a partir do endereço 0, ele vai contar 5324 posições de memória, e copiar o conteúdo dessa posição para o %eax. E esse conteúdo é 123, e será esse k passará para o %eax.

Penso eu de que...

Se eu estiver errado, lamento...

Craft

Link to comment
Share on other sites

É verdade que esse registos existem na arquitectura dos intel's, mas...

- A instrução não. Ja tive a procura no instruction set da Intel e n vi nada.

- No assembley usado pela intel são usados parentes rectos e não curvos.

- O caracter '%' segundo me lembro só é usado para umas intruções de divisão...

se tiver enganado... sorry...

Edited by gnomoamorim
Link to comment
Share on other sites

Odeio-te, obrigaste-me a ir buscar os apontamentos ao fundos dos caixotes :P

bom, encontrei isto:

IA32

mov? S,D	  D<-S	  Move (?= b,w, l) (movb, movw, movl)

Em Assembly IA32 em Linux, sempre usei parêntesis curvos nestes casos, e o % é usado nos registos.

Fora disso, não faço ideia, esta foi uma dakelas cadeiras que já fiz há alguns (valentes) anos e nunca mais tive de pegar em Assembly.

Link to comment
Share on other sites

Eu tambem tive que ir pegar nos apontamentos... mas da matéria que dei no inicio do semestre e que ja ta passada :hypo:

Tive a programar em assembly IA32 em Windows , mas tambem foi mto pouco... era mais na onda de sabermos que akilo existia e termos contacto com o set de instruções...

@Darnassus

eu não gosto de ser desmacha prazeres (LOLOL), mas ja programei em assembly para 4 plantaformas diferentes (IA-32, ARM, MCS-51 e DSP TMS320C6713) e sempre usei parentes rectos :P

Link to comment
Share on other sites

A resposta quase de certeza é a B - 5324 se tiverem a dar AT&T syntax.

y(%esi) é igual a somar o valor da variavel y + 0 e portanto é o conteúdo do endereço 1020 q vai para o registo eax.

Nota o assembly e que dei era mto diferente deste e eu dei esta resposta com base numa pesquisa na net.

link1

link2

Link to comment
Share on other sites

A linguagem assembly varia de processadr para procesador, plo menos algumasn funçoes..deves ter um manual que deste nas aulas a explicar o que significa cada coisa..vai la ver. Eu assim so vendo isso,so posso dar um palpite

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.