fork download
  1. section .data
  2. msg_pedir_numero db "Por favor, ingrese un numero:", 0
  3. msg_positivo db "El numero es positivo", 0
  4. msg_negativo db "El numero es negativo", 0
  5. salto_linea db 10, 0 ; Salto de línea para formateo
  6.  
  7. section .bss
  8. numero resb 1
  9.  
  10. section .text
  11. global _start
  12.  
  13. _start:
  14. ; Mostrar el mensaje para pedir el número
  15. mov eax, 4 ; syscall para escritura (sys_write)
  16. mov ebx, 1 ; stdout
  17. mov ecx, msg_pedir_numero ; mensaje
  18. mov edx, 26 ; longitud del mensaje
  19. int 0x80 ; llamada al sistema
  20.  
  21. ; Leer el número del usuario
  22. mov eax, 3 ; syscall para lectura (sys_read)
  23. mov ebx, 0 ; stdin
  24. mov ecx, numero ; almacenar en "numero"
  25. mov edx, 1 ; leer un byte
  26. int 0x80 ; llamada al sistema
  27.  
  28. ; Insertar salto de línea después de la entrada
  29. mov eax, 4
  30. mov ebx, 1
  31. mov ecx, salto_linea
  32. mov edx, 1
  33. int 0x80
  34.  
  35. ; Convertir el número leído de ASCII a binario
  36. mov al, byte [numero]
  37. sub al, '0'
  38.  
  39. ; Verificar si el número es positivo o negativo
  40. cmp al, 0 ; comparar con 0
  41. jl negativo ; si es menor, ir a negativo
  42.  
  43. ; Si es positivo
  44. mov eax, 4 ; syscall para escritura (sys_write)
  45. mov ebx, 1 ; stdout
  46. mov ecx, msg_positivo
  47. mov edx, 19 ; longitud del mensaje
  48. int 0x80 ; llamada al sistema
  49. jmp fin ; saltar al final
  50.  
  51. negativo:
  52. mov eax, 4 ; syscall para escritura (sys_write)
  53. mov ebx, 1 ; stdout
  54. mov ecx, msg_negativo
  55. mov edx, 19 ; longitud del mensaje
  56. int 0x80 ; llamada al sistema
  57.  
  58. fin:
  59. ; Salir del programa
  60. mov eax, 1 ; syscall para salida (sys_exit)
  61. xor ebx, ebx ; estado de salida 0
  62. int 0x80 ; llamada al sistema
  63.  
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
Por favor, ingrese un nume
El numero es negati