Acho que entendi o pq do PUSH EBP e POP EBP, existe algum contexto onde o EBP tá sendo usado como ponteiro base pra outra parte da pilha com outros valores salvos (pelo menos é o que consigo pensar de momento)?
Sim, sim. O EBP é a base da pilha. Quando um procedimento/função é chamado, um espaço na pilha tem que ser alocado pra isso, porém a pilha do procedimento que o chamou também tem que ser salva. Portanto, a grosso modo, o PUSH EBP no inicio serve pra salvar essa pilha, e o POP EBP no final é pra restaurar essa pilha. O EBP, em resumo, é a base da pilha do procedimento corrente. Ao chamar procedimentos novos, tem que manter os antigos. Então uma "pilha de chamada" consiste de várias "molduras de pilhas", uma pra cada função!
Olá prof Pedro, por algum motivo, o meu SASM não aparece a aba de REGISTRADORES. Eu verifiquei a configuração dele. Mas, eu não consegui resolver. Eu tentei no UBUNTU e no Windows.
@@geovaniferreira9626 voce precisa ir na aba "debug" e ativar a visualização de registradores. Mesmo assim as vezes buga e so aparece depois que do primeiro step do debug.
@@geovaniferreira9626 você precisa iniciar o debug para que as opções apareçam. Vc inicia o debug (clicando a seta), dps abre a aba e seleciona oq vc quet
@@botelhocpp Agora, eu entendi mestre. Me desculpe...eu sou iniciante nesse fabuloso mundo da programação Assembly. Muito obrigado. Eu sigo acompanhando as suas excelentes explicações.
Prof, não entendi uma coisa.... Porque o senhor precisa na hora de fazer a alocação do offset utilizar o registrador edx pra alocar? Sendo que antes o senhor mostrou movimentando com a operação "ADD", ai o que eu não entendi... Isso foi só para mostrar métodos diferentes ou tem algo haver com a memória?
Exato, foi so para mostrar que existem meio diferenfes de endereçar a memória. Depois pesquise por "modos de endereçamento do x86". Para resumir: voce pode usar várias combinações de registradores e imediatos para acessar memória usando os colchetes. Alguns exemplos: [ESI + 4] [ESI + EDX] [ESI + 4*EDX + 4]
Vixe Maria...esse assunto foi muito avançado. De volta para o livro aqui. As aulas estão muito bacanas. Obrigado.
@@geovaniferreira9626 obrigado! Fico feliz que esteja gostando.
Acho que entendi o pq do PUSH EBP e POP EBP, existe algum contexto onde o EBP tá sendo usado como ponteiro base pra outra parte da pilha com outros valores salvos (pelo menos é o que consigo pensar de momento)?
Sim, sim. O EBP é a base da pilha. Quando um procedimento/função é chamado, um espaço na pilha tem que ser alocado pra isso, porém a pilha do procedimento que o chamou também tem que ser salva. Portanto, a grosso modo, o PUSH EBP no inicio serve pra salvar essa pilha, e o POP EBP no final é pra restaurar essa pilha. O EBP, em resumo, é a base da pilha do procedimento corrente. Ao chamar procedimentos novos, tem que manter os antigos. Então uma "pilha de chamada" consiste de várias "molduras de pilhas", uma pra cada função!
obrigado, rei
Olá prof Pedro, por algum motivo, o meu SASM não aparece a aba de REGISTRADORES. Eu verifiquei a configuração dele. Mas, eu não consegui resolver. Eu tentei no UBUNTU e no Windows.
@@geovaniferreira9626 voce precisa ir na aba "debug" e ativar a visualização de registradores. Mesmo assim as vezes buga e so aparece depois que do primeiro step do debug.
@@botelhocpp Eu fiz isso na aba de Settings. Na aba DEBUG, a opção encontra-se apagada, como se não tivesse acesso.
Além disso. Essa opção que aparece no seu: MEMORY, Variable or Expressions não aparece aqui no meu SASM. Pode ajudar por favor?
@@geovaniferreira9626 você precisa iniciar o debug para que as opções apareçam. Vc inicia o debug (clicando a seta), dps abre a aba e seleciona oq vc quet
@@botelhocpp Agora, eu entendi mestre. Me desculpe...eu sou iniciante nesse fabuloso mundo da programação Assembly. Muito obrigado. Eu sigo acompanhando as suas excelentes explicações.
Prof, não entendi uma coisa....
Porque o senhor precisa na hora de fazer a alocação do offset utilizar o registrador edx pra alocar? Sendo que antes o senhor mostrou movimentando com a operação "ADD", ai o que eu não entendi... Isso foi só para mostrar métodos diferentes ou tem algo haver com a memória?
Exato, foi so para mostrar que existem meio diferenfes de endereçar a memória. Depois pesquise por "modos de endereçamento do x86". Para resumir: voce pode usar várias combinações de registradores e imediatos para acessar memória usando os colchetes. Alguns exemplos:
[ESI + 4]
[ESI + EDX]
[ESI + 4*EDX + 4]