elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: [1]
1  Sistemas Operativos / GNU/Linux / Duda en Editor Gedit como IDE en: 6 Marzo 2023, 19:04 pm
Hola gente del foro. Estoy usando Gedit como editor para programación. Alguien conoce una manera o algún plugin para poder ver en la panel lateral los símbolos de las funciones declaradas? A la manera como lo hace geany o Emacs. Gracias.
2  Programación / ASM / Tablas de multiplicar en nasm en: 22 Enero 2022, 21:57 pm
Hola amigos, esoty dando mis primeros pasos en Nasm.
Hago un programa para preguntar las tablas de multiplicar. Por ahora solo trato de imprimirlas, y es que mi problema es que el bucle no continúa, se detiene luego de imprimir el primer resultado. Si alguien puede ayudarme le agradezco .

Código
  1.    ;; pregunta por las tablas de multiplicar del 2 al 10
  2.  
  3. %macro read 2
  4.    mov eax, 3
  5.    mov ebx, 0
  6.    mov ecx, %1
  7.    mov edx, %2
  8.    int 0x80
  9. %endmacro
  10.  
  11. %macro print 2
  12.    mov eax, 4
  13.    mov ebx, 1
  14.    mov ecx, %1
  15.    mov edx, %2
  16.    int 0x80
  17. %endmacro
  18.  
  19. section .data
  20.    msg db "Elige una tabla de Multiplicar del 2 al 10", 0xa
  21.    lenmsg equ $-msg
  22.  
  23.    nwln db 0xa, 0xd
  24.    lennwln equ $-nwln
  25.  
  26. section .bss
  27.    prod resb 3
  28.    op resb 1
  29.  
  30. section .text
  31. global _start
  32.  
  33. _start:
  34.    print msg, lenmsg
  35.    read op, 2
  36.    mov ecx, 10
  37.    mov ax, 1
  38.  
  39. multiplica:    
  40.    mov bx, [op]
  41.    sub bx, '0'
  42.    push ax
  43.    mul bx
  44.    cmp ax, 90
  45.    jg m90
  46.    aam         ; separa lo que hay en al. ah=decena al=unidad
  47.    add al, 48
  48.    add ah, 48
  49.    mov [prod+0], byte '0'
  50.    mov [prod+1], ah
  51.    mov [prod+2], al
  52.    push ecx
  53.    print prod, 3
  54.    print nwln, lennwln
  55.    pop ecx
  56.    pop ax
  57.    inc ax
  58.    cmp ecx, 1
  59.    je exit
  60.    loop multiplica
  61.  
  62. m90:
  63.    aam                 ; separo al. ah=10 al=0
  64.    add al, 48
  65.    mov [prod+2], al
  66.    mov al, ah          ; muevo ah=10 a al
  67.    aam                 ; separo lo que hay en al. ah=1, al=0
  68.    add al, 48
  69.    add ah, 48
  70.    mov [prod+1], al    ; muevo la decena
  71.    mov [prod+0], ah    ; muevo la centena
  72.    print prod, 3
  73.  
  74. exit:  
  75.    mov eax, 1
  76.    mov ebx, 0
  77.    int 0x80
3  Programación / ASM / Nasm - tablas de multiplicar en: 8 Octubre 2021, 18:47 pm
Hola Gente del foro. Estoy aprendiendo Nasm. He escrito un programa que muestra el resultado de las tablas de multiplicar.

Todo bien si pido los resultados de las tablas del 1 al 9, obteniendo la salida por ejemplo en la tabla del 2:

02
04
06..
..12
14
16..
..20

Pero al pedir los resultados de la tabla del 10

no me muestra bien los números, sino que la salida es:

elige una del 2 al 10 10
01
02
3\220
4\300
5
06
07
8\200
9\260
:\340

 

Podrían ayudarme a resolverlo? Gracias. Este es el código

Código
  1. ; pregunta por las tablas de multiplicar
  2.  
  3. %macro print 2
  4. mov eax, 4
  5. mov ebx, 1
  6. mov ecx, %1
  7. mov edx, %2
  8. int 0x80
  9. %endmacro
  10.  
  11. %macro read 2
  12. mov eax, 3
  13. mov ebx, 0
  14. mov ecx, %1
  15. mov edx, %2
  16. int 0x80
  17. %endmacro
  18.  
  19. section .data
  20. msg db "elige una del 2 al 10 "
  21. lenmsg equ $-msg
  22.  
  23. ln db 0xa, 0xd
  24. lenln equ $-ln
  25.  
  26. section .bss
  27. tab resb 2
  28. prod resb 3
  29.  
  30. section .text
  31. global _start
  32.  
  33. _start:
  34. print msg, lenmsg
  35. push ecx
  36. read tab, 2
  37. pop ecx
  38. mov edi, 1
  39.  
  40. tabla:
  41. cmp edi, 10
  42. jg exit
  43. mov ax, [tab]
  44. sub ax, '0'
  45. mul edi
  46. cmp ax, 10
  47. jge greater
  48. add ax, '0'
  49. mov [prod], ax
  50. print prod, 2
  51. print ln, lenln
  52. cont:
  53. inc edi
  54. jmp tabla
  55.  
  56. greater:
  57. clc
  58. aam                                        ; adjust ascii after multiplication
  59. pushf
  60. or ah, 30h
  61. or al, 30h
  62. popf
  63. mov [prod+0], ah
  64. mov [prod+1], al
  65. print prod, 2
  66. print ln, lenln
  67. jmp cont
  68.  
  69. exit:
  70. mov eax, 1
  71. mov ebx, 0
  72. int 0x80
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines