写道
TURBO C/C++
https://www.iteye.com/blog/lobin-2516634
https://www.iteye.com/blog/lobin-2516634
中断
中断处理函数
编写中断处理函数需要指定interrupt以表示这是一个中断处理函数。如果没有指定interrupt,它就是一个普通的函数。
void interrupt <interrupt routine>() { ... ... ... }
中断处理函数如上面指定了interrupt的函数反编译后的代码大概是这样的:
<interrupt routine> proc far push ax push bx push cx push dx push es push ds push si push di push bp mov bp,DGROUP mov ds,bp mov bp,sp ... ... ... pop bp pop di pop si pop ds pop es pop dx pop cx pop bx pop ax iret <interrupt routine> endp
void interrupt kl_iroutine_0x32() { printf("hello, world!\n"); } void main() { union REGS regs; disable(); setvect(0x32, kl_iroutine_0x32); enable(); int86(0x32, ®s, ®s); int86(0x32, ®s, ®s); int86(0x32, ®s, ®s); getch(); }
注册BGI驱动
int _Cdecl registerbgidriver(void (*driver)(void));
注册的BGI驱动函数原型:
void (*driver)(void)
一些BGI驱动函数:
void _Cdecl CGA_driver(void); void _Cdecl EGAVGA_driver(void); void _Cdecl IBM8514_driver(void); void _Cdecl Herc_driver(void); void _Cdecl ATT_driver(void); void _Cdecl PC3270_driver(void);
C:\TURBOC3>cd BGI
>BGIOBJ EGAVGA
BGI to OBJ Converter Version 3.0 Copyright (c) 1987, 1990 Borland International
5554 bytes from 'EGAVGA.BGI' converted into 'EGAVGA.OBJ',
public name = '_EGAVGA_driver'.
在C:\TURBOC3\BGI下生成了一个EGAVGA.OBJ文件。
>TLIB LIB\GRAPHICS.LIB+EGAVGA
viewport
#include<graphics.h> void main() { //int gd = DETECT; //int gm; int gd = DETECT; int gm = VGAHI; // VGAHI = 2, /* 640x480 16 color 1 page */ registerbgidriver(EGAVGA_driver); initgraph(&gd, &gm, "C:\\TURBOC3\BGI"); setbkcolor(BLACK); setviewport(100, 100, 540, 380, 0); setcolor(WHITE); setfillstyle(1, WHITE); rectangle(0, 0, 440, 280); floodfill(50, 50, WHITE); //clearviewport(); setviewport(150, 150, 590, 430, 0); setcolor(GREEN); setfillstyle(1, LIGHTGRAY); rectangle(0, 0, 440, 280); floodfill(50, 50, GREEN); //clearviewport(); setviewport(180, 180, 620, 460, 0); setcolor(WHITE); setfillstyle(1, BLUE); rectangle(0, 0, 440, 280); floodfill(50, 50, WHITE); //clearviewport(); getch(); closegraph(); }
#include<GRAPHICS.H> void main() { int gd = DETECT; int gm; registerbgidriver(EGAVGA_driver); initgraph(&gd, &gm, "C:\\TURBOC3\BGI"); setbkcolor(12); setcolor(2); putpixel(10, 10, 1); getch(); closegraph(); }
这里注册的BGI驱动EGAVGA_driver
void _Cdecl EGAVGA_driver(void);
是在上面将BGI转换为OBJ(>BGIOBJ EGAVGA)的时候生成的:
public name = '_EGAVGA_driver'.
绘制矩形
#include<stdio.h> #include<graphics.h> #include<conio.h> void main() { int gd = DETECT; int gm = VGAHI; // VGAHI = 2, /* 640x480 16 color 1 page */ registerbgidriver(EGAVGA_driver); initgraph(&gd, &gm, "C:\\TURBOC3\BGI"); setbkcolor(12); setcolor(2); setlinestyle(SOLID_LINE, EMPTY_FILL, 0 /*NORM_WIDTH*/); rectangle(10, 10, 640 - 10, 480 - 10); getch(); closegraph(); }
相关推荐
第3章 cgi应用程序--顾客留言簿 html简介 使用cgi创建动态页面 guestbook.cgi脚本程序 定义表单以及处理表单数据 cgi.tcl软件包 接下去的几步 第4章 tcl中的字符串处理 string命令 append命令 format...
(5) 本光盘中除了第4篇中的3个程序(Ping、TCP、UDP)在Visual C++ 6.0中调试通过以外(因为TC和Win-TC中均没有需要的头文件),其余所有程序都在Win-TC和Turbo C 2.0中调试通过。 (6) 建议读者使用Win-TC来编辑和...
(5) 本光盘中除了第4篇中的3个程序(Ping、TCP、UDP)在Visual C++ 6.0中调试通过以外(因为TC和Win-TC中均没有需要的头文件),其余所有程序都在Win-TC和Turbo C 2.0中调试通过。 (6) 建议读者使用Win-TC来编辑和...
(5) 本光盘中除了第4篇中的3个程序(Ping、TCP、UDP)在Visual C++ 6.0中调试通过以外(因为TC和Win-TC中均没有需要的头文件),其余所有程序都在Win-TC和Turbo C 2.0中调试通过。 (6) 建议读者使用Win-TC来编辑和...
首先,运行在DOS下的软件不可避免的都存在中文输入和显示十分困难,对中文的支持非常差,除非借助第三方软件的帮助;第二,DOS下的程序没有资源,不可能被汉化,你只能使用英文的界面,除非你的英文水平非常高,否则...
2012-06-11 21:07 765,000 AS3游戏编程大学.pdf 2012-06-11 21:40 750,563 ATL开发指南源码.rar 2012-06-11 21:05 186,863 BIOS练习工具加BIOS完全手册.rar 2012-06-11 21:03 340,134 C++ Primer Plus.第五版.习题...
首先,运行在DOS下的软件不可避免的都存在中文输入和显示十分困难,对中文的支持非常差,除非借助第三方软件的帮助;第二,DOS下的程序没有资源,不可能被汉化,你只能使用英文的界面,除非你的英文水平非常高,否则...
三、维护类代码问题 第51页 1、 统一枚举类型的使用 第51页 【案例3.1.1】 第51页 2、 注释量至少占代码总量的20% 第51页 【案例3.2.1】对XXX产品BAM某版本部分代码注释量的统计 第51页 四、产品兼容性问题 第52页 ...
这种风格叫“掩码”,在Windows编程中这种用法会经常用到。 大家想像一下MessageBox的内部实现是怎么样的? if((mode& MB_OK)== MB_OK) { //显示OK按钮 } if((mode& MB_ICONQUESTION)== MB_ICONQUESTION) {...
第二步:下载php5.3.3的windows压缩版本:php-5.3.3-nts-Win32-VC9-x86.zip1、下载地址:http://windows.php.net/download/,选择VC9 x86 Non Thread Safe。有关PHP版本说明2、把php-5.3.3-nts-Win32-VC9-x86.zip解...