Chương 9 Truy nhập trực tiếp vào bộ nhớ
Số trang: 7
Loại file: doc
Dung lượng: 66.00 KB
Lượt xem: 5
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu chương 9 truy nhập trực tiếp vào bộ nhớ, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Chương 9 Truy nhập trực tiếp vào bộ nhớ chương 9 + Nguyờn mẫu trong dos.h như sau: Truy nhập trực tiếp vào bộ nhớ int peek(unsigned seg, unsigned off); Trong chương này trỡnh bầy cỏc vấn đề: 491 + Cụng dụng: Nhận một word tại địa chỉ phõn đoạn seg:off 492 + Hai kiểu địa chỉ: Địa chỉ phõn đoạn và địa chỉ thực 5. Hàm movedata: Sao cỏc byte. + Truy nhập tới địa chỉ phõn đoạn + Nguyờn mẫu trong mem.h như sau: + Đổi từ địa chỉ phõn đoạn sang địa chỉ thực void movedata(unsigned seg_gui, unsigned off_gui, + Bộ nhớ màn hỡnh, truy nhập trực tiếp vào bộ nhớ màn unsigned seg_nhan, unsigned off_nhan, int n);hỡnh + Cụng dụng: Sao n byte từ seg_gui:off_gui đến + Dựng con trỏ để lấy dữ liệu từ bộ nhớ phõn đoạn seg_nhan:off_nhan + Dựng con trỏ hàm để thực hiện cỏc thủ tục của DOS § 2. Bộ nhớ màn hỡnh văn bản § 1. Cỏc hàm truy nhập theo địa chỉ phõn đoạn 2.1. Cỏch biểu diễn ký tự trong bộ nhớ màn hỡnh 1. Hàm pokeb: Gửi một ký tự vào bộ nhớ. Bộ nhớ màn hỡnh văn bản bắt đầu từ địa chỉ : + Nguyờn mẫu trong dos.h như sau: (0xb800:0x0000) void pokeb(unsigned seg, unsigned off, char value); Khi đưa một ký tự vào vựng nhớ màn hỡnh, thỡ nú sẽ hiện lờn + Cụng dụng: Gửi giỏ trị ký tự value vào bộ nhớ tại địa chỉ màn hỡnh. Mỗi ký tự trờn màn hỡnh chiếm 2 byte trong bộ nhớphõn đoạn seg:off màn hỡnh: byte đầu chứa mó ASCII, byte thứ hai biểu diễn mầu hiển thị gọi là byte thuộc tớnh. Cỏc bit của byte thuộc tớnh: 2. Hàm peekb: Nhận một ký tự từ bộ nhớ. B7B6B5B4B3B2B1B0 + Nguyờn mẫu trong dos.h như sau: được chia làm 3 nhúm: char peekb(unsigned seg, unsigned off); + Nhúm 1 gồm bit B7 biểu thị sự nhấp nhỏy. Nếu B7=0 thỡ ký + Cụng dụng: Nhận một byte tại địa chỉ phõn đoạn seg:off tự khụng nhấp nhỏy, nếu B7=1 thỡ ký tự sẽ nhấp nhỏy. 3. Hàm poke: Gửi một số nguyờn vào bộ nhớ. + Nhúm 2 gồm cỏc bit B6, B5 và B4. Cỏc bit này chứa được + Nguyờn mẫu trong dos.h như sau: một số nguyờn từ 0 đến 7 và biểu thị 8 mầu nền của ký tự. void poke(unsigned seg, unsigned off, int value); + Nhúm 3 gồm cỏc bit B3, B2, B1 và B0. Cỏc bit này chứa được một số nguyờn từ 0 đến 15 và biểu thị 16 mầu của ký tự. + Cụng dụng: Gửi giỏ trị nguyờn value vào bộ nhớ tại địa chỉphõn đoạn seg:off 2.2. Trang màn hỡnh 4. Hàm peek: Nhận một số nguyờn từ bộ nhớ. Mỗi trang màn hỡnh gồm 80x25 ký tự, do đú cần 80x25x2=4000 //Mặc định hiển thị trang 0byte bộ nhớ. Thực tế mỗi trang màn hỡnh được phõn bố 4096 = for (int i=0;i Vớ dụ 1. Sau khi thực hiện cỏc cõu lệnh: /* char buf[100]; chương trỡnh minh hoạ cỏch truy nhập trực tiếp vào bộ unsigned ds,dx; nhớ của màn hỡnh ds = FP_SEG(buf); dx = FP_OFF(buf); */thỡ ds:dx chứa địa chỉ của mảng buf. #include dos.h Vớ dụ 2. Sau khi thực hiện cỏc cõu lệnh: #include conio.h char far *pchar; void duarmh(char *day, int dong,I nt cotd, int cotc,I nt m_nen, pchar = (char far*)MK_FP(0xb800:0); int m_chu); 495 496thỡ pchar trỏ tới địa chỉ đầu của bộ nhớ màn hỡnh. Khi đú ta cú void cuaso(int dongt,int cott,int dongd,int cotd,int maucs);thể sử dụng cỏc lệnh gỏn để truy nhập trực tiếp tới bộ nhớ màn main()hỡnh. { cuaso(26,1,50,80,BLUE); § 4. cỏc vớ dụ minh hoạ duarmh(Chuc mung nam moi, 28, 30, 50, MAGENTA, Chương trỡnh 1. Chương trỡnh minh hoạ cỏch truy nhập trực WHITE);tiếp vào bộ nhớ màn hỡnh cú địa chỉ đầu là 0xB800:0. Chương cuaso(30,20,46,60,RED);trỡnh gồm hàm main() và hai hàm sau: duarmh(Chuc mung nam moi, 40, 30, 50, MAGENTA, 1. Hàm cuaso YELLOW); void cuaso(int dongt,int cott,int dongd,int cotd,int maucs); getch();thiết lập một cửa sổ mầu cú toạ độ gúc trờn-trỏi là (dongt, cott) và }gúc dưới-phải là (dongd,cotd). Mầu cho bởi tham số maucs. ở đõy void cuaso(int dongt,int cott,int dongd,int cotd,int maucs)sử dụng hàm pokeb và địa chỉ phõn đoạn. /* Dung dia phan doan */ 2. Hàm duarmh ...
Nội dung trích xuất từ tài liệu:
Chương 9 Truy nhập trực tiếp vào bộ nhớ chương 9 + Nguyờn mẫu trong dos.h như sau: Truy nhập trực tiếp vào bộ nhớ int peek(unsigned seg, unsigned off); Trong chương này trỡnh bầy cỏc vấn đề: 491 + Cụng dụng: Nhận một word tại địa chỉ phõn đoạn seg:off 492 + Hai kiểu địa chỉ: Địa chỉ phõn đoạn và địa chỉ thực 5. Hàm movedata: Sao cỏc byte. + Truy nhập tới địa chỉ phõn đoạn + Nguyờn mẫu trong mem.h như sau: + Đổi từ địa chỉ phõn đoạn sang địa chỉ thực void movedata(unsigned seg_gui, unsigned off_gui, + Bộ nhớ màn hỡnh, truy nhập trực tiếp vào bộ nhớ màn unsigned seg_nhan, unsigned off_nhan, int n);hỡnh + Cụng dụng: Sao n byte từ seg_gui:off_gui đến + Dựng con trỏ để lấy dữ liệu từ bộ nhớ phõn đoạn seg_nhan:off_nhan + Dựng con trỏ hàm để thực hiện cỏc thủ tục của DOS § 2. Bộ nhớ màn hỡnh văn bản § 1. Cỏc hàm truy nhập theo địa chỉ phõn đoạn 2.1. Cỏch biểu diễn ký tự trong bộ nhớ màn hỡnh 1. Hàm pokeb: Gửi một ký tự vào bộ nhớ. Bộ nhớ màn hỡnh văn bản bắt đầu từ địa chỉ : + Nguyờn mẫu trong dos.h như sau: (0xb800:0x0000) void pokeb(unsigned seg, unsigned off, char value); Khi đưa một ký tự vào vựng nhớ màn hỡnh, thỡ nú sẽ hiện lờn + Cụng dụng: Gửi giỏ trị ký tự value vào bộ nhớ tại địa chỉ màn hỡnh. Mỗi ký tự trờn màn hỡnh chiếm 2 byte trong bộ nhớphõn đoạn seg:off màn hỡnh: byte đầu chứa mó ASCII, byte thứ hai biểu diễn mầu hiển thị gọi là byte thuộc tớnh. Cỏc bit của byte thuộc tớnh: 2. Hàm peekb: Nhận một ký tự từ bộ nhớ. B7B6B5B4B3B2B1B0 + Nguyờn mẫu trong dos.h như sau: được chia làm 3 nhúm: char peekb(unsigned seg, unsigned off); + Nhúm 1 gồm bit B7 biểu thị sự nhấp nhỏy. Nếu B7=0 thỡ ký + Cụng dụng: Nhận một byte tại địa chỉ phõn đoạn seg:off tự khụng nhấp nhỏy, nếu B7=1 thỡ ký tự sẽ nhấp nhỏy. 3. Hàm poke: Gửi một số nguyờn vào bộ nhớ. + Nhúm 2 gồm cỏc bit B6, B5 và B4. Cỏc bit này chứa được + Nguyờn mẫu trong dos.h như sau: một số nguyờn từ 0 đến 7 và biểu thị 8 mầu nền của ký tự. void poke(unsigned seg, unsigned off, int value); + Nhúm 3 gồm cỏc bit B3, B2, B1 và B0. Cỏc bit này chứa được một số nguyờn từ 0 đến 15 và biểu thị 16 mầu của ký tự. + Cụng dụng: Gửi giỏ trị nguyờn value vào bộ nhớ tại địa chỉphõn đoạn seg:off 2.2. Trang màn hỡnh 4. Hàm peek: Nhận một số nguyờn từ bộ nhớ. Mỗi trang màn hỡnh gồm 80x25 ký tự, do đú cần 80x25x2=4000 //Mặc định hiển thị trang 0byte bộ nhớ. Thực tế mỗi trang màn hỡnh được phõn bố 4096 = for (int i=0;i Vớ dụ 1. Sau khi thực hiện cỏc cõu lệnh: /* char buf[100]; chương trỡnh minh hoạ cỏch truy nhập trực tiếp vào bộ unsigned ds,dx; nhớ của màn hỡnh ds = FP_SEG(buf); dx = FP_OFF(buf); */thỡ ds:dx chứa địa chỉ của mảng buf. #include dos.h Vớ dụ 2. Sau khi thực hiện cỏc cõu lệnh: #include conio.h char far *pchar; void duarmh(char *day, int dong,I nt cotd, int cotc,I nt m_nen, pchar = (char far*)MK_FP(0xb800:0); int m_chu); 495 496thỡ pchar trỏ tới địa chỉ đầu của bộ nhớ màn hỡnh. Khi đú ta cú void cuaso(int dongt,int cott,int dongd,int cotd,int maucs);thể sử dụng cỏc lệnh gỏn để truy nhập trực tiếp tới bộ nhớ màn main()hỡnh. { cuaso(26,1,50,80,BLUE); § 4. cỏc vớ dụ minh hoạ duarmh(Chuc mung nam moi, 28, 30, 50, MAGENTA, Chương trỡnh 1. Chương trỡnh minh hoạ cỏch truy nhập trực WHITE);tiếp vào bộ nhớ màn hỡnh cú địa chỉ đầu là 0xB800:0. Chương cuaso(30,20,46,60,RED);trỡnh gồm hàm main() và hai hàm sau: duarmh(Chuc mung nam moi, 40, 30, 50, MAGENTA, 1. Hàm cuaso YELLOW); void cuaso(int dongt,int cott,int dongd,int cotd,int maucs); getch();thiết lập một cửa sổ mầu cú toạ độ gúc trờn-trỏi là (dongt, cott) và }gúc dưới-phải là (dongd,cotd). Mầu cho bởi tham số maucs. ở đõy void cuaso(int dongt,int cott,int dongd,int cotd,int maucs)sử dụng hàm pokeb và địa chỉ phõn đoạn. /* Dung dia phan doan */ 2. Hàm duarmh ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kỹ thuật lập trình lập trình hướng đối tượng tin học văn phòngGợi ý tài liệu liên quan:
-
73 trang 427 2 0
-
52 trang 426 1 0
-
Nhập môn Tin học căn bản: Phần 1
106 trang 324 0 0 -
Giáo trình Tin học văn phòng: Phần 2 - Bùi Thế Tâm
65 trang 313 0 0 -
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 309 0 0 -
74 trang 293 0 0
-
96 trang 289 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 288 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 276 0 0 -
Giáo trình Tin học MOS 1: Phần 1
58 trang 275 0 0