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