O conteudo passado em aula não é suficiente(?)

O conteudo passado em aula não é suficiente(?)

por Gabriel Torres Gomes Pato -
Número de respostas: 13
Aparentemente é preciso aprender assembly sozinho para conseguir completar o EP. Alguns comandos passados em aula não funcionam (ou foram passados incompletos) e muitas outras operações que são necessárias para finalizar o EP não foram dadas em aula de forma completa.

Resumindo, tá dificil...

PS: Acho que não sou só eu que estou penando pra fazer isso funcionar...
Em resposta à Gabriel Torres Gomes Pato

Re: O conteudo passado em aula não é suficiente(?)

por Renato Avila -
Em resposta à Renato Avila

Re: O conteudo passado em aula não é suficiente(?)

por Tonny Cordeiro -
Aproveitando o ensejo:

Demorei um pouco até descobrir como realmente funcionam 2 comandinhos passados na aula:

cmp eax, ' '
na verdade tem que fazer:
cmp byte [eax], ' '

timer 256 buffer db 0
na verdade tem que fazer:
buffer times 256 db 0

pode rolar um adiamento?
Em resposta à Tonny Cordeiro

Re: O conteudo passado em aula não é suficiente(?)

por Marcelo Reis -

"cmp eax, ' ' " está errado, pois precisamos comparar bytes com bytes, e o registrador eax tem 32 bits. Um "cmp ah, ' ' " resolveria o problema.

Sobre o adiamento, por mim tudo bem dar uns 4 dias a mais, mas precisa necessariamente o professor concordar com isso.
Em resposta à Marcelo Reis

Re: O conteudo passado em aula não é suficiente(?)

por Paulo Cheadi Haddad Filho -
É Marcelo e professor, o adiamento seria muito bem-vindo.

Vejo eu e boa parte da turma sofrendo pra fazer esse programa funcionar.

E Semana Santa não é argumento. Todas as matérias deram trabalhos pra fazer. Eu mesmo nem descansei nesse feriado inteiro.

Pela nossa saúde até o fim do semestre, peço por favor uns dias a mais!


Obrigado!
Em resposta à Paulo Cheadi Haddad Filho

Re: O conteudo passado em aula não é suficiente(?)

por Douglas Bettioli Barreto -
Eu realmente admito que um adiantamento seria muuuito bem vindo mesmo... assim eu poderia pelo menos dormir agora =P
Mas enfim, a respeito do q foi passado ou não, também senti mta falta de mais exemplos bem elaborados de codigo, e tambem de codigos em linguagem Intel, uma vez que essa foi a pedida no EP (esse ultimo é facilmente alterável, td bem... mas ajudaria =P).
Em resposta à Douglas Bettioli Barreto

Re: O conteudo passado em aula não é suficiente(?)

por André Santos de Medeiros -
Apoio totalmente um adiantamento.
Nesta semana, temos 2 provas, dois EPs e logo no começo da semana que vem, temos três exercícios de ED que são na realidade pseudo-EPs.
Eu tô acordado a essa hora (03:33) programando. Fiquei assim a noite toda pra conciliar tudo e pelo visto vou passar mais um bom tempo na frente do pc (eu não comecei a fazer as coisas ontem, aliás. Já estou há um bom tempo fazendo e acabei de descobrir que não tenho mais dupla. =])
Em resposta à André Santos de Medeiros

Re: O conteudo passado em aula não é suficiente(?)

por Marcelo Reis -
Ok, se é para felicidade geral da nação, digam aos alunos que o EP está adiado! Daqui a pouco, na aula, maiores detalhes, mas vocês terão ao menos uns 5 dias a mais para entregar o programinha! sorriso

[]s,
Em resposta à Gabriel Torres Gomes Pato

Re: O conteudo passado em aula não é suficiente(?)

por Marcelo Reis -
"e muitas outras operações que são necessárias para finalizar o EP não foram dadas em aula de forma completa."

Exemplos?
Em resposta à Marcelo Reis

Re: O conteudo passado em aula não é suficiente(?)

por Gabriel Torres Gomes Pato -
Bom, o proprio exemplo que vc corrigiu (casting). Não sabiamos comparar bytes em registradores maiores. E ainda não sabemos como manipular 'tipos', por exemplo transformar um char num inteiro.
Não estamos conseguindo imprimir valores que estão nos registradores. Alias, não sabemos nem se o valor está como char (ASCII) ou int...
Em resposta à Gabriel Torres Gomes Pato

Re: O conteudo passado em aula não é suficiente(?)

por Marcelo Reis -
"E ainda não sabemos como manipular 'tipos', por exemplo transformar um char num inteiro."
"Não estamos conseguindo imprimir valores que estão nos registradores."

Mas a ideia do EP seria justamente essa: vocês bolarem soluções (subrotinas) para transformar o número de string para inteiro de 16 bits. Para a "volta", fica uma dica: você não precisa transformar o número de inteiro para string, basta guardar o string do número lido em uma variável e imprimí-lo, caso ele seja primo.


"Alias, não sabemos nem se o valor está como char (ASCII) ou int..."

Está como int, ou ao menos deveria estar, se você transformou adequadamente o número de string para inteiro não-sinalizado de 16 bits.

[]s,
Em resposta à Gabriel Torres Gomes Pato

Re: O conteudo passado em aula não é suficiente(?)

por Matheus Barbosa -
Na minha opinião o que está mais pegando é o fato de termos visto pouquíssimos exemplos de programas em si, e estes ainda eram super básicos... Então ficamos sem saber direito como as coisas se comportam na prática...

Como faço pra imprimir o conteúdo de um registrador? consigo imprimir o buffer, mas nao o conteúdo do ecx por exemplo.

Outra dúvida minha é como fazer o DDD exibir o código fonte! Já fucei em tudo lá e nada!rs
Em resposta à Matheus Barbosa

Re: O conteudo passado em aula não é suficiente(?)

por Marcelo Reis -
"Como faço pra imprimir o conteúdo de um registrador? consigo imprimir o buffer, mas nao o conteúdo do ecx por exemplo."

A chamada sys_write imprime um string armazenado na memória; como eu disse na mensagem anterior, para este EP, você não precisa (a não ser que faça questão) passar o número inteiro armazenado no registrador para string: basta guardar o próprio número lido em string (do arquivo) em uma variável, posteriormente imprimindo-o caso seja necessário.
Em resposta à Matheus Barbosa

Re: O conteudo passado em aula não é suficiente(?)

por Felipe Lamberti Amado -
Passa o conteúdo do registrador para uma variável e usa a chamada do kernel para imprimir ué.

Para criar variáveis você pode fazer assim:

section .bss
  nome_da_var    resb  n_de_bytes

Aí nome_da_var guardará o endereço da memória dessa variavel. Para acessar/modificar o valor dessa variavel é só usar colchetes, por exemplo:

  mov    [nome_da_var], ecx  (isso na section .text)