C/Visual C - ¿ alguien puede ?

 
Vista:

¿ alguien puede ?

Publicado por xj35u5x (113 intervenciones) el 08/08/2000 00:00:00
Alguien me puede ilustrar como haría un programa en C que simplemente
imprima una linea de texto en pantalla, pero SIN usar ningun header, o sea,
sin usar la palabra #include

eSTO SUPONGO QUE SE PUEDE HACER, Y SE QUE DEBE SER MAS
FACIL CON PRINTF pero es para aprender.... GRACIAS.

EN LA DIRECCION DE ABAJO TE PUEDES BAJAR MI PRIMER JUEGO EN
LENGUAJE C JUNTO A LAS FUENTES.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿ alguien puede ?

Publicado por Bo! (38 intervenciones) el 08/08/2000 00:00:00
Mira este código:
--------------------------
#include <io.h>
#pragma argsused
typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef unsigned int WORD;
typedef unsigned long ULONG;
typedef long LONG;
typedef int INT;
typedef char CHAR;
typedef void VOID;
#define tohex(c) (((c)<10)?((c)|48):((c)+´A´-10))
VOID locate (BYTE x, BYTE y)
{
_DH=y;_DL=x;
asm{mov ah,2;mov bh,0;int 0x10;}
}
VOID print (BYTE c, BYTE a)
{
_AL=c;_BL=a;_CL=1;
asm{mov ah,9;mov bh,0;mov ch,0;push cx;int 0x10;
mov ah,3;mov bh,0;int 0x10;
mov ah,2;
mov bh,0;
pop cx;
add dl,cl;
int 0x10;
}
}
VOID prints (BYTE *s, BYTE a)
{
while (*s){
_AL=*s++;_BL=a;
asm{mov cl,1;mov ah,9;mov bh,0;mov ch,0;push cx;int 0x10;
mov ah,3;mov bh,0;int 0x10;
mov ah,2;
mov bh,0;
pop cx;
add dl,cl;
int 0x10;
} }}
VOID main(BYTE argc,BYTE *argv[])
{
BYTE bChars[16],str[74],bF,bTec,*Pt;
BYTE *pstr=str;
UINT bCont;
UINT hFile=open(argv[1],0x8001);
LONG lPi,lPos=0,lLen=filelength(hFile);
asm{mov ax,1792;mov bh,31;mov cx,0;mov dx,6223;int 16;}
locate(0,0);
prints(argv[1],0x70);
for(;;)
{
locate(3,1);
for(bCont=
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El resto

Publicado por Bo! (1 intervención) el 08/08/2000 00:00:00
for(bCont=0;bCont<22;bCont++)
{
for(bF=73;bF--;) str[bF]=´ ´;
lPi=lPos+bCont*16;
if(lPi>lLen) {lPi=0;break;}
pstr=str;
for(bF=8;bF--;) *pstr++=tohex((lPi>>4*bF)&15);
lPi=lLen-lPi;
if(lPi>16) lPi=16;
read(hFile,bChars,16);
for(Pt=bChars,bF=0;bF<16;bF++,Pt++)
{
if (bF<lPi)
{
*pstr++=bF!=0&&!(bF%4)?´-´:´ ´;
*pstr++=tohex(*Pt>>4);
*pstr++=tohex(*Pt&15);
}
else pstr+=3;
}
pstr++;
for(Pt=bChars,bF=0;bF<16;bF++) *pstr++=(bF<lPi)?*Pt++:´ ´;
for(bF=8,pstr=str;bF--;) print(*pstr++,0x17);
for(bF=49;bF--;) print(*pstr++,(*pstr==´-´)?0x12:0x1f);
for(bF=16;bF--;) print(*pstr++,0x1f);
asm{mov ah,3;mov bh,0;int 0x10;
mov ah,2;inc dh;mov dl,3;int 0x10;}
}
asm{mov ax,0x0700;int 0x21;}
bTec=_AL;
if (bTec==´a´) lPos-=16;
if (bTec==´z´) if (lPi>15)lPos+=16;
if (bTec==´q´) break;
if (lPos<0) lPos=0;
lseek(hFile,lPos,0);
}
close(hFile);
}
---------------------------------
Hace lo que buscas, usa la BIOS del DOS. Esto es una manera, hay más, por ejemplo la que te comentó Endos, escribiendo directamente en la memoria de
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El resto(2)

Publicado por Bo! (38 intervenciones) el 08/08/2000 00:00:00
de video. Esto lo hice hace algunos años cuando empecé con esto del C y quise hacer lo que preguntas. Fijate en las funciones ´locate´ (posiciona cursor), ´print´ (imprime carácter con atributo de color) y ´prints´ (lo mismo pero con una cadena). Pásale un archivo como parámetro y verás el contenido en hexadecimal con su equivalente en ASCII. No sé si funciona con el DJGPP, en el Borland Trubo C++ 3.0 sí.

Parece que no se pueden poner ´posts´ muy largos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿ alguien puede ?

Publicado por Bo! (38 intervenciones) el 09/08/2000 00:00:00
Por cierto, ¿recibiste mi correo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar