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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / ASM / Re: crear interrupción por hardware en: 17 Junio 2019, 05:07 am
lamento la respuesta tardía, lo realice y me funciono.
 :-[ :-[

Gracias, por tu apoyo.
2  Programación / ASM / crear interrupción por hardware en: 28 Mayo 2019, 06:23 am
Hola a todos, tengo una super pregunta, ¿Como se crea una interrupción por hardware?

Tengo un programa que hace un conteo del 0 al 59 y cuando llega a 60 pasa denuevo al 0 y reinicia el ciclo, hasta ahi voy bien, pero no se como hacer que al presionar la tecla "1" se active un retraso y que al presionar "2" se active otro retraso diferente.


En código tengo lo siguiente:
Código
  1. org 100h
  2.  
  3. .model small
  4.  
  5. .stack 100
  6.  
  7. .data
  8. u db 0
  9. d db 0
  10. v db 0
  11. tiempo db 0
  12.  
  13. .code
  14.  
  15. start:
  16. mov cx,00h ; inicializo contador en cero
  17.  
  18. inicio:
  19. mov tiempo,cl
  20. ;call retraso1s  ;salto a retraso de 1s
  21. ;call retraso5s  ;salto a retraso de 1s
  22. ;call retraso10s ; salto a retraso de 10s
  23. mov cl,tiempo
  24. cmp cl,10 ; compara si en el contador es mayor a 9
  25. jc aumento ;Destino es menor que origen
  26. ;jne repite ; sino es verdadera la ultima comparacion regresa a repite
  27. jz separar ;Numeros iguales
  28. jnz separar ;Destino mayor a origen
  29. cmp d,06h
  30. jc inicio ;Destino es menor que origen
  31. jz start ;Numeros iguales
  32.  
  33.  
  34. separar:
  35. mov al,cl
  36. AAM
  37. mov u,al
  38. mov al,ah
  39. AAM
  40. mov d,al
  41. ;cmp d,06h
  42. ;jz salir ;Numeros iguales
  43. mov ah,02h
  44. mov dl,d
  45. add dl,30h
  46. int 21h  
  47. mov ah,02h
  48. mov dl,u
  49. add dl,30h
  50. int 21h
  51. inc cl ; incremento el contador en uno
  52. jmp inicio
  53. ret
  54.  
  55. aumento:
  56. mov dl,cl ; muevo el valor del contador a dl para imprimir
  57. inc cl ; incremento el contador en uno
  58. add dl,30h ; sumo 30h a dl para convertirlo al codigo ascii y poder imprimirlo
  59. mov ah,02h ; funcion para imprimir un caracter
  60. int 21h ; imprimo
  61. jmp inicio
  62. ret      
  63.  
  64.  
  65. retraso1s:
  66.    MOV     CX, 0FH
  67.    MOV     DX, 4240H
  68.    MOV     AH, 86H
  69.    INT     15H    
  70. ret
  71.  
  72. retraso4s:
  73.    MOV     CX,3aH
  74.    MOV     DX,9680H
  75.    MOV     AH,86H
  76.    INT     15H    
  77. ret
  78.  
  79. retraso5s:
  80.    MOV     CX,45H
  81.    MOV     DX,9680H
  82.    MOV     AH,86H
  83.    INT     15H    
  84. ret
  85.  
  86.  
  87. retraso10s:
  88.    MOV     CX, 98H
  89.    MOV     DX, 9680H
  90.    MOV     AH, 86H
  91.    INT     15H    
  92. ret
  93.  
  94.  
  95. salir:
  96. .exit
  97. end
  98.  


Espero que me puedan dar una idea de como continuar
3  Programación / ASM / Re: problema con contador que toma segundos del sistema en: 28 Mayo 2019, 05:42 am
En estos momentos no puedo testear el code, por lo qie dices tienes el problema en convertir el entero 60 a 0? Tiene facil solucion, con una rutina de comparacion y un xor lo tendrias.

Un saludo.


Gracias por responder. Lo que me causa conflicto es el porque después del segundo 60 (00) no pasa al 01, en su lugar se termina el la ejecución.
4  Programación / ASM / problema con contador que toma segundos del sistema en: 26 Mayo 2019, 08:14 am
Hola a todos, estoy creando un contador que toma los segundos del sistema y sigue con el conteo cada segundo y manda a imprimir el mismo, pero tengo un problema en la conversión de 60 a 00 y validarlo al momento de comparar con el segundo actual.

Código
  1. org 100h
  2.  
  3. .model small
  4.  
  5.  
  6. .stack 100
  7.  
  8.  
  9. .data
  10. s0      db 30h
  11. s1      db 30h
  12. sold    db 0
  13. snew    db 0
  14.  
  15.  
  16.  
  17. .code
  18. .startup
  19.    init:
  20. mov ah,2ch  
  21. int 21h     ;dh =segundos del sistema
  22.        mov sold,dh
  23.        call hora      
  24. add dh, 1  ;dh= segundo se sistema +1
  25. mov snew, dh ;snew es el segundo posterior
  26.        cmp snew,60
  27. jz seis0  ;Numeros iguales
  28.        jmp sincronizados          
  29.  
  30.  
  31. sincronizados:  
  32. mov ah,2ch  
  33. int 21h     ;dh =segundos del sistema
  34. mov bl,dh
  35.    mov bh,snew
  36. cmp bl, bh ;compara (new segundo) contra (old segundo + 1)
  37. jne sincronizados ;salto si no son iguales
  38. jmp init
  39. ret
  40.  
  41.  
  42. seis0:
  43. mov ah,2ch  
  44. int 21h     ;dh =segundos del sistema
  45.        mov sold,dh
  46. cmp sold,00
  47. jnz seis0 ;Destino mayor a origen
  48. mov sold,00 ;reset sold a 0
  49. call separa
  50. mov snew,1
  51. jmp sincronizados
  52. ret
  53.  
  54.  
  55.    hora:
  56.  
  57.        cmp sold,10
  58.        jae separa
  59. jmp sincronizados
  60.  
  61.    ret
  62.  
  63.    separa:
  64.        mov al,sold
  65.        AAM
  66.        mov bx,ax
  67.        mov ah,02h
  68.        mov dl,bh
  69.        add dl,30h
  70.        int 21h
  71.        mov ah,02h
  72.        mov dl,bl
  73.        add dl,30h
  74.        int 21h
  75.    ret
  76.  
  77.  

Esto es lo que tengo hecho.
El contador va bien hasta el momento en que va iniciar un nuevo ciclo de conteo (es decir, va del segundo del sistema hasta el 60 o 00) y de ahi se queda en un ciclo, nunca pasa al 01.

Espero que me puedan ayudar
5  Programación / Programación C/C++ / Implementación de arreglo de 2-D como función en: 28 Noviembre 2018, 04:40 am
Buenas chicos, intento implementar una función que imprima los valores de un arreglo 2-d, pero no se que poner en el parámetro donde va la segunda dimensión, con malloc pido memoria para un int o que me recomiendan.

Aqui tengo el problema:
Código
  1. void muestra(int matriz[][], int renglon, int columna)
  2.  

El valor de las dimensiones de mi array es variable, bien puede ser 2x 3 o 20x20.
Lo que tengo de código es:
Código
  1. void muestra(int matriz[][], int renglon, int columna);
  2.  
  3. int main() {
  4.  int M, N, i, j;
  5.  
  6. scanf("%d %d", &M, &N);
  7.  
  8.  int b_minas [M][N];
  9.  
  10.  for (i= 0; i < M; i++) {
  11.    for (j= 0; j < N; j++) {
  12.    scanf("%d", &b_minas[i][j]);
  13.    }
  14.  }
  15.  muestra( b_minas, M, N);
  16.  
  17.  
  18.  return 0;
  19. }
  20.  
  21. void muestra(int matriz[][], int renglon, int columna) {
  22.  printf("\n");
  23.  int i, j;
  24.  
  25.  for (i= 0; i < renglon; i++) {
  26.    for (j= 0; j < columna; j++) {
  27.    printf("%d ", matriz[i][j]);
  28.    }
  29.    printf("\n");
  30.  }
  31. }
  32.  
6  Programación / Programación C/C++ / Re: Guardar una linea de enteros separados por un espacio en C en: 9 Noviembre 2018, 21:06 pm
Lamento la demora, por cierto coloco este código super básico. Hace lo mismo pero no se compara a lo que han puesto hasta ahora.

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. void mostrar_arreglo(int *A, int long_cad);
  5. void ordenacion_seleccion (int * A, int N);
  6. void intercambiar (int * A, int i, int j);
  7.  
  8. int main() {
  9. int  N, M, L, i, j=0;
  10.  
  11. scanf("%d", &N);
  12. scanf("%d", &M);
  13. L= N+M;
  14. int arreglo_n[N], arreglo_m[M], arreglo_final[L];
  15. for ( i= 0; i < N; i++) {
  16. scanf("%d", &arreglo_n[i]);
  17. }
  18. for ( i= 0; i < M; i++) {
  19. scanf("%d", &arreglo_m[i]);
  20. }
  21. for ( i = 0; i < L; i++) {
  22. if (i< N) {
  23. arreglo_final[i]= arreglo_n[i];
  24. } else {
  25. arreglo_final[i]= arreglo_m[j];
  26. j++;
  27. }
  28. }
  29. ordenacion_seleccion( arreglo_final, L);
  30. mostrar_arreglo( arreglo_final, L);
  31. }
  32.  
  33. void ordenacion_seleccion (int * A, int N)
  34. {//ordena un conjunto por seleccion
  35.    int i, j, k;
  36.    for (i = 0; i < N - 1; i++)
  37.    {
  38.        for (k = i, j = i + 1; j < N; j++)
  39.            if (A[j] < A[k])
  40.                k = j;
  41.        if (k != i)
  42.            intercambiar (A, i, k);
  43.    }
  44. }
  45.  
  46. void intercambiar (int * A, int i, int j)
  47. {//intercambiar lugares para completar la funcion ordenacion_seleccion
  48.    int tmp = A[i];
  49.    A[i] = A[j];
  50.    A[j] = tmp;
  51. }
  52.  
  53. void mostrar_arreglo(int *A, int long_cad)
  54. {
  55.  int i= 0;
  56.  for ( i= 0; i < long_cad; i++) {
  57.    printf("%d ", A[i]);
  58.  }
  59. }
  60.  
7  Programación / Programación C/C++ / Re: Guardar una linea de enteros separados por un espacio en C en: 7 Noviembre 2018, 22:19 pm
Basándome en parte de lo que creaste "AlbertoBSD" yo estoy haciendo otro, para ver si soy capaz de simplificarlo. En la noche lo subo.

SALUDOS. ;D
8  Programación / Programación C/C++ / Re: Guardar una linea de enteros separados por un espacio en C en: 7 Noviembre 2018, 21:58 pm
Salida:

Código:
C:\codigos>tsss.exe
10
1 2 3 5 5 5 5 5 5 5
Numero 1: 1
Numero 2: 2
Numero 3: 3
Numero 4: 5
Numero 5: 5
Numero 6: 5
Numero 7: 5
Numero 8: 5
Numero 9: 5
Numero 10: 5


Codigo


Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. int main() {
  6. int  N,i = 0,len;
  7. char **arreglo = NULL;
  8. char *buffer;
  9. char *token = NULL;
  10. char temporal[1000];
  11. fgets(temporal,1000,stdin);
  12. N = strtol(temporal,NULL,10);
  13. token = strtok(buffer," ");
  14. fgets(temporal,1000,stdin);
  15. token = strtok(temporal," ");
  16. do {
  17. arreglo = realloc(arreglo, sizeof(char*) * (i +1));
  18.  
  19. //arreglo[i] = token; // Esta linea esta bien, pero realmente recomiendo moverl el contenido de esta posicion de memoria a uno que si controlemos nosotros
  20. len = strlen(token);
  21. arreglo[i] = calloc(len+1,sizeof(char));
  22. memcpy(arreglo[i],token,len);
  23. printf("Numero %i: %s\n",i+1,arreglo[i]);
  24. token = strtok(NULL," ");
  25. i++;
  26. }while(i < N && token != NULL);
  27. }

Saludos!

Muchas gracias, ayer tenia prisa y confundí el código con un ejercicio similar pero con mas entradas.
Un amigo me estaba ayudando y me mando parte del código, tal vez y si lo copio, pero como tenia prisa no pudo explicarme bien que había hecho.

Una ultima pregunta, ¿sabes si hay una función para pasar el valor que esta guardando el doble puntero (arreglo) a un array?

Es decir, algo así como:
**arreglo= arr[j]
9  Programación / Programación C/C++ / Re: Guardar una linea de enteros separados por un espacio en C en: 7 Noviembre 2018, 00:31 am
Intenta con strtok

Tengo esto escrito pero no me deja avanzar en el GETS
Código
  1. int main() {
  2. int  total = 0, N, M;
  3. char **arreglo = NULL;
  4. char *buffer; // donde se guarda todo el texto
  5. char *token = NULL;
  6.  
  7.  scanf("%d %d", &N, &M);
  8.  gets (*buffer);
  9.  printf("%s\n", *buffer);
  10.  
  11. token = strtok(*buffer,",");
  12. while(token != NULL) {
  13. arreglo = realloc(arreglo, sizeof(char*) * (total +1));
  14. arreglo[total] = token;
  15. printf("Nombre %i: %s\n",total+1,arreglo[total]);
  16. total++;
  17. token=strtok(NULL,",");
  18. }
  19. }
  20.  

Alguien me podría decir ¿en que me estoy equivocando?
10  Programación / Programación C/C++ / Guardar una linea de enteros separados por un espacio en C en: 6 Noviembre 2018, 19:51 pm
Buenas dias/tardes/noches a todos tengo un problema en el que espero que me puedan ayudar.

Necesito guardar un serie de números enteros que están separados por un espacio en un arreglo, es decir, me dan un número N que la longitud de mi arreglo A[N] y la siguiente entrada son N números que debo guardar en A, ejemplo:

5
1 3000 466 588 57778


Mi duda es como guardarlos, si estuvieran juntos los números o los ingresaran un seguido de otro seria fácil, pero de esta forma no se me ocurre que hacer.

Gracias a todo los que puedan darme unas ideas que implementar.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines