Jump to content

Featured Replies

Posted

Novamente no meu drama estudando assembly, cheguei no assunto das instruções aritméticas e bem começou a dar nós na minha cabeça para variar.

Um código em específico do conteúdo que estou estudando não tá fazendo muito sentido para mim, veja:

section	.text
   global _start    ;must be declared for using gcc
	
_start:             ;tell linker entry point
   mov	eax,'3'
   sub     eax, '0'
	
   mov 	ebx, '4'
   sub     ebx, '0'
   add 	eax, ebx
   add	eax, '0'
	
   mov 	[sum], eax
   mov	ecx,msg	
   mov	edx, len
   mov	ebx,1	;file descriptor (stdout)
   mov	eax,4	;system call number (sys_write)
   int	0x80	;call kernel
	
   mov	ecx,sum
   mov	edx, 1
   mov	ebx,1	;file descriptor (stdout)
   mov	eax,4	;system call number (sys_write)
   int	0x80	;call kernel
   mov	eax,1	;system call number (sys_exit)
   int	0x80	;call kernel
	
section .data
   msg db "The sum is:", 0xA,0xD 
   len equ $ - msg   
   segment .bss
   sum resb 1

 

Logo no começo do código começou a ficar sem sentido o bagulho, essa parte de: mov eax, '3' (por que c@r@lhos eu to movendo um o 3 entre aspas simples para o registrador eax?)

  • Administrators

Oi @Ana Francisca,

Você tá usando o NASM né? Ele suporta "Character Strings", ou seja, você escreve no fonte como string e ele compila como char (número). Ou seja, '3' vai gerar o número 0x33, que é o código do texto '3' na tabela ASCII. Dá uma olhada para entender mais:

Se quiser o número 3 mesmo, então é só remover as aspas simples. O mesmo se aplica para os demais números.

PS.: Em C isso também funciona com um caractere só. Por exemplo, char c = 'A' vai por o valor 0x41 na variável c.

Valeu.

  • Author

Ahhh ta, faz sentido, é que no tutorial que tô vendo conforme o conteúdo vai avançando ele vai colocando coisas que não foram mostradas, provavelmente para fazer os estudantes quebrarem ainda mais a cabeça. Muito obrigado pela ajuda.

🤗

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.