1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Assembly_duvida

Discussão em 'Programação' iniciada por friZster, 16 de Dezembro de 2007. (Respostas: 4; Visualizações: 711)

  1. Alguem me pode dar uma dica como criar uma função em Assembly que devolva o resto de uma divisao?!
    penso k seja algo deste género , mas sei que algo a nível de lógica não está bem, mas não consigo ver como solucionar o problema. Para quem tá habituado ao VB e ao Java, Assembly é uma granda f*da... s puderes ajudem:

    jump main
    a:7
    b:2
    r:0
    main: lodd a
    push
    lodd b
    push
    call resto
    stod m
    insp 2
    halt
    resto: loco 0
    push
    push
    lodl 0
    subl 4
    jzer divfim
    lodl 4
    subl 3
    stol 1
    loco 1
    addl 0
    stol 0
    jump resto
    divfim: lodl 1
    stod r
    insp 2
    retn

    Thanks! :rolleyes:
     
  2. acfryx

    acfryx Power Member

    Para que processador é esse código?

    Por aquilo que consegui analisar acho que a rotina resto não tem um return correspondente. Ou a instrução retn (ultima linha) é que faz isso?

    Não ajuda muito mas... :o
     
  3. arkannis

    arkannis Power Member

    Bem... que confusao... que notaçao é essa? para que processador?

    Em assembly para x86, o resto de uma divisão é guardado no registo %AH se for divisão de bytes ; %DX se for divisão de words ; %EDX se for divisão de longs.
    Portanto nao faria qualquer sentido fazer uma função para isso... Mas se quiseres fazer na mesma é completamente trivial.
     
  4. reise

    reise Power Member

    Isto até parece MIPS ou coisa do género!
    A arquitectura em que queres fazer isto ajudava.
     
  5. epah... ja consegui, isto que tava a pedir mas obrigado

    era isto:
    jump main
    a:7
    b:2
    main: lodd a
    push
    lodd b
    push
    call resto
    insp 2
    stod 4094
    halt
    resto: lodl 2
    subl 1
    jneg fimneg
    stol 2
    jump resto
    fimneg: lodl 2
    retn

    isto e para correr num programa que corre no DOS que o macx ou hexmac, não sei bem o nome dakilo
     

Partilhar esta Página