Ir para conteúdo
Fórum Script Brasil
  • 0

Stheffany Silva

Pergunta

Pessoal, gostaria de alguma ideia de código que eu poderia fazer uma calculadora binaria em assembly nasm com funções de soma, subtração, divisão, e multiplicação!

Tenho isso ate agora mas ta em hexadecimal e com erro na subtração e multiplicação

Quem souber algo, eu agradeço desde já!

section .data

MAX_PALAVRA    equ    40

s1    db    0xa,"Introduza num 1: "

ts1    equ    $ - s1

s2    db    0xa,"Introduza num 2: "

ts2    equ    $ - s2

s3    db    0xa,"Resultado: "

ts3    equ    $ - s3

s4    db    0xa,"Introduza o operador (+,-,*,/): "

ts4    equ    $ - s4

linha    db    0xa,0xa

tlinha    equ    $ - linha

num1    dd    0

num2    dd    0

result    dd    0

tamstr    dd    0

section .bss

strnum    resb    MAX_PALAVRA

section .text

global _start

_start:

mov    eax, ds

mov    es, eax

        ; Pede num1

mov    edx,ts1

        mov    ecx,s1

        mov    ebx,1 

        mov    eax,4 

        int    0x80   

        mov    edx,MAX_PALAVRA

        mov    ecx,strnum

        mov    ebx,0

        mov    eax,3

        int    0x80

sub    eax, 1

mov    [tamstr],eax

xor    eax, eax

xor    ebx, ebx

mov    esi, strnum

cld

mov    ecx, [tamstr]

ciclonum1:

lodsb

cmp    al, '9'

jg    letra1

and    al, 0xF

jmp    fim1

letra1:

and    al, 0xF

add    al, 9

fim1:

shl    ebx,4

add    ebx, eax

loop    ciclonum1

mov    [num1], ebx

        ; Pede num2

mov    edx,ts2

        mov    ecx,s2

        mov    ebx,1 

        mov    eax,4 

        int    0x80   

        mov    edx,MAX_PALAVRA

        mov    ecx,strnum

        mov    ebx,0

        mov    eax,3

        int    0x80

sub    eax, 1

mov    [tamstr],eax

xor    eax, eax

xor    ebx, ebx

mov    esi, strnum

cld

mov    ecx, [tamstr]

ciclonum2:

lodsb

cmp    al, '9'

jg    letra2

and    al, 0xF

jmp    fim2

letra2:

and    al, 0xF

add    al, 9

fim2:

shl    ebx,4

add    ebx, eax

loop    ciclonum2

mov    [num2], ebx

        ; Pede operador

mov    edx,ts4

        mov    ecx,s4

        mov    ebx,1 

        mov    eax,4 

        int    0x80   

        mov    edx,MAX_PALAVRA

        mov    ecx,strnum

        mov    ebx,0

        mov    eax,3

        int    0x80

mov    esi, strnum

lodsb

cmp    al, '+'

je    soma

cmp    al, '-'

je    subtrai

cmp    al, '*'

je    multiplica

cmp    al, '/'

je    divide

soma:

mov    ebx, [num1]

add    ebx, [num2]

mov    [result], ebx

jmp    escreve

subtrai:

mov    ebx, [num1]

sub    ebx, [num2]

mov    [result], ebx

jmp    escreve

multiplica:

mov    eax, [num1]

mov    ebx, [num2]

mul    ebx

mov    [result], eax

jmp    escreve

divide:

xor    edx, edx

mov    eax, [num1]

mov    ebx, [num2]

div    ebx

mov    [result], eax

jmp    escreve

escreve:

; Transforma resultado em string

mov    ecx, 8

mov    edi, strnum

mov    ebx, [result]

cld

xor eax, eax

cicloresult:

rol    ebx, 4

mov    eax, ebx

and    eax, 0x0000000F

cmp    eax, 10

jl    algarismo

add    al, 'A'-10

jmp    fim3

algarismo:

add    al, '0'

fim3:

stosb

loop cicloresult

; Imprime resultado

mov    edx,ts3

        mov    ecx,s3

        mov    ebx,1 

        mov    eax,4 

        int    0x80   

mov    edx,8

        mov    ecx,strnum

        mov    ebx,1 

        mov    eax,4 

        int    0x80   

         mov    edx,tlinha

        mov    ecx,linha

        mov    ebx,1 

        mov    eax,4 

        int    0x80   

acabou:       

; Sair do programa passando o controlo ao sistema operativo

        mov    ebx,0

        mov    eax,1

        int    0x80
 

Editado por Stheffany Silva
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...