Regístrate gratis para participar de los foros, o si ya estás registrado haz login.
| comentario del autor | Jue May 13, 2004 7:59 pm | |
|
Segun lo que leo printf es un puntero tipo constante al codigo de inicio de la funcion, mis dudas son (trabajo en modelo small): ¿La direccion es el offset desde el inicio del CS o una direccion absoluta. Se puede hacer unsigned int _cs *ptr; for(ptr=printf; ptr<printf+50; ptr++) printf("%X", *ptr); Quiza parezca una consulta tonta, pero consultando con diferentes personas me dan distintas versiones. Saludos y gracias. |
||
| asistió a la solución | Sab May 15, 2004 12:52 pm | |
|
Sobre el código para hacer el ejercicio, tendría que pensarlo. ¡¿Dónde dejé el K&R?! Saludos. |
||
| comentario del autor | Mar Jun 08, 2004 4:49 pm | |
|
Saludos y gracias |
||
| comentario | Mie Jul 28, 2004 5:32 am | |
|
CHAR INTELIGENCIA[20] PROCEDURE(SOY UN TONTO) REPEAT WRITEXY("SOY UN TONTO") UNTIL INTELIGENCIA == "NOTONTO" |
||
| comentario | Mie Jul 28, 2004 2:26 pm | |
|
|
||
| comentario del autor | Jue Jul 29, 2004 1:11 am | |
|
Saludos y gracias |
||
| sin valorar | Jue Jul 29, 2004 2:18 am | |
|
La verdad que la pregutna estaba buena, lástima que hace dos años que solo toco PHP. |
||
| comentario del autor | Lun Ago 23, 2004 1:21 am | |
|
Saludos y gracias por todo, le estoy metiendo pata a ver si paso a C++ y luego a Java, como veras tengo un atraso importante pero confio en avanzar rapido. /* Muestra los primeros 100 bytes de la funcion printf usando modificadores de segmento.*/ #include<conio.h> #include<stdio.h> #include<dos.h> void main(){ unsigned char _cs* funcion; // _cs especifica puntero cercano al CS int bloque , i ; struct SREGS dir; // tiene como campos la direccion de los registros (DOS.H) bloque = 100; funcion = (unsigned char _cs*) printf; clrscr(); printf("Primeros %d bytes de codigo de la funcion printf \n\n", bloque); segread(&dir); while (bloque){ printf("%4p:%4p ", dir.cs, funcion); for(i=0 ; i<16 ; i++){ printf("%02X ", *funcion ); if (!(-- bloque)) break; funcion ++;} printf("\n");} getche(); } /* Muestra los primeros 100 bytes de la funcion printf usando punteros lejanos */ #include <stdio.h> #include <conio.h> #define bloque 100 void main() { unsigned char far* codigo ; // es lejano para contener la direccion y el offset int i , j, cuenta ; codigo = (unsigned char far*) printf; cuenta=1; clrscr(); printf("Primeros %d bytes de codigo de la funcion printf \n\n", bloque); for ( i=0 ; i < 17 ; i++ ) { printf("%lX \b\b\b\b\b:%X ", codigo, codigo); for( j=1 ; j < 17 ; j++ ) { printf("%02X ", *codigo); if (!(bloque - cuenta )) break; cuenta ++; codigo++; } printf("\n") ; if (!( bloque-cuenta )) break; } getch(); } |
||