|
Mostrar Mensajes
|
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 / Re: Tablas de multiplicar en nasm
|
en: 24 Enero 2022, 18:55 pm
|
Hola capo! Mirá cómo te acordás! sí todavía estoy con ese problema porque tuve que dejarlo por cuestiones personales y ahora lo retomé. Agradezco mucho tu rta y tu tiempo. Prometo no volver a preguntar lo mismo. Gracias.
|
|
|
3
|
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 . ;; pregunta por las tablas de multiplicar del 2 al 10 %macro read 2 mov eax, 3 mov ebx, 0 mov ecx, %1 mov edx, %2 int 0x80 %endmacro %macro print 2 mov eax, 4 mov ebx, 1 mov ecx, %1 mov edx, %2 int 0x80 %endmacro section .data msg db "Elige una tabla de Multiplicar del 2 al 10", 0xa lenmsg equ $-msg nwln db 0xa, 0xd lennwln equ $-nwln section .bss prod resb 3 op resb 1 section .text global _start _start: print msg, lenmsg read op, 2 mov ecx, 10 mov ax, 1 multiplica: mov bx, [op] sub bx, '0' push ax mul bx cmp ax, 90 jg m90 aam ; separa lo que hay en al. ah=decena al=unidad add al, 48 add ah, 48 mov [prod+0], byte '0' mov [prod+1], ah mov [prod+2], al push ecx print prod, 3 print nwln, lennwln pop ecx pop ax inc ax cmp ecx, 1 je exit loop multiplica m90: aam ; separo al. ah=10 al=0 add al, 48 mov [prod+2], al mov al, ah ; muevo ah=10 a al aam ; separo lo que hay en al. ah=1, al=0 add al, 48 add ah, 48 mov [prod+1], al ; muevo la decena mov [prod+0], ah ; muevo la centena print prod, 3 exit: mov eax, 1 mov ebx, 0 int 0x80
|
|
|
4
|
Programación / ASM / Re: Nasm - tablas de multiplicar
|
en: 12 Octubre 2021, 19:32 pm
|
Eternal Idol, te agradezco sobremanera. Claro entiendo jaja el primero es acertado de casualidad jajaj. He usado un poco gdb. Nunca lo usé en C, pero esto es un poco más complejo jaja. Mirá si bien programé bastante en C, varias aplicaciones y juegos; al poco andar con assembler noté eso, que mi lógica no era tan buena como yo creía. Y te voy a decir por qué estoy estudiando ensamblador ahora. Comencé a desarrollar el juego sudoku en C, con las llibrerías ncurses, y me trabé en una parte asique dije: voy a aprender ensamblador para mejorar y luego retomar el juego. Y aquí estoy, descubriendo mis falencias en lógica. Con esta ayuda que me diste, además, veo como pensar en assembler. Me sirvió mucho. Voy a estudiar más así evito preguntar a cada rato. Muchísimas gracias por compartir tu conocimiento y dedicar tu tiempo. Un abrazo. Voy a leer detenidamente tus comentarios y mirar el código. Genial gracias!
|
|
|
5
|
Programación / ASM / Re: Nasm - tablas de multiplicar
|
en: 12 Octubre 2021, 01:43 am
|
Hola a todos. Continúo con mi programa de tablas de multiplicar. He agregado lo siguiente: Le pregunto al usuario por la tabla de multiplicar que elija. Ahora el problema es que aunque responda correctamente me imprime el cartel de error. Espero que puedan ayudarme, gracias. La salida: Elige una tabla de multiplicar del 2 al 10 2 2 x 01 = 2 Ok. 2 x 02 = 4 Error. 2 x 03 = 6 Error. 2 x 04 = 8 Error. 2 x 05 = El código: ; pregunta por las tablas de multiplicar %macro print 2 mov eax, 4 mov ebx, 1 mov ecx, %1 mov edx, %2 int 0x80 %endmacro %macro read 2 mov eax, 3 mov ebx, 0 mov ecx, %1 mov edx, %2 int 0x80 %endmacro section .data sel db "Elige una tabla de multiplicar del 2 al 10 " lensel equ $-sel exis db ' x ' lenx equ $-exis igual db " = " leni equ $-igual ok db "Ok." lenok equ $-ok error db "Error." lenerr equ $-error ln db 0xa, 0xd lenln equ $-ln section .bss tab resb 2 mult resb 2 res resb 3 prod resb 3 section .text global _start _start: print sel, lensel read tab, 2 mov edi, 0 tabla: inc edi mov ax, [tab] sub ax, '0' mul edi push ax cmp edi, 9 jg exit print ln, lenln add edi, '0' ; paso a ascii mov [mult], edi mov bl, [mult+1] mov bh, [mult+0] add bx, '0' mov [mult], bx print tab, 1 print exis, lenx print mult, 2 print igual, leni read res, 2 mov cx, [res] sub cx, '0' pop ax cmp ax, cx je okey print error, lenerr sub edi, '0' ; paso a binario jmp tabla okey: print ok, lenok sub edi, '0' ; paso a binario jmp tabla exit: mov eax, 1 mov ebx, 0 int 0x80
|
|
|
7
|
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 ; pregunta por las tablas de multiplicar %macro print 2 mov eax, 4 mov ebx, 1 mov ecx, %1 mov edx, %2 int 0x80 %endmacro %macro read 2 mov eax, 3 mov ebx, 0 mov ecx, %1 mov edx, %2 int 0x80 %endmacro section .data msg db "elige una del 2 al 10 " lenmsg equ $-msg ln db 0xa, 0xd lenln equ $-ln section .bss tab resb 2 prod resb 3 section .text global _start _start: print msg, lenmsg push ecx read tab, 2 pop ecx mov edi, 1 tabla: cmp edi, 10 jg exit mov ax, [tab] sub ax, '0' mul edi cmp ax, 10 jge greater add ax, '0' mov [prod], ax print prod, 2 print ln, lenln cont: inc edi jmp tabla greater: clc aam ; adjust ascii after multiplication pushf or ah, 30h or al, 30h popf mov [prod+0], ah mov [prod+1], al print prod, 2 print ln, lenln jmp cont exit: mov eax, 1 mov ebx, 0 int 0x80
|
|
|
|
|
|
|