tailieunhanh - Turbo C nâng cao P5

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ƯƠNG 5 TRUY CẬP TRựC TIÊP BỘ NHỚ 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 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 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 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 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 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 chuơ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 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 .

TỪ KHÓA LIÊN QUAN