User Tag List

+ Trả lời chủ đề
Trang 1/2 12 CuốiCuối
Hiện kết quả từ 1 tới 10 của 12

Chủ đề: Mã nguồn các chương trình ngôn ngữ C,C++

  1. #1
    lethanhvan
    Guest

    Mặc định

    [color=blue]Hi Vọng chuyên mục này sẽ có nhièu bạn tham gia.
    Và sẽ có nhiều chương trình hay hoặc kinh nghiệm lập trình trên ngôn
    ngữ C,C++ được mọi người gửi lên để cùng nhau trao đổi. [/SIZE]--------------------------------------
    Một cây làm chẳng nên non
    Ba cây chụm lại nên hòn núi cao.


    <BKF đoàn kết -tiến lên>

    LÊ THANH VÂN

  2. #2
    nàng xuân
    Guest

    Mặc định

    Tui cũng đang gặp rắc rối với bọn này đây . Làm bài báo cáo thực tập mà chạy được nhưng lỗi ghê quá .
    Có bác nào cao thủ giúp em với nha . Làm ơn đi mà , còn có mấy ngày nữa là phải nộp bài rùi .

  3. #3
    XươngKhúc
    Guest

    Mặc định

    hỏi cái : có ai dùng được hàm lstrcpy ko ? sao chương trình của tui miễn dịch với cái lệnh này nhể ???

  4. #4
    lecanhminh
    Guest

    Mặc định

    Bang Fat12 và cấu tạo đĩa mềm ai đã biết chưa.
    Chi tiết xin đọc cuốn Kiến Trúc Máy Tính của Nguyễn Đình Việt.
    Sau đây tôi xin giới thiệu chương trình = ngôn ngữ C đưa ra nội dung bảng Fat đĩa mềm của bạn(nhớ phải nhét vào ổ A)
    ---------------
    #include <stdio.h>
    #include <dos.h>
    #include <ctype.h>

    typedef unsigned char BYTE;
    typedef unsigned int WORD;

    typedef struct tagdiskinfo {
    char signature;
    WORD skip;
    char vendor[8];
    WORD bytepersector;
    BYTE sectorpercluster;
    WORD reservedsectors;
    BYTE fatcopies;
    WORD rootentries;
    WORD totalsectors;
    BYTE media;
    WORD sectorperfat;
    WORD sectorpertrack;
    WORD heads;
    WORD hiddensectors;
    char loader [482];
    } DISKINFO;

    DISKINFO diskinfo;
    BYTE sector[512];
    BYTE fat[18*512];
    long totalbyte;

    int diskread(int start)
    {
    union REGS regs;
    WORD tmp;

    tmp = _SP;
    regs.h.al = 0;
    regs.x.cx = 1;
    regs.x.dx = start;
    (BYTE *)regs.x.bx = sector;
    int86(0x25, &regs, &regs);
    _SP = tmp;
    return regs.x.ax;
    }

    int readFAT(int start, int end)
    {
    union REGS regs;
    WORD tmp;

    tmp = _SP;
    regs.h.al = 0;
    regs.x.cx = end - start;
    regs.x.dx = start;
    (BYTE *)regs.x.bx = fat;
    int86(0x25, &regs, &regs);
    _SP = tmp;
    return regs.x.ax;
    }

    void inFAT(int byte)
    {
    byte &= 0xfff;
    switch(byte)
    {
    case 0x000 : printf("NONE "); break;
    case 0xff7 : printf("<BAD> "); break;
    case 0xff8 :
    case 0xff9 :
    case 0xffa :
    case 0xffb :
    case 0xffc :
    case 0xffd :
    case 0xffe :
    case 0xfff : printf("<EOF> "); break;
    default : printf("%4d ", byte); break;
    }
    }

    void writeFAT()
    {
    int hang;
    long offset = 0;
    int byte1, byte2, byte3, i;
    do {
    clrscr();
    hang = 0;
    do {
    printf("&#092;n");
    for (i=0; i<6; i++)
    {
    if (offset < totalbyte)
    {
    byte1 = fat[offset];
    byte2 = fat[offset+1];
    byte3 = fat[offset+2];
    offset += 3;
    byte1 += (byte2 << 8);
    byte1 &= 0xFFF;
    byte3 <<= 8;
    byte3 += byte2;
    byte3 >>= 4;
    inFAT(byte1);
    inFAT(byte3);
    }
    else
    break;
    }
    hang++;
    } while (hang < 23 && offset < totalbyte);
    printf("&#092;nNhan phim bat ky de tiep tuc");
    getch();
    } while (offset < totalbyte);
    }

    void main()
    {
    int start, end, i;

    diskread(0); /* Doc boot sector */
    memcpy(&diskinfo, &sector, sizeof(DISKINFO));
    start = 1; /* Sector sau boot sector */
    end = diskinfo.reservedsectors + diskinfo.sectorperfat;
    totalbyte = (long)512 * (long)diskinfo.sectorperfat;
    readFAT(start, end);
    writeFAT();
    }


    ------------------------------------
    :wub: Lê thành Nam(st)

  5. #5
    lecanhminh
    Guest

    Mặc định

    CMOS RAM ư quá đơn giản&#33;Hãy cho chạy chương trình sau:
    -----------------------------------------------------------------

    #include <stdio.h>
    #include <dos.h>

    typedef struct
    { char seconds; /* AT Real Time Clock (RTC): Seconds */
    char secalrm; /* AT RTC: Seconds Alarm */
    char minutes; /* AT RTC: Minutes */
    char minalrm; /* AT RTC: Minutes Alarm */
    char hours; /* AT RTC: Hours */
    char hrsalrm; /* AT RTC: Hours Alarm */
    char dayofweek; /* AT RTC: day of week */
    char dayofmon; /* AT RTC: day of month */
    char month; /* AT RTC: month */
    char year; /* AT RTC: year */
    char aregister; /* STATUS REGISTER A */
    char bregister; /* STATUS REGISTER B */
    char cregister; /* STATUS REGISTER C */
    char dregister; /* STATUS REGISTER D */
    char diagnostic; /* Diagnostics status byte */
    char shutdown; /* Shutdown status byte */
    char diskettes; /* A & B diskette types */
    char reserved1; /* undefined */
    char harddrive; /* C & D hard drive types */
    char reserved2; /* undefined */
    char equipment; /* equipment byte */
    char lowbyte; /* low byte of base memory */
    char highbyte; /* high byte of base memory */
    /* 100h = 256k, 200h = 512k, 280h = 640k */
    char extlow; /* low byte of extended memory */
    char exthigh; /* high byte of extended memory */
    /* 200h=512k;400h=1024k;etc to 3c00h=15360k */
    char drivec; /* more data on drive c */
    char drived; /* more data on drive d */
    char reserved[19]; /* reserved */
    unsigned checksum;
    char extlow1; /* same as extlow */
    char exthigh1; /* same as exthigh */
    char century; /* binary coded decimal value for century */
    /* 19h = 1900 for example */
    char infoflag; /* bit 7 set = top 128k installed */
    char info[12];
    } CMOS, *CMOSPTR;

    /* -------------------------------------------------------------------------
    AT REAL TIME CLOCK STATUS REGISTER A
    ================================================== =========================
    7 6 5 4 3 2 1 0 FUNCTION ALLOWABLE VALUES
    ---------------------------------------------------------------------------
    X UPDATE IN PROGRESS 1=DATE/TIME BEING UPDATED 0=NOT
    X X X 22 STAGE DIVIDER DEFAULT=010, 32.768 KHZ TIME BASE
    X X X X RATE SELECTION DEFAULT=0110, 1.024 KHZ FREQUENCY
    ================================================== =========================
    AT REAL TIME CLOCK STATUS REGISTERS B
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    --------------------------------------------------------------------------
    X SET, 1 PER SECOND 0=UPDATE NORMALLY, 1=ABORT UPDATE
    X PERIODIC INT ENABLE 0=DISABLE INT (DEFAULT), 1=ENABLED
    X ALARM INT ENABLE 0=DISABLED (DEFAULT), 1=ENABLED
    X UPDATE END INT ENA. 0=DISABLED (DEFAULT), 1=ENABLED
    X SQUARE WAVE ENABLE 0=DIS (DEF), 1=ENA, PER REG A 0-3
    X DATE MODE 0=BCD (DEFAULT), 1=BINARY
    X 24/12 MODE 0=12 HOUR, 1=24 HOUR FORMAT (DEFAULT)
    X DAYLIGHT SAVING ENA 0=DISABLED (DEFAULT), 1=ENABLED
    ================================================== =========================
    AT REAL TIME CLOCK STATUS REGISTER C
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    -------------------------------------------------------------------------
    X IRQF FLAG READ ONLY
    X PF FLAG READ ONLY
    X AF FLAG READ ONLY
    X UF FLAG READ ONLY
    X X X X RESERVED SHOULD ALWAYS BE ZERO
    ================================================== =========================
    AT CMOS STATUS REGISTER D
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    --------------------------------------------------------------------------
    X VALID RAM BIT 0=BATT DEAD,RAM INVALID, 1=BATT GOOD
    X X X X X X X RESERVED SHOULD ALWAYS BE ZERO
    ================================================== =========================
    AT CMOS DIAGNOSTICS BYTE
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    ------------------------------------------------------------------------
    X POWER STAT OF RTC 1=CHIP HAS LOST POWER, 0=NOT
    X CHECKSUM STATUS 0=CHECKSUM OK, 1=NOT OK
    X CONFIGURATION INFO 0=VALID INFO, 1=NOT VALID
    X MEMORY SIZE COMPARE 0=SAME SIZE, 1=NOT SAME SIZE
    X FIXED DISK STATUS 0=OK, 1=DRIVE OR ADAPTER FAILED
    X TIME STATUS 0=TIME IS OK, 1=TIME NOT OK
    X X RESERVED
    ================================================== =========================
    AT CMOS DRIVE TYPE BYTE
    ================================================== =========================
    7 6 5 4 3 2 1 0 FUNCTION ALLOWABLE VALUES
    -------------------------------------------------------------------------
    X X X X TYPE OF FIRST DRIVE 0000=NO DRIVE, 0001=360K 5.25"
    0010=1.2M 5.25" 0011=720K 3.5"
    0100=1.44M 3.5"

    X X X X TYPE OF SECOND DRIVE
    ================================================== =========================
    AT CMOS FIXED DRIVE TYPES
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    ----------------------------------------------------------------------------
    X X X X FIXED DISK C TYPE 0000=NO DRIVE 1H TO 0EH SEE CHART
    X X X X FIXED DISK D TYPE 0000=NO DRIVE 1H TO 0EH SEE CHART
    IF BYTE= 0FH THEN SEE EXTENDED BYTE FOR DRIVE TYPE
    ================================================== =========================
    AT CMOS EQUIPMENT BYTE
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    -----------------------------------------------------------------------------
    X X NUMBER OF DISK DRIVES 00=1,01=2,10=3,11=4
    X X PRIMARY DISPLAY TYPE 00=DISPLAY HAS BIOS or EGA,
    01=40 COL CGA,
    10=80 COL CGA,
    11=MDA,
    101=EGA
    X X NOT USED
    X MATH COPROCESSOR 0=NOT INSTALLED, 1=INSTALLED
    X DISK DRIVES AVAILABLE 0=NO DRIVES, 1=DISK DRIVES AVAILABLE
    ================================================== =========================
    AT CMOS DRIVE C AND D EXTENDED DRIVE TYPE BYTES
    ================================================== =========================
    7 6 5 4 3 2 1 0 NAME ALLOWABLE VALUES
    -----------------------------------------------------------------------------
    X X X X X X X X DRIVE C TYPE BYTE SEE NEXT CHART FOR TYPES
    X X X X X X X X DRIVE D TYPE BYTE SEE NEXT CHART FOR TYPES

    IF FIXED DRIVE 4 BITS FOR C IS 0-0EH IGNOR EXTENDED C
    IF FIXED DRIVE 4 BITS FOR D IS 0-0EH IGNOR EXTENDED D

    AT HARD DISK TYPES

    +--------------------------------------------------------+
    | | | | | | | |
    | DISK | CYLINDER | TOTAL | PRE- | LAND | SECTORS | SIZE |
    | TYPE | COUNT | HEADS | COMP | ZONE | PER/TRK | MB |
    |------+----------+-------+------+------+---------+------|
    | 1 | 306 | 4 | 128 | 305 | 17 | 10.1 |
    |------+----------+-------+------+------+---------+------|
    | 2 | 615 | 4 | 300 | 615 | 17 | 20.4 |
    |------+----------+-------+------+------+---------+------|
    | 3 | 615 | 6 | 300 | 615 | 17 | 30.6 |
    |------+----------+-------+------+------+---------+------|
    | 4 | 940 | 8 | 512 | 940 | 17 | 62.4 |
    |------+----------+-------+------+------+---------+------|
    | 5 | 940 | 6 | 512 | 940 | 17 | 46.8 |
    |------+----------+-------+------+------+---------+------|
    | 6 | 615 | 4 | NONE | 615 | 17 | 20.4 |
    |------+----------+-------+------+------+---------+------|
    | 7 | 462 | 8 | 256 | 511 | 17 | 30.6 |
    |------+----------+-------+------+------+---------+------|
    | 8 | 733 | 5 | NONE | 733 | 17 | 30.4 |
    |------+----------+-------+------+------+---------+------|
    | 9 | 900 | 15 | NONE | 901 | 17 |112.0 |
    |------+----------+-------+------+------+---------+------|
    | 10 | 820 | 3 | NONE | 820 | 17 | 20.4 |
    |------+----------+-------+------+------+---------+------|
    | 11 | 855 | 5 | NONE | 855 | 17 | 35.4 |
    |------+----------+-------+------+------+---------+------|
    | 12 | 855 | 7 | NONE | 855 | 17 | 49.6 |
    |------+----------+-------+------+------+---------+------|
    | 13 | 306 | 8 | 128 | 319 | 17 | 20.3 |
    |------+----------+-------+------+------+---------+------|
    | 14 | 733 | 7 | NONE | 733 | 17 | 42.5 |
    |------+----------+-------+------+------+---------+------|
    | 16 | 612 | 4 | 0 | 663 | 17 | 20.5 |
    |------+----------+-------+------+------+---------+------|
    | 17 | 977 | 5 | 300 | 977 | 17 | 40.5 |
    |------+----------+-------+------+------+---------+------|
    | 18 | 977 | 7 | NONE | 977 | 17 | 56.7 |
    |------+----------+-------+------+------+---------+------|
    | 19 | 1024 | 7 | 512 | 1023 | 17 | 59.5 |
    |------+----------+-------+------+------+---------+------|
    | 20 | 733 | 5 | 300 | 732 | 17 | 30.4 |
    |------+----------+-------+------+------+---------+------|
    | 21 | 733 | 7 | 300 | 732 | 17 | 42.5 |
    |------+----------+-------+------+------+---------+------|
    | 22 | 733 | 5 | 300 | 733 | 17 | 30.4 |
    |------+----------+-------+------+------+---------+------|
    | 23 | 306 | 4 | 0 | 336 | 17 | 10.1 |
    |------+----------+-------+------+------+---------+------|
    | 25 | 615 | 4 | 0 | 615 | 17 | 20.4 |
    |------+----------+-------+------+------+---------+------|
    | 26 | 1024 | 4 | NONE | 1023 | 17 | 34.0 |
    |------+----------+-------+------+------+---------+------|
    | 27 | 1024 | 5 | NONE | 1023 | 17 | 42.5 |
    |------+----------+-------+------+------+---------+------|
    | 28 | 1024 | 8 | NONE | 1023 | 17 | 68.0 |
    |------+----------+-------+------+------+---------+------|
    | 29 | 512 | 8 | 256 | 512 | 17 | 34.0 |
    |------+----------+-------+------+------+---------+------|
    | 30 | 615 | 2 | 615 | 615 | 17 | 10.2 |
    |------+----------+-------+------+------+---------+------|
    | 31 | 989 | 5 | 0 | 989 | 17 | 41.0 |
    |------+----------+-------+------+------+---------+------|
    | 32 | 1020 | 15 | NONE | 1024 | 17 |127.0 |
    |------+----------+-------+------+------+---------+------|
    | 35 | 1024 | 9 | 1024 | 1024 | 17 | 76.5 |
    |------+----------+-------+------+------+---------+------|
    | 36 | 1024 | 5 | 512 | 1024 | 17 | 42.5 |
    |------+----------+-------+------+------+---------+------|
    | 37 | 830 | 10 | NONE | 830 | 17 | 68.8 |
    |------+----------+-------+------+------+---------+------|
    | 38 | 823 | 10 | 256 | 824 | 17 | 68.3 |
    |------+----------+-------+------+------+---------+------|
    | 39 | 615 | 4 | 128 | 664 | 17 | 20.4 |
    |------+----------+-------+------+------+---------+------|
    | 40 | 615 | 8 | 128 | 664 | 17 | 40.8 |
    |------+----------+-------+------+------+---------+------|
    | 41 | 917 | 15 | NONE | 918 | 17 |114.1 |
    |------+----------+-------+------+------+---------+------|
    | 42 | 1023 | 15 | NONE | 1024 | 17 |127.3 |
    |------+----------+-------+------+------+---------+------|
    | 43 | 823 | 10 | 512 | 823 | 17 | 68.3 |
    |------+----------+-------+------+------+---------+------|
    | 44 | 820 | 6 | NONE | 820 | 17 | 40.8 |
    |------+----------+-------+------+------+---------+------|
    | 45 | 1024 | 8 | NONE | 1024 | 17 | 68.0 |
    |------+----------+-------+------+------+---------+------|
    | 46 | 925 | 9 | NONE | 925 | 17 | 69.1 |
    |------+----------+-------+------+------+---------+------|
    | 47 | 699 | 7 | 256 | 700 | 17 | 40.6 |
    +--------------------------------------------------------+
    --------------------------------------------------------------------- */
    #define CMOS_ADDR 0x70 /* address port of CMOS */
    #define CMOS_DATA 0x71 /* data port for CMOS */

    void GetCMOS(char *cmosdata) /* read CMOS data (64 bytes) */
    {
    unsigned char j, byte;
    for (j=0; j<64; j++)
    { disable(); /* disable interrupts */
    outportb(CMOS_ADDR,j); /* specify byte to get */
    byte= inportb(CMOS_DATA); /* get data */
    enable(); /* enable interrupts */
    *cmosdata++ = byte; /* save CMOS data */
    }
    }

    void ReadCMOS(void)
    {
    static char *floppy[] = { "None",
    "360K 5.25-inch",
    "1.2M 5.25-inch",
    "720K 3.5-inch",
    "1.44M 3.5-inch"
    };
    static char *display[] = { "EGA", /* 00 */
    "40 column CGA", /* 01 */
    "80 column CGA", /* 10 */
    "MDA", /* 11 */
    };
    static char *math[] = { "Not Installed",
    "Installed"
    };
    static char *diag[] = { "Time","Hard Dr","Memory","CnfInfo","Chksum","PwrOK"};
    static char *status[] = { "OK","Not OK" };
    static char *hardtbl[] = {
    "ÚÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄ ÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄ¿",
    "³Drive ³ Cylinder ³ Heads/³ Pre- ³ Land ³ Sectors ³ Size ³",
    "³ Type ³ (Tracks) ³ Sides ³ Comp ³ Zone ³ Per Trk ³ (MB) ³",
    "³ÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄ ÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ ÅÄÄÄÄÄij"};

    static char *harddisk[] =
    { "³ None ³ --- ³ -- ³ --- ³ --- ³ -- ³ ---- ³",
    "³ 1 ³ 306 ³ 4 ³ 128 ³ 305 ³ 17 ³ 10.1 ³",
    "³ 2 ³ 615 ³ 4 ³ 300 ³ 615 ³ 17 ³ 20.4 ³",
    "³ 3 ³ 615 ³ 6 ³ 300 ³ 615 ³ 17 ³ 30.6 ³",
    "³ 4 ³ 940 ³ 8 ³ 512 ³ 940 ³ 17 ³ 62.4 ³",
    "³ 5 ³ 940 ³ 6 ³ 512 ³ 940 ³ 17 ³ 46.8 ³",
    "³ 6 ³ 615 ³ 4 ³ NONE ³ 615 ³ 17 ³ 20.4 ³",
    "³ 7 ³ 462 ³ 8 ³ 256 ³ 511 ³ 17 ³ 30.6 ³",
    "³ 8 ³ 733 ³ 5 ³ NONE ³ 733 ³ 17 ³ 30.4 ³",
    "³ 9 ³ 900 ³ 15 ³ NONE ³ 901 ³ 17 ³112.0 ³",
    "³ 10 ³ 820 ³ 3 ³ NONE ³ 820 ³ 17 ³ 20.4 ³",
    "³ 11 ³ 855 ³ 5 ³ NONE ³ 855 ³ 17 ³ 35.4 ³",
    "³ 12 ³ 855 ³ 7 ³ NONE ³ 855 ³ 17 ³ 49.6 ³",
    "³ 13 ³ 306 ³ 8 ³ 128 ³ 319 ³ 17 ³ 20.3 ³",
    "³ 14 ³ 733 ³ 7 ³ NONE ³ 733 ³ 17 ³ 42.5 ³",
    "³ 16 ³ 612 ³ 4 ³ 0 ³ 663 ³ 17 ³ 20.5 ³",
    "³ 17 ³ 977 ³ 5 ³ 300 ³ 977 ³ 17 ³ 40.5 ³",
    "³ 18 ³ 977 ³ 7 ³ NONE ³ 977 ³ 17 ³ 56.7 ³",
    "³ 19 ³ 1024 ³ 7 ³ 512 ³ 1023 ³ 17 ³ 59.5 ³",
    "³ 20 ³ 733 ³ 5 ³ 300 ³ 732 ³ 17 ³ 30.4 ³",
    "³ 21 ³ 733 ³ 7 ³ 300 ³ 732 ³ 17 ³ 42.5 ³",
    "³ 22 ³ 733 ³ 5 ³ 300 ³ 733 ³ 17 ³ 30.4 ³",
    "³ 23 ³ 306 ³ 4 ³ 0 ³ 336 ³ 17 ³ 10.1 ³",
    "³ 25 ³ 615 ³ 4 ³ 0 ³ 615 ³ 17 ³ 20.4 ³",
    "³ 26 ³ 1024 ³ 4 ³ NONE ³ 1023 ³ 17 ³ 34.0 ³",
    "³ 27 ³ 1024 ³ 5 ³ NONE ³ 1023 ³ 17 ³ 42.5 ³",
    "³ 28 ³ 1024 ³ 8 ³ NONE ³ 1023 ³ 17 ³ 68.0 ³",
    "³ 29 ³ 512 ³ 8 ³ 256 ³ 512 ³ 17 ³ 34.0 ³",
    "³ 30 ³ 615 ³ 2 ³ 615 ³ 615 ³ 17 ³ 10.2 ³",
    "³ 31 ³ 989 ³ 5 ³ 0 ³ 989 ³ 17 ³ 41.0 ³",
    "³ 32 ³ 1020 ³ 15 ³ NONE ³ 1024 ³ 17 ³127.0 ³",
    "³ 35 ³ 1024 ³ 9 ³ 1024 ³ 1024 ³ 17 ³ 76.5 ³",
    "³ 36 ³ 1024 ³ 5 ³ 512 ³ 1024 ³ 17 ³ 42.5 ³",
    "³ 37 ³ 830 ³ 10 ³ NONE ³ 830 ³ 17 ³ 68.8 ³",
    "³ 38 ³ 823 ³ 10 ³ 256 ³ 824 ³ 17 ³ 68.3 ³",
    "³ 39 ³ 615 ³ 4 ³ 128 ³ 664 ³ 17 ³ 20.4 ³",
    "³ 40 ³ 615 ³ 8 ³ 128 ³ 664 ³ 17 ³ 40.8 ³",
    "³ 41 ³ 917 ³ 15 ³ NONE ³ 918 ³ 17 ³114.1 ³",
    "³ 42 ³ 1023 ³ 15 ³ NONE ³ 1024 ³ 17 ³127.3 ³",
    "³ 43 ³ 823 ³ 10 ³ 512 ³ 823 ³ 17 ³ 68.3 ³",
    "³ 44 ³ 820 ³ 6 ³ NONE ³ 820 ³ 17 ³ 40.8 ³",
    "³ 45 ³ 1024 ³ 8 ³ NONE ³ 1024 ³ 17 ³ 68.0 ³",
    "³ 46 ³ 925 ³ 9 ³ NONE ³ 925 ³ 17 ³ 69.1 ³",
    "³ 47 ³ 699 ³ 7 ³ 256 ³ 700 ³ 17 ³ 40.6 ³"};
    CMOS cmosdata;
    char *iptr = (char *)&cmosdata;
    int j, k, drive;

    GetCMOS(iptr); /* read 64 bytes of CMOS data */
    printf("CMOS Diagnostics Status:&#092;n");
    j = (cmosdata.diagnostic >> 2);
    for (k=0; k<6; k++)
    { printf("%-7s: %s&#092;n",diag[k],status[(j & 1)]);
    j >>= 1;
    }
    printf("&#092;nCMOS Equipment Information:&#092;n");
    printf("Display: %s&#092;n",display[(cmosdata.equipment >> 4) & 3]);
    printf(" Coproc: %s&#092;n",math[(cmosdata.equipment & 2)]);
    drive = &#39;A&#39;;
    j = (cmosdata.equipment & 1) * (1 + (cmosdata.equipment >> 6));
    printf(" Floppy: %d&#092;n",j);
    if (j)
    { printf("Drive %c: %s&#092;n",drive++,floppy[(cmosdata.diskettes >> 4)]);
    printf("Drive %c: %s&#092;n",drive++,floppy[(cmosdata.diskettes & 0x0f)]);
    }
    printf("Hard Dr: ");
    if (cmosdata.harddrive) /* at least 1 hard drive */
    { printf("&#092;n");
    for (j=0; j<4; j++)
    printf(" %s&#092;n",hardtbl[j]);
    j = (cmosdata.harddrive >> 4);
    k = (cmosdata.harddrive & 0x0f);
    if (j == 15) j = (cmosdata.drivec);
    if (k == 15) k = (cmosdata.drived);
    printf("Drive %c: %s%d&#092;n",drive++,harddisk[j],j);
    printf("Drive %c: %s%d&#092;n",drive,harddisk[k],k);
    printf(" ÀÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ ÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÙ&#092;n");
    }
    else printf("None&#092;n");

    iptr = (char *)&cmosdata;
    printf("&#092;nHex Dump of CMOS RAM:&#092;n");
    for (j=0,k=0;j<64;j++)
    { printf("%02x ",*iptr++);
    k++;
    if (k == 16)
    { k = 0;
    printf("&#092;n");
    }
    }
    }

    void main()
    {
    ReadCMOS();
    getch();
    }

    ----------------------------------------------------
    Nội dung Cả CMoSRam hiện lên rồi chứ.
    :wub: Lê thành Nam(st) :wub:

  6. #6
    lecanhminh
    Guest

    Mặc định

    Bạn có muốn có một đồng hồ chạy trên màn hình MSDOS không
    (loại quart xịn đây)
    -----------------------------------------------------------------------------

    /* Dong ho mat kim */
    #include <conio.h>
    #include <graphics.h>
    #include <math.h>
    #include <dos.h>

    /* he so doi tu do sang radian */
    #define RADS 0.017453293
    #define CIRCLE 200

    double xc, yc;
    int gio, phut, giay;

    void ve_kim_gio(int color)
    {
    double angle;

    setcolor(color);
    angle = ((double)360 * gio / 12 + (double)phut / 2 - 90.0) * RADS;
    moveto(xc - 20.0 * cos(angle), yc - 20.0 * sin(angle));
    lineto(xc - 10.0 * cos(angle + M_PI / 2), yc - 10.0 * sin(angle + M_PI/2));
    lineto(xc + 110.0 * cos(angle), yc + 110.0 * sin(angle));
    lineto(xc + 10.0 * cos(angle + M_PI / 2), yc + 10.0 * sin(angle + M_PI/2));
    lineto(xc - 20.0 * cos(angle), yc - 20.0 * sin(angle));
    }

    void ve_kim_phut(int color)
    {
    double angle;

    setcolor(color);
    angle = ((double)360 * phut / 60 + (double)giay / 10 - 90.0) * RADS;
    moveto(xc - 30.0 * cos(angle), yc - 30.0 * sin(angle));
    lineto(xc - 8.0 * cos(angle + M_PI / 2), yc - 8.0 * sin(angle + M_PI/2));
    lineto(xc + 140.0 * cos(angle), yc + 140.0 * sin(angle));
    lineto(xc + 8.0 * cos(angle + M_PI / 2), yc + 8.0 * sin(angle + M_PI/2));
    lineto(xc - 30.0 * cos(angle), yc - 30.0 * sin(angle));
    }

    void ve_kim_giay(int color)
    {
    double angle;

    setcolor(color);
    angle = ((double)360 * (giay - 3) / 60) * RADS;
    moveto(xc - 40.0 * cos(angle), yc - 40.0 * sin(angle));
    lineto(xc + 150.0 * cos(angle), yc + 150.0 * sin(angle));
    setfillstyle(SOLID_FILL, color);
    fillellipse(xc, yc, 3, 3);
    }

    void ve_mat_dong_ho()
    {
    int i, j;

    setcolor(YELLOW);
    circle(xc, yc, CIRCLE);
    setlinestyle(SOLID_LINE, 0, 3);
    for (i=0; i<12; i++)
    if (i%3 == 0)
    {
    line(xc + (CIRCLE - 2) * sin(RADS * (30 * i - 1)), yc + (CIRCLE - 2) * cos(RADS * (30 * i - 1)),
    xc + (CIRCLE - 24) * sin(RADS * (30 * i - 1)), yc + (CIRCLE - 24) * cos(RADS * (30 * i - 1)));
    line(xc + (CIRCLE - 2) * sin(RADS * (30 * i + 1)), yc + (CIRCLE - 2) * cos(RADS * (30 * i + 1)),
    xc + (CIRCLE - 24) * sin(RADS * (30 * i + 1)), yc + (CIRCLE - 24) * cos(RADS * (30 * i + 1)));
    }
    else
    line(xc + (CIRCLE - 2) * sin(RADS * (30 * i)), yc + (CIRCLE - 2) * cos(RADS * (30 * i)),
    xc + (CIRCLE - 24) * sin(RADS * (30 * i)), yc + (CIRCLE - 24) * cos(RADS * (30 * i)));
    }

    void run()
    {
    struct time timep;
    ve_mat_dong_ho();
    gettime(&timep);
    gio = timep.ti_hour;
    phut = timep.ti_min;
    giay = timep.ti_sec;
    setlinestyle(SOLID_LINE, 0, 0);
    do {
    ve_kim_gio(YELLOW);
    ve_kim_phut(GREEN);
    ve_kim_giay(RED);
    delay(990);
    sound(1000);
    delay(10);
    nosound();
    ve_kim_giay(BLACK);
    ve_kim_phut(BLACK);
    ve_kim_gio(BLACK);
    giay++;
    if (giay >= 60)
    {
    giay %= 60;
    phut++;
    if (phut >= 60)
    {
    phut %= 60;
    gio++;
    if (gio >= 12)
    gio %= 12;
    }
    }
    } while (&#33;kbhit());
    }

    void main()
    {
    int gr_drive = DETECT, gr_mode;

    initgraph(&gr_drive, &gr_mode, "d:&#092;&#092;tc30&#092;&#092;bgi");
    xc = getmaxx() / 2;
    yc = getmaxy() / 2;
    run();
    getch();
    closegraph();
    }
    -------------------------------------------
    Hi vọng Jimiko này sẽ được các bạn nâng cấp tùy thích
    :wub: Lê thành Nam :wub:

  7. #7
    lecanhminh
    Guest

    Mặc định

    Bạn có thích một chương trình thường trú
    ->Một đồng hồ điện tử hiện lên khi bạn đang chạy các lệnh của Dos:
    +nguyên tắc:Hãy khai thác ngắt 1Ch
    -------------------------------------------------------

    /* Chuong trinh thuong tru hien dong ho o goc phai phia tren man hinh */
    #include <dos.h>
    #include <conio.h>

    #define INTR 0x1C
    #define ATTR 0x7900

    #ifdef __cplusplus
    #define __CPPARGS ...
    #else
    #define __CPPARGS
    #endif

    extern unsigned _heaplen = 1024;
    extern unsigned _stklen = 512;
    void interrupt ( *oldhandler)(__CPPARGS);
    typedef unsigned int (far *s_arrayptr);
    struct time t;

    void interrupt handler(__CPPARGS)
    {
    s_arrayptr screen[80];
    static int count,ticker;
    int tam;
    screen[0] = (s_arrayptr) MK_FP(0xB800,0);
    count++;

    if (ticker==0)
    {
    t.ti_sec++;
    ticker=( ((count%5)==0)?19:18);
    if (t.ti_sec==60)
    {
    t.ti_sec=0;
    t.ti_min++;
    }
    if (t.ti_min==60)
    {
    t.ti_min=0;
    t.ti_hour++;
    }
    if (t.ti_hour==24)
    t.ti_hour=0;

    screen[0][72] = t.ti_hour/10 + &#39;0&#39; + ATTR;
    screen[0][73] = t.ti_hour%10 + &#39;0&#39; + ATTR;
    screen[0][74] = &#39;:&#39; + ATTR;
    screen[0][75] = t.ti_min/10 + &#39;0&#39; + ATTR;
    screen[0][76] = t.ti_min%10 + &#39;0&#39; + ATTR;
    screen[0][77] = &#39;:&#39; + ATTR;
    screen[0][78] = t.ti_sec/10 + &#39;0&#39; + ATTR;
    screen[0][79] = t.ti_sec%10 + &#39;0&#39; + ATTR;
    }
    ticker--;
    oldhandler();
    }

    int main(void)
    {
    gettime(&t);
    oldhandler = getvect(INTR);
    setvect(INTR, handler);
    getch();
    setvect(INTR,oldhandler);
    //keep(0, (_SS + (_SP/16) - _psp));
    getch();
    return 0;
    }

    -----------------------------------------------------------------&#62;

    :6: lê thành nam (st):6:

  8. #8
    lecanhminh
    Guest

    Mặc định

    Bạn có muốn sử dụng chuột khi chạy 1 chương trình C không.
    Vô tư đi.Dưới đây là một số thủ tục liên quan đến các hành động của
    chú chuột nhà ta.<được ghép trong một chương trình nhỏ làm ví dụ>
    ---------------------------------------------------------------&#62;
    #include<dos.h>
    #include<graphics.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    void MhDohoa(){
    int driver,mode,error;
    driver = VGA;
    mode = VGAHI;
    /*KHOI TAO DO HOA */
    initgraph(&driver,&mode,"d:&#092;&#092;tc30&#092;& #092;bgi");
    error = graphresult();
    if (error)/* co loi */{
    printf("Ma loi = %d",error);
    /* dua ra thong bao loi*/
    puts(grapherrormsg(error));
    }
    }
    void InitMouse()
    {
    union REGS regs;
    regs.x.ax = 0;
    int86(0X33,&regs,&regs);
    if(regs.x.bx==0)
    {
    printf(" Can&#39;t initialize the Mouse&#33; ");
    exit(1);
    }
    }

    //============================================&#092; &#092;
    /* Hien chuot */
    void ShowMouse()
    {
    union REGS regs;
    regs.x.ax=1;
    int86(0X33,&regs,&regs);
    }
    //==========================================&#092;&# 092;
    /* An chuot */
    void HideMouse()
    {
    union REGS regs;
    regs.x.ax=2;
    int86(0X33,&regs,&regs);
    }
    //=========================================&#092;&#0 92;
    /* Kiem tra bam chuot */

    int MousePress()
    {
    union REGS regs;
    regs.x.ax = 3;
    int86(0X33,&regs,&regs);
    if( regs.x.bx == 1)
    return 1;
    return 0;
    }
    //=========================================&#092;&#0 92;
    /* Vi tri chuot tai cua so (x1,y1,x2,y2) trong do hoa */
    int MouseInWinGr(int x1,int y1,int x2,int y2)
    {
    union REGS regs;
    regs.x.ax = 3;
    int86(0X33,&regs,&regs);
    if(regs.x.cx>=x1&&regs.x.cx<=x2&&regs.x.dx>=y1&&re gs.x.dx<=y2)
    return 1;
    return 0;
    }

    //=========================================&#092;&#0 92;
    /* Vi tri chuot tai cua so (x1,y1,x2,y2) */
    int MouseInWin(int x1,int y1,int x2,int y2)
    {
    union REGS regs;
    regs.x.ax = 3;
    int86(0X33,&regs,&regs);
    if(((regs.x.cx/8+1)>=x1)&&((regs.x.cx/8+1)<=x2)&&
    ((regs.x.dx/8+1)>=y1)&&((regs.x.dx/8+1)<=y2))
    return 1;
    return 0;
    }
    //==========================================&#092;&# 092;
    /* Kiem tra so lan bam chuot */

    int NumMousePress(int x1,int y1,int x2,int y2)
    {
    union REGS regs;
    regs.x.ax = 5;
    int86(0X33,&regs,&regs);
    if(((regs.x.cx/8+1)>=x1)&&((regs.x.cx/8+1)<=x2)&&
    ((regs.x.dx/8+1)>=y1)&&((regs.x.dx/8+1)<=y2))
    {
    if( regs.x.bx == 2)
    return 2;
    if( regs.x.bx == 1)
    return 1;
    }
    return 0;
    }
    void cuaso(int x1,int y1,int x2,int y2,int c,int color)
    {
    int bh = 3;
    int a,b;
    if (c == 1){a = 15;b=8;}
    else {a = 8;b= 15;}
    for (int i =1; i <= bh ;i++)
    {
    setcolor(a);
    line(x1-i,y1-i,x2+i,y1-i);//doc ben trai
    setcolor(a);
    line(x1-i,y1-i,x1-i,y2+i);//ngang tren
    setcolor(B);
    line(x2+i,y1-i,x2+i,y2+i);//ngang doui
    setcolor(B);
    line(x1-i,y2+i,x2+i,y2+i);//doc phai
    }
    setfillstyle(1,color);
    bar(x1,y1,x2,y2);
    //outtextxy(80,100,"Xin chao cac ban");
    }
    void main()
    {

    MhDohoa();
    cuaso(10,24,82,64,9,4);
    setcolor(15);
    InitMouse();
    ShowMouse();
    while(&#33;kbhit())
    {
    if( MouseInWinGr(10,24,82,64) && MousePress())
    {
    cleardevice();
    outtextxy(80,100,"Xin chao cac ban");
    HideMouse();
    outtextxy(80,200,"HAY AN MOT PHIM BAT KI DE KET THUC");
    }
    }
    getch();
    }
    ---------------------------------------------------&#62;
    Nếu bạn lập trình trên C++.Hãy tạo thành một lớp mouse sử dụng cho tiện
    Lê thành Nam :wub:

  9. #9
    White Rose
    Guest

    Mặc định

    Post nhiều thế này mà chẳng có tác dụng mấy
    Với lại bây giờ người ta VC++, VC# hết cả rồi. Không thì cũng làm mấy trình C++ trên Linux, đâu ai còn xài DOS nữa đâu?
    Nên hướng vào cách lập trình OOP, dạng Procedure Oriented Programming cũ lắm rồi :-)

  10. #10
    superman
    Guest

    Mặc định

    Bạn WhiteRose ko nên nói thế, mã nguồn này có ích lắm cho các bạn mới vào khoa Tin, thay mặt box xin cám ơn lethanhminh.

+ Trả lời chủ đề
Trang 1/2 12 CuốiCuối

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Chủ đề tương tự

  1. Tối ưu mã nguồn C/C++
    Gửi bởi Nistelrooy trong mục Lập trình C/C++
    Trả lời: 26
    Bài cuối: 13-10-2007, 09:21 PM
  2. Có chú nào cần nguồn máy tính để thực hành điện tử ko?
    Gửi bởi CrazyTrung trong mục Kỹ thuật điện tử
    Trả lời: 3
    Bài cuối: 26-06-2007, 12:41 AM
  3. Giúp đỡ về mã nguồn
    Gửi bởi giangtieungu_hh trong mục Thư viện mã nguồn
    Trả lời: 7
    Bài cuối: 05-06-2007, 03:10 PM
  4. Cơ bản cho nguời lập trình
    Gửi bởi Nightmare trong mục Lập Trình
    Trả lời: 23
    Bài cuối: 01-02-2006, 08:49 PM
  5. nói với nguời yêu cũ
    Gửi bởi cáo đeo nơ trong mục Thơ ca
    Trả lời: 4
    Bài cuối: 13-10-2004, 10:06 PM

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube