You are on page 1of 3

#include<dos.

h>
main()
{
char *s;
s=(char *)MK_FP(0xB800,0);
s[3998]=0x42; // MA B
s[3999]=0x21; //MAU BLU TREN NEN GREEN
}

----------------------------------
#include<dos.h>
main()
{
char *s;
s = (char*)MK_FP(0xB800,0);
s[1998]=0x44; // Ma D
s[1999]=0x38;
}

------------------------------------
#include<dos.h>
main()
{
char *s;
s = (char*)MK_FP(0xB800,0);
Int h = 20, c= 60,vt;
vt = ((h-1)*80 + c-1)*2; // So luong o nho nam truoc o nho ta xet
s[vt]=0x48; // Ma H
s[vt+1]=0x32; // Mau green tren nen cyan
}

----------------------------------------
Lập trình nhập chuỗi hello màu đỏ nền green ở giữa màn hình 24-72
#include<dos.h>
main()
{
char *s;
s = (char*)MK_FP(0xB800,0);
int h=13 ,c=38, vt;
vt = (h-1)*80 + c-1)*2;
char *ch = "Hello";
for (int i = 0, i < 5, i++) {
s[vt] = ch[i];
s[vt+1] =0x24;
vt+=2;
}
}

----------------------------------------
Lập trình nhập chuỗi hello màu đỏ nền green ở giữa màn hình số 3
#include<dos.h>
#include<conio.h>
main()
{
char *s;
s = (char*)MK_FP(0xB800,0);
int h=13 ,c=38, vt;
vt = (h-1)*80 + c-1)*2 + 4096*3;
char *ch = "Hello";
for (int i = 0, i < 5, i++) {
s[vt] = ch[i];
s[vt+1] =0x24;
vt+=2;
}

getch(); // Dừng chương trình để ta xem được kết quả

// chọn trang hoạt động / thiết lập bằng ngắt 10h


union REGS b1,b2;
b1.h.ah=5;
b1.h.al=3;
int86(0x10, &b1, &b2);

getch(); // Dừng chương trình để ta xem được kết quả


}
Cách chuyển trang hoạt động nhờ gọi ngắt màn hình 10h

Chức năng số 0: chọn chế độ hiển thị


Các tham số: + AH = 0; + AL = chế độ hiển thị (Đồ họa hay văn bản)
Chức năng số 5: chọn trang hoạt động
Các tham số: + AH = 5; + AL = số hiệu trang

Lập trình đọc sector đầu tiên của đĩa cứng vào bộ nhớ

Head() 0
Track() 0 (cylinder)
Sector 1
-----------------------------------------
include<dos.h>
main(){
char A[512];
union REGS b1,b2;
struct SREGS b3; // Chứa các thanh ghi đoạn
b1.h.ah=2;
b1.h.al=1;
b1.h.ch=0;
b1.h.cl=1;
b1.h.dh=0;
b1.h.dl=0x80;
b3.es = FP_SEG(A); // Xác định địa chỉ segment của mảng A
b1.x.bx= FP_OFF(A); // Xác định địa chỉ offset của mảng A

int86x(0x13,&b1,&b2,&b3);
for(int i=0; i<512;i++) cout<<A[i];
}
------------------------------------
Ghi dữ liệu vào sector trên điĩa bằng ngắt 13h chức năng số 3
Ghi chuỗi Hello vào sector thứ 2 trên đĩa cứng
Head=0
Track = 0
Sector=2

include<dos.h>
main(){
char A[512] = "Hello";
union REGS b1,b2;
struct SREGS b3; // Chứa các thanh ghi đoạn
b1.h.ah=3;
b1.h.al=1;
b1.h.ch=0;
b1.h.cl=2;
b1.h.dh=0;
b1.h.dl=0x80;
b3.es = FP_SEG(A); // Xác định địa chỉ segment của mảng A
b1.x.bx= FP_OFF(A); // Xác định địa chỉ offset của mảng A

int86x(0x13,&b1,&b2,&b3);

Lập trình truy nhập bộ nhớ hiển thị


cách 1:
Sử dụng macro MK_FP để chuyển đổi địa chỉ segment:offset thành địa chỉ vật lý:
void far *MK_FP(segment, offset);

char *s;
s= (char*)MK_FP(0xB800, 0);
Sau lệnh trên thì s sẽ trỏ tới đầu trang 0 của bộ nhớ hiển thị

You might also like