| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1605 人关注过本帖
标题:很久没来了.发个简单的进度条模拟程序.
取消只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
 问题点数:0 回复次数:2 
很久没来了.发个简单的进度条模拟程序.
#include <stdio.h>
void pause(int time);
int main(void)
{
        int i;
        printf("=");
        for(i=0; i<58; i++)
        {
                printf("|");
                pause(3);
                printf("\b/");
                pause(3);
                printf("\b\\");
                pause(3);
                printf("\b=");
        }
        getchar();
        return 0;
}

void pause(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;
}

在borlandc编译通过...
搜索更多相关主题的帖子: 模拟程序 进度 
2007-12-21 17:50
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
vc的内联汇编格式我忘记了.你网上找找,应该差不多的.
我机器也没装有vc.
这只是调用了bios的1ah中断
功能描述:读取时钟“滴答”计数
入口参数:AH=00H
出口参数:AL=00H——未过午夜,否则,表示已过午夜
CX:DX=时钟“滴答”计数
void pause(int time)
{
        asm mov ah,0h;     调用1ah的0号功能,读取时钟“滴答”计数
        asm int 1ah;           调用1ah中断服务
        asm add dx,time;  在当前时钟滴答加上time滴答,一个滴答=55ms(毫秒)
        asm mov bx,dx;      把dx放到bx.因为后面dx的值会被刷新
label:                                这个不用说了吧,标签来的
        asm int 1ah;          再调用1ah中断服务
        asm cmp bx,dx;    用bx的滴答数和当前dx的滴答比较
        asm jne label;      jne是不等时跳转,就是说cmp bx,dx 如果两者不等就跳转
}

[[italic] 本帖最后由 ioriliao 于 2007-12-21 18:53 编辑 [/italic]]
2007-12-21 18:49
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
对,只调用了一个bios中断.有些中断在windows系统下禁使用,我在找有关如何取得windowsxp的0级特权.
各位朋友如果谁有的请发我一份:ioriliao.
2007-12-21 19:39
快速回复:很久没来了.发个简单的进度条模拟程序.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025087 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved