Turbo C nâng cao P5

Chia sẻ: Lac Tran | Ngày: | Loại File: PDF | Số trang:2

0
122
lượt xem
38
download

Turbo C nâng cao P5

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Truy cập trực tiếp bộ nhớ Các hàm truy cập theo địa chỉ phân đoạn - Đổi tứ địa chị phân đoạn sang địa chỉ thực

Chủ đề:
Lưu

Nội dung Text: Turbo C nâng cao P5

  1. Ch−¬ng 5 : truy cËp trùc tiÕp bé nhí §1.C¸c hµm truy cËp theo ®Þa chØ ph©n ®o¹n 1. Hµm pokeb() : Dïng ®Ó göi mét kÝ tù value vµo bé nhí t¹i ®Þa chØ ph©n ®o¹n off . Nguyªn mÉu cña hµm trong dos.h lµ : void pokeb(unsigned seg,unsigned off , char value) 2. Hµm peekb() : NhËn mét byte t¹i ®Þa chØ seg:off . Nguyªn mÉu cña hµm trong dos.h lµ : char peekb(unsigned seg,unsigned off) 3. Hµm poke() : Göi mét sè nguyªn value vµo bé nhí t¹i ®Þa chØ seg:off . Nguyªn mÉu cña hµm trong dos.h lµ : void poke(unsigned seg,unsigned off , int value) 4. Hµm peek() : NhËn mét word t¹i ®Þa chØ seg:off . Nguyªn mÉu cña hµm trong dos.h lµ : void peek(unsigned seg,unsigned off ) 5. Hµm movedata() : Sao n byte tõ ®Þa chØ seg_gui:off_gui ®Õn ®Þa chØ seg_nhan:off_nhan . Nguyªn mÉu cña hµm trong menu.h lµ : void movedata(unsigned seg_gui,unsigned off_gui , unsigned seg_nhan,unsigned off_nhan , int n) §2. §æi tõ ®Þa chØ ph©n ®o¹n sang ®Þa chØ thùc 1. §æi tõ ®Þa chØ thùc : §Ó ®æi tõ ®Þa chØ thùc sang ®Þa chØ ph©n ®o¹n ta dïng macro sau : unsigned FP_SEG(®Þa chØ thùc) unsigned FP_OFF(®Þa chØ thùc) 2. §æi tõ ®Þa chØ ph©n ®o¹n : §Ó ®æi tõ ®Þa chØ ph©n ®o¹n sang ®Þa chØ thùc ta dïng macro : void far *MK_FP(seg:off) VÝ dô : Sau khi thùc hiÖn c¸c c©u lÖnh: char buf[100] unsigned ds,dx; ds= FP_SEG(buf) dx= FP_OFF(buf) th× ds:dx chøa ®Þa chØ cña n¶mg buf . Sau khi thùc hiÖn c©u lÖnh : char *pchar; pchar = (char *) MK_FP(0xb800:0) th× pchar trá tíi ®Çu bé nhí mµn h×nh . Khi ®ã ta cã thÓ dïng c¸c lÖnh g¸n ®Ó truy cËp trùc tiÕp tíi bé nhí mµn h×nh . Ch−¬ng tr×nh 5-1 : LËp ch−¬ng tr×nh x¸c ®Þnh ®Þa chØ cña mét ng¾t . #include #include #include void main() { unsigned char far *p; int n,k; unsigned seg,off; clrscr(); p=(unsigned char far*)MK_FP(0,0); 58
  2. while(1) { printf("\nSo hieu ngat(Bam 0 de ket thuc): "); scanf("%d",&n); if (n==0) break; k=(n-1)*4; off=p[k]+256*p[k+1]; seg=p[k+2]+256*p[k+3]; printf("\nDia chi cua ngat %x : %x",seg,off); } } Sè hiÖu cña ng¾t ®−îc ®¸nh sè tõ 0 nh−ng n ®−îc nhËp tõ 1 , mçi ng¾t chiÕm 4 byte nªn ta cã k=(n-1)*4; 59
Đồng bộ tài khoản