banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Viết một chương trình ngắt mềm với chip 8086(mở đầu)  XML
  [Programming]   Viết một chương trình ngắt mềm với chip 8086(mở đầu) 15/05/2008 06:44:19 (+0700) | #1 | 130579
[Avatar]
change_my_way2010
Member

[Minus]    0    [Plus]
Joined: 12/11/2007 09:28:55
Messages: 48
Offline
[Profile] [PM]
Mình đang học môn lập trình hệ thống về chip 8086,phần điều khiển ngắt mềm, viết chương trình ngắt bằng C,mình muốn tìm bảng vectơ ngắt của loại chip này,tiện thể có một bài lập trình mong các bạn giúp đỡ: Viết chương trình nhập 1 số int(số hex),in số thập phân(dùng ngắt) và viết một hàm xoá màn hình.
Đây là code của thầy mình viết nhưng mình không hiểu được,các bạn tham khảo và giải thích cho mình với( nhất là trong hàm xoamh mình không hiểu gì hết).
Code:
#include<stdio.h>
     #include<conio.h>
     #include<dos.h>
   //----------------------------------
       int nhap(void);
       void in10(int x);
       void xoamh(void); 
   //-------------------------------------
        main()
            {
                int x;
                union REGS vao,ra;
                xoamh();
                x=nhap();
                in10(x)
                getch();
            }
         //Khai báo các hàm
          void xoamh(void)
             {
                   vao.h.ah=6;       //mình không biết vao,ra có nghĩa gì và mấy số liệu 6,0,0,24,79,7 có ở đâu
                   vao.h.al=0;        //vao.x.cx hay tương tự như vậy thì có ý nghĩa gì?    
                   vao.x.cx =0;
                   vao.h.dh=24;
                   vao.h.dl=79;
                   vao.h.bx=7;
             }
         int nhap(void)
              {
                  int x=0;
                  unsigned char a;
                      do
                         {
                             vao.h.al=1;
                             intdos(&vao,&ra);
                                if(ra.h.al==13) goto L1;
                                     a=ra.h.al;
                                if(a<=0x39) goto L2;
                                 a-=39;
                        L2: a-=0x30;
                              x<<4;
                              x|=a;
                     L1:} while(ra.h.al)!=13);
                  return x;
              }
            void in10(int x)
                {
                    char a[5],i=0,b;
                    while(x!=0)
                      {
                       a[i]=x%10;
                       x/=10;           
                       i++;
                      }
                 for(b=i-1;b>=0;b--)
                        {
                            vao.h.dl=a[b]+0x30;
                            vao.h.ah=2;
                             intdos(&vao,&ra);
                         }
}
Code này có thể sẽ không chạy được(vì thầy mình thường cố ý đưa chương trình sai để học trò tự tìm hiểu và sửa để chạy đúng)
Mong các bạn hiểu biết về lập trình ngắt trong C góp ý và chia sẻ kinh nghiệm



[Up] [Print Copy]
  [Question]   Re: Tìm bảng vecrơ ngắt đối với chip 8086 15/05/2008 22:33:00 (+0700) | #2 | 130674
[Avatar]
mystery_hacker
Member

[Minus]    0    [Plus]
Joined: 30/06/2006 16:16:03
Messages: 365
Location: Khánh Hòa
Offline
[Profile] [PM] [Yahoo!]
Bạn đặt lại cái tiêu đề đi bạn! Còn tài liệu tra cứu ngắt thì bạn search trong box Địa chỉ và tài liệu hữu ích.
[Up] [Print Copy]
  [Question]   Re: Viết một chương trình ngắt mềm với chip 8086(mở đầu) 17/05/2008 12:51:53 (+0700) | #3 | 130932
[Avatar]
change_my_way2010
Member

[Minus]    0    [Plus]
Joined: 12/11/2007 09:28:55
Messages: 48
Offline
[Profile] [PM]
Somebody help me! smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|