Advertisement
ArCiGo

Suma dos numeros. MASM32

Apr 14th, 2013
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  2. ;     Este programa hace una simple suma de dos números utilizando el modo de direccionamiento inmediato
  3. ;                               en él se utilizan registros e instrucciones del ensamblador
  4. ;
  5. ;                   Ensamble este programa en el menú "Project" usando la opción
  6. ;                                           "Console Assemble and Link"
  7. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  8.  
  9. .486                                    ;crea codigo de 32 bits
  10. .model flat, stdcall                    ;modelo de memoria de 32 bits
  11. option casemap: none                    ;sensible a mayusculas y minusculas
  12.  
  13. include \masm32\include\windows.inc     ;esta linea siempre debe ir primero
  14. include \masm32\macros\macros.asm       ;macros de apoyo de MASM
  15.  
  16. ; -----------------------------------------------------------------
  17. ;Incluir los archivos que tienen prototipos con formato de MASM para las llamadas de función
  18. ; -----------------------------------------------------------------
  19.  
  20. include \masm32\include\masm32.inc
  21. include \masm32\include\gdi32.inc
  22. include \masm32\include\user32.inc
  23. include \masm32\include\kernel32.inc
  24.  
  25. include \masm32\include\masm32rt.inc
  26.  
  27. ; ------------------------------------------------
  28. ; archivos de biblioteca que tienen las definiciones de las exportaciones
  29. ; de función y código probado  precompilado confiable.
  30. ; ------------------------------------------------
  31.  
  32. includelib \masm32\lib\masm32.lib
  33. includelib \masm32\lib\gdi32.lib
  34. includelib \masm32\lib\user32.lib
  35. includelib \masm32\lib\kernel32.lib
  36.  
  37. .data?
  38.     var1        DB 10 dup(?)
  39.     resultado   DW 10 dup(?)
  40.  
  41. .code
  42. start:
  43.     print chr$("Programa que suma dos numeros en MASM32",13,10)
  44.     print chr$(13,10,13,10)
  45.  
  46. ;call main
  47.     mov eax, 1
  48.  
  49.     ciclo:    call main
  50.     loop ciclo
  51. exit
  52.  
  53. ;************************************************
  54. main proc
  55.     LOCAL num1: DWORD
  56.     LOCAL num2: DWORD
  57.     LOCAL resu: DWORD
  58.  
  59.     LOCAL bandera: DWORD
  60.  
  61.     mov num1, sval(input("Ingrese primer numero: "))
  62.     mov num2, sval(input("Ingrese segundo numero: "))
  63.  
  64.     mov eax, num1
  65.     mov ecx, num2
  66.    
  67.     add ecx, eax
  68.     push ecx
  69.     print "El resultado es: "
  70.     pop eax
  71.     push eax
  72.     invoke dwtoa, eax, addr resultado
  73.     invoke StdOut, addr resultado
  74.     print chr$(13,10,13,10)
  75.     pop ecx
  76.    
  77.     cmp ecx, 100
  78.         je igual
  79.         jg mayor
  80.         jl menor
  81.  
  82.     igual:
  83.         print chr$("EL resultado es igual a 100",13,10)
  84.         jmp over
  85.     mayor:
  86.         print chr$("El resultado es mayor que 100",13,10)
  87.         jmp over
  88.     menor:
  89.         print chr$("El resultado es menor que 100",13,10)
  90.         over:
  91.  
  92.  
  93.     mov bandera, sval(input("1.- Continuar, 0.- Salir: "))
  94.     mov ecx, bandera
  95.    
  96.     ;En caso de que salga
  97.     ;print str$(input("Presione enter para abandonar la aplicacion"))    
  98.     ret
  99.  
  100.     ;invoke StdIn, ADDR var1, 10
  101. main endp
  102. ;***********************************************************
  103.  
  104. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement