| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 843 人关注过本帖
标题:模拟进度条(图形版)
收藏  订阅  推荐  打印 
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30
模拟进度条(图形版)


程序代码:
#include <stdio.h>
void redos();
void pause(unsigned int time);
void screen_mode(unsigned char mode);

void point(unsigned int x,
       unsigned int y,
       unsigned char colorID,
       unsigned char color
       );

void shape(unsigned int x0,
       unsigned int y0,
       unsigned int x1,
       unsigned int y1,
       unsigned char colorID,
       unsigned char color
       );

int main(void)
{
    int x,y;
    screen_mode(0x12);
    printf("\n\n");
    for(x=0; x<=500; x+=30)
    {
        shape(0,10,x,30,0,1);
        printf("%d\%\b\b\b",x/5);
        pause(1);
    }

    printf("100\%\b\b\b");
    redos();
    return 0;
}

void redos()
{
    asm mov ah,7h;
    asm int 21h;
    asm mov ah,4ch;
    asm int 21h;
}

void pause(unsigned int time)
{
    asm mov ah,0h;
    asm int 1ah;
    asm add dx,time;
    asm mov bx,dx;
label:
    asm int 1ah;
        asm cmp bx,dx;
        asm jne label;
}

void screen_mode(unsigned char mode)
{
        asm mov ah,0h;
        asm mov al,mode;
        asm int 10h;
}

void point(unsigned int x,
           unsigned int y,
           unsigned char colorID,
           unsigned char color
           )
{
        asm mov ah,0bh;
        asm mov bh,0x(colorID);
        asm mov bl,0x(color);
        asm int  10h;

        asm mov ah,0ch;
        asm mov al,0x(color);
        asm mov cx,x;
        asm mov dx,y;
        asm int 10h;
}

void shape(unsigned int x0,
           unsigned int y0,
           unsigned int x1,
           unsigned int y1,
           unsigned char colorID,
           unsigned char color
       )
{
        int i_x0, i_y0;
        for(i_x0=x0; i_x0<=x1; i_x0++)
    {
        for(i_y0=y0; i_y0<=y1; i_y0++)
        {
            point(i_x0, i_y0, colorID,color);
                }
        }
}
附件: 只有本站会员才能下载或查看附件,请您 登录注册
搜索更多相关主题的帖子: 图形  进度  模拟  
2007-12-22 09:55
闪闪4521
Rank: 3Rank: 3
等级:中级会员
帖子:196
积分:2234
注册:2007-11-30

用VC运行后一堆错,是不是少了什么头文件?
那个asm是什么?
2007-12-22 16:39
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30

asm 汇编语句
这是内联汇编来的,这个是borladc的内联汇编格式,
所以在vc 里编译是不行的.
2007-12-22 17:34
Top-visiooo
Rank: 1
来自:foshan
等级:新手上路
帖子:2
积分:120
注册:2007-12-22

啊啊。。
这样的吗?

我想带你去冬天,看雪飘落的地方,美丽是怎样的一个传说v.
2007-12-22 17:50
灭火的风
Rank: 2
来自:杭州
等级:注册会员
帖子:150
积分:1714
注册:2006-6-15

用TC可以,有个结构叫REG,表示8086的通用寄存器,还有个函数叫int86(int,REG *, REG *);好像是这样的,是用来调用中断的,第一个参数是中断号,第二个是输入寄存器——就是中断前设置寄存器为什么状态,最后一个参数是中断调用结束,控制返回后的寄存器状态。
好久没写了,不一定对,大概就是这个样子。
2007-12-22 22:08
灭火的风
Rank: 2
来自:杭州
等级:注册会员
帖子:150
积分:1714
注册:2006-6-15

Linux 下 GCC也可以直接内联asm
2007-12-22 22:10
灭火的风
Rank: 2
来自:杭州
等级:注册会员
帖子:150
积分:1714
注册:2006-6-15

其实在实模式下可以直接写显存,每个点都用一个中断会比较慢^_^
2007-12-22 22:13
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30

的确是很慢...gcc的内联汇编我也会..
为了做实验...机器上装了很多个系统...
又用虚拟机装了很多个系统...
不知道老兄对linux研究如何...
有空可指教下不?
2007-12-22 23:08
灭火的风
Rank: 2
来自:杭州
等级:注册会员
帖子:150
积分:1714
注册:2006-6-15

指教不敢当,我也只是初学开源的东西的,觉得很好玩啊,呵呵,找几个伙伴一起学应该很好哦
2007-12-22 23:10
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30

呵呵...我也比较喜欢开源的东西...近来弄了个ubuntu linux 有3D桌面效果的.
为了搞那个效果看看,找了很久显卡驱动啊...linux真的没win那么多厂商为它
写驱动,我们买来的新电脑也只是配win的驱动,真郁闷.所以我也产生了要学
写驱动的念头.不过这方面一点都还不知道.老兄可否加我Q:82530662
2007-12-22 23:51
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.053165 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved