CHNG5:TRUYCPTRCTIPB §1.CÁCHÀMTRUYCPTHEOĐACHPHÂNĐON 1.Hàmpokeb():Dùnggimtkítvaluevàobnhtiđachphânđon off.Nguyênmucahàmtrongdos.hlà: voidpokeb(unsignedseg,unsignedoff, charvalue) 2.Hàmpeekb():Nhnmtbytetichseg:off.Nguyênmucahàmtrong dos.hlà: charpeekb(unsignedseg,unsignedoff) 3.Hàmpoke():Gimtsnguyênvaluevàobtiđachseg:off.Nguyên muc ahàmtrongdos.hlà: voidpoke(unsignedseg,unsignedoff,intvalue) 4.Hàmpeek():Nhnmtwordtiđachseg:off.Nguyênmuhàmtrong dos.hlà: voidpeek(unsignedseg,unsignedoff) 5. Hàm movedata(): Sao n byte tiđa ch seg_gui:off_guiđ nđa ch seg_nhan:off_nhan.Nguyênmucahàmtrongmenu.hlà: void movedata(unsigned seg_gui,unsigned off_gui, unsigned seg_nhan,unsignedoff_nhan,intn) §1.ĐITĐACHPHÂNĐONSANGĐACHTHC 1.Đitđachthc:Đitđichthc sangđachphânđontadùng macrosau: unsignedFP_SEG(diachithuc) unsignedFP_OFF(diachithuc) 2.Đitđachphânđon:Đitđachphânđonsangmacro: voidfar*MK_FP(seg:off) Víd:Saukhithchincáccâu lnh: charbuf[100] unsignedds,dx; ds=FP_SEG(buf) dx=FP_OFF(buf) thìds:dxchađachcamngbuf. Saukhithchincâulnh: 51 char*pchar; pchar=(char*)MK_FP(0xb800:0) thìpchartrtibnhmànhình.Khiđótacóthdùngcáclnhđtruy cptibnhmànhình. Chngtrình51:Lpchngtrìnhxácđnhđachc amtngt. #include<dos.h> #include<conio.h> #include<stdio.h> voidmain() { unsignedcharfar*p; intn,k; unsignedseg,off; clrscr(); p=(unsignedcharfar*)MK_FP(0,0); while(1) { printf(\nSohieungat(Bam0deketthuc):); 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(\nDiachicuangat%x:%x,seg,off); } } Shiucamingtđcđánhst0nhngnđcnhpt1,mi ngtchim4bytenên: k= (n1)*4; 52