Ir ao conteúdo
  • Cadastre-se

Transformar C em Assembly


Ir à solução Resolvido por Midori,

Posts recomendados

Buenas senhores! 

Preciso desse programa C simples na linguagem Assembly. 

É apenas um demonstrativo de idade:




#include<stdlib.h>
#include<stdio.h>


int main()
{
int numero;
printf("1) Idade entre 0 e 12 anos;\n2) Idade entre 13 e 17 anos;\n3) Idade entre 18 e 60 anos;\n4) Idade acima de 60 anos;\n\nDigite uma das opcões acima (1-4): ");
scanf("%d",&numero);


if(numero == 1)
{
printf("\nCrianca");
}
else if(numero == 2)
{
printf("\nAdolecente");
}
else if(numero == 3)
{
printf("\nAdulto");
}
else if(numero == 4)
{
printf("\nMelhor Idade");
}
else
printf("\nOpcao Incorreta\nCrianca");
}


 

Obrigado!

Link para o comentário
Compartilhar em outros sites

Você não falou em qual assembly, fiz em 16 bits para rodar no DOS no formato COM.

Não ficou muito elegante,

.model tiny.codeorg 100hmain:	lea dx,menu	call msg	mov ah,01h	int 21h		sub al,30h	cmp al,4	jg opx	cmp al,1	je op1	cmp al,2	je op2	cmp al,3	je op3	cmp al,4	je op4	jmp fim	op1:	lea dx,op_1	call msg	retop2:	lea dx,op_2	call msg	retop3:	lea dx,op_3	call msg	retop4:	lea dx,op_4	call msg	retopx:	lea dx,op_x	call msg	ret			fim:		int 20hmsg:	mov ah, 09h	int 21h	retmenu 	db 0Dh,0Ah,"1) Idade entre 0 e 12 anos",0Dh,0Ah	db "2) Idade entre 13 e 17 anos",0Dh,0Ah	db "3) Idade entre 18 e 60 anos",0Dh,0Ah	db "4) Idade acima de 60 anos",0Dh,0Ah,0Dh,0Ah	db "Digite uma das opcoes acima (1-4): ",24hop_1	db "Crianca",24hop_2	db "Adolescente",24hop_3	db "Adulto",24hop_4	db "Melhor Idade",24hop_x	db "Opcao Incorreta",24hend main
Link para o comentário
Compartilhar em outros sites

  • Solução

Fiz as alterações para compilar no nasm, segue

section .textglobal _start                           _start:                                          mov edx, t_menu    mov ecx, menu    call msg        mov eax, 3    mov ebx, 0    mov edx, 1    int 0x80    cmp byte [ecx], 0x34    jg opx    cmp byte [ecx], 0x31    je op1    cmp byte [ecx], 0x32    je op2    cmp byte [ecx], 0x33    je op3    cmp byte [ecx], 0x34    je op4    jmp fimop1:    mov edx, t_op_1    mov ecx, op_1    call msg    jmp fimop2:    mov edx, t_op_2    mov ecx, op_2    call msg    jmp fimop3:    mov edx, t_op_3    mov ecx, op_3    call msg    jmp fimop4:    mov edx, t_op_4    mov ecx, op_4    call msg    jmp fimopx:    mov edx, t_op_x    mov ecx, op_x    call msg    jmp fimfim:    mov eax,1                           int 0x80                        section .datamsg:    mov ebx,1    mov eax,4    int 0x80    retmenu    db 0xd,0Ah,"1) Idade entre 0 e 12 anos",0xd,0xa	    db "2) Idade entre 13 e 17 anos",0xd,0xa	    db "3) Idade entre 18 e 60 anos",0xd,0xa	    db "4) Idade acima de 60 anos",0xd,0xa,0xd,0xa	    db "Digite uma das opcoes acima (1-4): "t_menu  equ $-menuop_1:    db "Crianca",0xd,0xat_op_1:  equ $-op_1op_2:    db "Adolescente",0xd,0xat_op_2:  equ $-op_2op_3:    db "Adulto",0xd,0xat_op_3:  equ $-op_3op_4:    db "Melhor Idade",0xd,0xat_op_4:  equ $-op_4op_x:    db "Opcao Incorreta",0xd,0xat_op_x:  equ $-op_x
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!