You are on page 1of 8

THỰC HÀNH LẬP TRÌNH HỆ THỐNG & ĐKTB

Bài 1: Nhập Môn Hợp Ngữ

1. Viết từng chương trình tính các biểu thức sau: (Phải viết theo kiểu sử dụng biến để chứa toán hạng và kết
quả, SV tự đặt tên biến theo ý của mình)
a. 15h * 250 d. 1000 ÷ 100
b. 16 * 0AF1h e. 1000 ÷ 100h
c. 300 * 400 f. 3AB45Eh ÷ 0A1h

2: Viết chương trình in ra màn hình 26 chữ cái ‘A’ …’Z’.

3. Viết chương trình nhập vào 1 số nguyên n (0≤ n≤ 9), tính tổng S=1+2+3+…+n rồi in kết quả ra màn hình.

4. Viết chương trình nhập vào hai số nguyên x và y (0≤ x,y ≤ 9), tính tổng x+y rồi in kết quả ra màn hình.
Yêu cầu: Chương trình được tổ chức như sau: gồm 1 chương trình chính, 2 chương trình con hoặc 2 macro,
1 dùng để nhập vào 1 số và 1 dùng để in kết quả .

5. Viết chương trình nhập vào từ bàn phím hai số nguyên a và b với 0 ≤ a,b ≤256. Tính tích của chúng và in
kết quả ra màn hình. Yêu cầu chương trình phải được tổ chức thành các chương trình con hoặc macro.

6. Viết chương trình nhập vào một tên file rồi xóa file đó. In ra màn hình thông báo xóa thành công hay
không.

7. Viết chương trình tạo một file backup từ một file văn bản nguồn. Tên của file văn bản được nhập vào từ
bàn phím.
Bài 2: Xuất Nhập Ký Tự
1. Viết chương trình sử dụng hàm 7, ngắt 21h để nhận 1 ký tự từ bàn phím, dùng 1 biến để lưu trữ ký tự
nhận được (do sinh viên tự đặt tên biến), sau đó sử dụng hàm 2, ngắt 21h để in ra màn hình ký tự nhận được
đang lưu trong biến ấy. Chương trình phải có đủ các câu thông báo nhập và xuất.
Ví dụ: Hay go 1 phim: B
Ky tu nhan duoc la: B

2. Sửa lại chương trình 4.1 sao cho không cần sử dụng biến để lưu trữ ký tự mà kết quả chạy chương trình
vẫn không thay đổi.

3. Viết chương trình nhận 1 ký tự từ bàn phím, sau đó in ra màn hình ký tự kế trước và kế sau của ký tự vừa
nhập
Ví dụ: Hay go 1 phim: B
Ky tu ke truoc : A
Ky tu ke sau : C

4. Viết chương trình cho phép nhập từ bàn phím tên của 1 người, sao đó in ra màn hình chuỗi có dạng như
sau:
Xin chao <tên_đã_nhập>
Ví dụ: Khi chạy chương trình, nhập vào là: Nguyen ABC
Chuỗi in ra màn hình sẽ là: Xin chao Nguyen ABC

5. Viết chương trình tạo 1 array có các phần tử 31h,32h,33h,34h.


Nạp từng phần tử và thanh ghi DL và xuất ra màn hình. Giải thích tại sao kết xuất trên màn hình là 1234.

BÀI 3: CẤU TRÚC RẼ NHÁNH – VÒNG LẶP

1. Viết chương trình cho nhập 1 ký tự từ màn hình và xuất câu thông báo tương ứng sau:
- Nếu ký tự nhập là ‘S’ hay ‘s’ thì in ra “Good morning!”
- Nếu ký tự nhập là ‘T’ hay ‘t’ thì in ra “Good Afternoon!”
- Nếu ký tự nhập là ‘C’ hay ‘c’ thì in ra “Good everning!”
2. Viết lại chương trình BAI_3A.ASM sao cho chương trình có thể phân biệt được 3
loại ký tự nhập từ bàn phím: "Ký tự HOA", "ký tự thường" và "ký tự khác".

3. Viết chương trình nhập từ bàn phím 1 ký tự thường. Sau đó in ra màn hình lần lượt các ký tự từ ký tự nhận
được đến 'z' sao cho giữa các ký tự có 1 khoảng trống.

4. Không dùng hàm 0Ah/21h, hãy dùng lệnh lặp để viết chương trình nhập vào 1 chuỗi ký tự. Sau khi nhập
xong đếm xem chuỗi có bao nhiêu ký tự. In ra màn hình chuỗi nhận được và số ký tự có trong chuỗi.
Ví dụ: S = "Hello world !" ==> Số kí tự trong chuỗi là 13.

5. Viết chương trình cho phép nhập vào một chuỗi bất kỳ. Sau đó:
- Đổi tất cả ký tự thường thành ký tự hoa và in ra màn hình.
- Đổi tất cả ký tự hoa thành ký tự thường và in ra màn hình.
Ví dụ: S = ‘weLcOme To AssEmblY’
In ra: welcome to assembly - WELCOME TO ASSEMBLY

6. Nhập vào 2 chuỗi số, đổi 2 chuỗi thành số, sau đó cộng hai số, đổi ra chuỗi và xuất chuỗi tổng.
Ví dụ: S1 = "123" => N1 = 123
S2 = "456" => N2 = 456
N = N1 + N2 = 123 + 456 = 579 => S = "579" (xuất S ra màn hình)

7. Nhập 2 số nguyên dương A, B. Tính A/B, A*B (không dùng lệnh DIV, MUL) và in ra màn hình kết quả.
Ví dụ: A=18, B=3
Tính A/B: 18 - 3 - 3 - 3 - 3 - 3 - 3 = 0, vậy A/B = 6 (tổng trừ B cho đến khi A = 0).
Tính A*B = 18 + 18 + 18 = 54

8. Viết chương trình đọc 1 ký tự từ bàn phím.


- Nếu ký tự nhận được là ‘A’ thì chuyển con trỏ về đầu dòng.
- Nếu ký tự nhận được là ‘B’ thì chuyển con trỏ xuống dòng.
- Nếu nhận được ký tự khác thì thoát khỏi chương trình.

9. Viết đoạn lệnh để tính:


a. AX = 1 + 4 + 7 + …. + 148 + 151
b. AX = 100 +95 + 90 + …. + 10 + 5

10. Không sử dụng lệnh DIV, viết đoạn lệnh để thực hiện AX chia cho BX (nếu BX ≠ 0), phần thương chứa
trong CX, số dư chứa trong AX. Giải thuật như sau:
CX = 0
WHILE (AX >= BX)
CX = CX + 1
AX = AX – BX
ENDWHILE

11. Không sử dụng lệnh MUL, viết đoạn lệnh để thực hiện AX nhân với BX (nếu BX ≠ 0), kết quả lưu trong
CX. Giải thuật như sau:
CX = 0
DO
CX = CX + AX
BX = BX - 1
WHILE BX > 0
12.. Sử dụng hàm 08h, ngắt 21h để viết chương trình nhận 1 chuỗi đầy đủ 30 ký tự từ bàn phím.
- Nếu ký tự nhận được là HOA thì hiển thị ký tự đó lên màn hình.
- Nếu ký tự nhận được là thường thì hiển thị dấu ‘*’ lên màn hình.

13.. Viết chương trình nhập 1 chuỗi tối đa 256 ký tự từ bàn phím. Sau đó in đảo ngược chuỗi nhận được ra
màn hình.
14..Viết chương trình nhận 1 chuỗi ký tự thường từ bàn phím. Sau đó đổi chuỗi nhận được thành chuỗi ký tự
HOA và in ra màn hình.

15. Viết chương trình nhận 1 chuỗi ký tự từ bàn phím. Sau đó đếm số CHỮ có trong chuỗi nhận được và in
ra màn hình số đếm được.

16. Viết chương trình tính tổng của dãy số: 3, 7, 11, 15, 19, 23, 27. Kết quả ghi vào thanh ghi AX.

17. Viết đoạn chương trình để tính N!, kết quả ghi vào thanh ghi AX. Giả thiết tích số không vượt quá 16 bit

BÀI 4: NHẬP XUẤT SỐ DẠNG BIN – HEX – DEC

1. Viết chương trình nhập 2 số nhị phân 16 bit A và B. Sau đó in ra màn hình các kết quả ở dạng nhị phân: A
+ B, A – B, A and B, A or B.
Ví dụ: Nhập số nhị phân A: 10101010
Nhập số nhị phân B: 01010101
A + B = 11111111 A – B = 01010101
A and B = 00000000 A or B = 11111111

2. Viết chương trình nhập 1 ký tự từ bàn phím, sau đó in ra màn hình mã ASCII của ký tự nhận được ở dạng
thập lục phân, thập phân và nhị phân.
Ví dụ: Nhập 1 ký tự: A
Mã ASCII dạng Hex: 41h
Mã ASCII dạng Dec: 65
Mã ASCII dạng Bin: 01000001b

3. Viết lại chương trình bài 4.1 nhưng 2 số A và B được nhập theo dạng thập lục phân. Các kết quả được in
ra màn hình ở dạng nhị phân.

4. Viết lại chương trình bài 4.1 nhưng 2 số A và B được nhập theo dạng thập phân. In các kết quả ở dạng
thập phân: A + B, A – B.

5. Viết chương trình tính giai thừa n! Với n là số nguyên dương nhập từ bàn phím. In kết quả ra màn hình ở
dạng thập phân. Cho biết, khả năng của CPU 8088 tính được n lớn nhất là bao nhiêu?

6 Viết chương trình nhập từ bàn phím một biểu thức đại số có chứa các dấu ngoặc tròn () hay []. Sau đó
kiểm tra biểu thức nhận được là hợp lệ hay không hợp lệ và in kết quả ra màn hình.

Ví dụ: [a + (b – [ c * ( d – e )]) + f] là hợp lệ


[a + (b – [ c * ( d – e )) + f)] là không hợp lệ.
Hướng dẫn: dùng stack để PUSH các dấu ngoặc trái ‘(‘, ‘[‘ vào ngăn xếp. Nếu gặp dấu ngoặc phải ‘)’, ‘]’ thì
POP từ stack ra để so sánh. Nếu không POP được, hoặc POP ra không đúng loại với dấu ngoặc phải là
không hợp lệ. Ngược lại là hợp lệ.

7. Viết chương trình nhập từ bàn phím 1 ký tự, sau đó in ra màn hình mã ASCII của ký tự nhận được ở dạng
nhị phân.
Ví dụ: Hãy nhập 1 ký tự: K
Mã ASCII dạng nhị phân là: 01110101

8. Viết chương trình nhập từ bàn phím 1 ký tự, sau đó in ra màn hình mã ASCII của ký tự nhận được ở thập
lục phân.
Ví dụ: Hãy nhập 1 ký tự: K
Mã ASCII dạng thập lục phân là: 75

9. Viết chương trình nhập từ bàn phím 1 số nhị phân 8 bit, sau đó in ra màn hình giá trị nhận được ở dạng số
thập lục phân.
Ví dụ: Hãy nhập số nhị phân 8 bit: 10110101
Dạng thập lục phân là: B5
Bài 5: Xử Lý Chuỗi Ký Tự

1. Di chuyển 33 bytes từ nội dung của string1 sang string2, sau đó in nội dung của string2 ra màn hình.

2. Tìm ký tự “A” có trong một chuỗi ký tự bất kỳ, nếu có thì in ra câu thông báo là có ký tự “A” trong chuỗi ký tự và
ngược lại.

3. Viết chương trình nhập 1 chuỗi tối đa 256 ký tự từ bàn phím. Sau đó in đảo ngược chuỗi nhận được ra
màn hình.

4. Viết chương trình nhận 1 chuỗi ký tự thường từ bàn phím. Sau đó đổi chuỗi nhận được thành chuỗi ký tự
HOA và in ra màn hình.

5. Viết chương trình nhận 1 chuỗi ký tự từ bàn phím. Sau đó đếm số CHỮ có trong chuỗi nhận được và in ra
màn hình số đếm được.

6. Viết chương trình nhập 2 chuỗi A và B từ bàn phím, sau đó ghép chuỗi A với chuỗi B để tạo thành chuỗi
C. In ra màn hình chuỗi C.
Ví dụ: Hãy nhập chuỗi A: Chao cac ban
Hãy nhập chuỗi B: Sinh vien CNTT
Chuỗi ghép C là: Chao cac ban Sinh vien CNTT

7. Viết chương trình nhập 1 chuỗi tối đa 256 ký tự. Sau đó tìm xem có các ký tự ‘A’, ‘a’, ‘B’, ‘b’ có trong
chuỗi hay không. In ra màn hình các kết quả tìm được.
Ví dụ: Hãy nhập chuỗi: Chao cac ban Sinh vien CNTT
Kết quả:
- Không có ‘A’.
- Có ‘a’.
- Không có ‘B’.
- Có ‘b’.

8. Viết chương trình nhập từ bàn phím 1 ký tự, sau đó in ra màn hình mã ASCII của ký tự nhận được ở dạng
nhị phân.
Ví dụ: Hãy nhập 1 ký tự: K
Mã ASCII dạng nhị phân là: 01110101
9. Viết chương trình nhập từ bàn phím 1 ký tự, sau đó in ra màn hình mã ASCII của ký tự nhận được ở thập
lục phân.
Ví dụ: Hãy nhập 1 ký tự: K
Mã ASCII dạng thập lục phân là: 75

10. Viết chương trình nhập từ bàn phím 1 số nhị phân 8 bit,sau đó in ra màn hình giá trị nhận được ở dạng số
thập lục phân.
Ví dụ: Hãy nhập số nhị phân 8 bit: 10110101
Dạng thập lục phân là: B5
11. Viết chương trình nhập 2 chuỗi A và B từ bàn phím, sau đó ghép chuỗi A với chuỗi B để tạo thành chuỗi
C. In ra màn hình chuỗi C.
Ví dụ: Hãy nhập chuỗi A: Chao cac ban
Hãy nhập chuỗi B: Sinh vien CNTT
Chuỗi ghép C là: Chao cac ban Sinh vien CNTT
12. Viết chương trình nhập 1 chuỗi tối đa 256 ký tự. Sau đó tìm xem có các ký tự ‘A’, ‘a’, ‘B’, ‘b’ có trong
chuỗi hay không. In ra màn hình các kết quả tìm được.
Ví dụ: Hãy nhập chuỗi: Chao cac ban Sinh vien CNTT
Kết quả:
- Không có ‘A’.
- Có ‘a’.
- Không có ‘B’.
- Có ‘b’.
13. Viết chương trình nhập từ bàn phím một biểu thức đại số có chứa các dấu ngoặc tròn () hay []. Sau đó
kiểm tra biểu thức nhận được là hợp lệ hay không hợp lệ và in kết quả ra màn hình.

Ví dụ: [a + (b – [ c * ( d – e )]) + f] là hợp lệ


[a + (b – [ c * ( d – e )) + f)] là không hợp lệ.
Hướng dẫn: dùng ngăn xếp để PUSH các dấu ngoặc trái ‘(‘, ‘[‘ vào ngăn xếp. Nếu gặp dấu ngoặc phải ‘)’, ‘]’
thì POP từ stack ra để so sánh. Nếu không POP được, hoặc POP ra không đúng loại với dấu ngoặc phải là
không hợp lệ. Ngược lại là hợp lệ.

14: Viết chương trình nhập 1 số từ 1-12, in ra tên tháng tương ứng.

15. Viết chương trình nhập 1 số từ 1-7, in ra tên thứ tương ứng.

16. Nhập 1 chuỗi dài tối đa 255 ký tự từ bàn phím. Cho phép dùng phím BackSpace để sửa khi nhập sai và
kết thúc nhập khi gỏ phím Enter.

Hd:
Dùng hàm 0AH INT 21H để nhập chuổi
DS:DX địa chỉ của buffer đệm lưu chuỗi.
Byte 0 : số byte tối đa có thể nhập.
Byte 1 : chứa giá trị 0
Byte 2 trở đi : để trống (lưu các ký tự sẽ nhập)
Để nhập 1 chuỗi ký tự vào Buffer
đệm ta khai báo như sau :
.DATA
BUFFERN DB 80,0,80 DUP(?)

17. Viết chương trình nhập vào 1 từ, sau đó in từng ký tự trong từ theo chiều dọc.
Thí dụ Nhập CONG
Xuất : C
O
N
G

18. Viết chương trình nhập vào 1 chuỗi, sau đó đổi tất cả chuỗi thành chữ hoavà in chuỗi ra màn hình ở
dòng kế.

19 Viết chương trình nhập hai chuỗi ký tự , kiểm tra xem chuỗi thứ hai có xuất hiện trong chuỗi thứ nhất hay
không.
Ví dụ : Nhập chuỗi thứ nhất : computer information
Nhập chuỗi thứ hai : compute
Xuất: Chuỗi thứ hai có xuất hiện trong chuỗi thứ nhất.

20. Viết chương trình nhập 1 chuỗi ký tự viết hoa các ký tự nguyên âm, viết thường các ký tự phụ âm.
Ví dụ : Nhập chuỗi : “aBcdE”
Xuất chuỗi: “AbCdE”
21. Viết chương trình nhập vào 2 chuỗi ký tự s1, s2 và 1 số nguyên dương n. Chèn chuỗi s2 vào chuỗi s1 ở
vị trí ký tự thứ n trong chuỗi s1 .
Ví dụ : Nhập chuỗi s1 : “abcde”
Nhập chuỗi s2 : “fgh”
Nhập n = 3
Xuất kết quả : “abcfghde”
22. Viết chương trình nhập vào từ bàn phím 1 chuỗi và tính số lần xuất hiện của các nguyên âm (a,e,i,o,u, y),
cac phu am, cac khoang trang, trong chuỗi tương ứng.
Ví dụ : Nhập chuỗi : “dai hoc khoa hoc tu nhien thanh pho ho chi minh”
Xuất : Số lần xuất hiện của các nguyên âm là : 14 , phu am la: 24, khoang trang la: 9
23. Viết chương trình nhập vào từ bàn phím 1 chuỗi gồm các ký tự trong bảng chữ cái. Đếm xem trong chuỗi
có bao nhiêu từ.
Ví dụ : Nhập chuỗi : “ hO Chi mINh ”
Xuất : chuỗi gồm có 3 từ
24. Viết chương trình nhập vào từ bàn phím 4 số . Xuất ra màn hình 4 số đó theo thứ tự tăng dần .
Ví dụ : Nhập : 14 7 26 11
Xuất : 7 11 14 26
25. Viết chương trình nhập vào từ bàn phím 4 số và sau đó xuất số lớn nhất và nhỏ nhất ra màn hình.
Ví dụ : Nhập : 13 21 1 49
Xuất : Số lớn nhất : 49
Số nhỏ nhất : 1
26. Viết chương trình nhập vào từ bàn phím 1 CHUỖI 1 (chuỗi dài) CHUỖI 2 (chuỗi ngắn) & 1 ký tự.
- Tìm chuỗi 2 trong chuỗi 1 & in ra vị trí xuất hiện đầu tiên của chuỗi 2 trong chuỗi 1 nếu tìm
thấy,ngược lại in ra không tìm thấy
- Tìm ký tự đã nhập trong chuỗi 1 & in ra vị trí xuất hiện đầu tiên của ký tự trong chuỗi 1 nếu tìm
thấy,ngược lại in ra không tìm thấy
- Thay chuỗi 2 trong chuỗi 1 bằng ký tự (nếu được)
27. Viết chương trình nhập 1 chuổi ký tự. Xuất ký tự dưới dạng viết hoa ký tự đầu của từng từ,các ký tự còn
lại là chữ thường
Ex :
Nhập : ngo phuoc nguyen
Xuất : Ngo Phuoc Nguyen
Nhập : VU tHanh hIEn
Xuất : Vu Thanh Hien

28. Viết chương trình tìm số hoàn thiện (giới hạn 2 chữ số) (hay còn gọi là số hoàn chỉnh, số hoàn hảo) là số
nguyên dương có tổng các ước số nguyên dương bé hơn nó bằng chính nó.). Xuất các số hoàn thiện từ số lớn
nhất đến số nhỏ.

Bài 6: Xử Lý Tập Tin

1. Viết chương trình sử dụng hàm 41h/ INT 21h để xóa tập tin trên đĩa. Tên tập tin cần xóa được nhập từ bàn
phím khi thực hiện chương trình. In thông báo xóa thành công hay không thành công lên màn hình.

2. Viết chương trình nhập 1 chuỗi từ bàn phím, sau đó ghép chuỗi nhận được vào cuối của nội dung tập tin
có trên đĩa. Tên tập tin nhập từ bàn phím khi chạy chương trình.

3. Viết chương trình nhập 1 chuỗi từ bàn phím, sau đó chèn chuỗi nhận được vào đầu của nội dung tập tin có
trên đĩa. Tên tập tin nhập từ bàn phím khi chạy chương trình.

4. Viết chương trình ghép nội dung 2 tập tin có sẳn trên đĩa thành 1 tập tin mới. Tên của các tập tin được
nhập từ bàn phím khi chạy chương trình.

5. Viết chương trình đọc nội dung tập tin trên đĩa, sau đó đổi tất cả ký tự HOA thành ký tự thường và lưu lại
vào tập tin đó. Tên tập tin phải được nhập từ bàn phím

6 Viết chương trình bằng hợp ngữ xóa một thư mục (rỗng) với tên thư mục được nhập từ
bàn phím. In thông báo xóa thành công hay không thành công lên màn hình.

BÀI TẬP 7 : NGÔN NGỮ C & HỢP NGỮ

1. Viết chương trình nhập vào một số nguyên N (0<N<256), hãy in ra N dưới các dạng: thập phân, nhị phân
và hexa. Yêu cầu chương trình được tổ chức như sau:
a. Dùng inline-assembly và C
b. Viết tách biệt module C và hợp ngữ

2. Viết chương trình nhập vào từ phàn phím hai số nguyên dương (0<x,y<256), hãy tính tổng hiệu, tích
thương của chúng rồi in ra màn hình. Yêu cầu chương trình được tổ chức như sau:
a. Dùng inline-assembly và C
b. Viết tách biệt module C và hợp ngữ

3. Lập chương trình thực hiện nhiệm vụ copy một file có kích thước tùy ý. Tên file nguồn và đích nhận vào
từ bàn phím. Thông báo lỗi ra màn hình. Yêu cầu chương trình được tổ chức như sau:
a. Dùng inline-assembly và C
b. Viết tách biệt module C và hợp ngữ

BÀI TẬP 8 : LẬP TRÌNH VỚI INTERRUPT

1. Viết chương trình thay ngắt 21h bằng ngắt 60h (ngắt dành cho người sử dụng)
2. Viết chương trình chặn hàm 8h ngắt 21h (hàm nhập ký tự từ bàn phím) để chuyển ký tự nhập vào từ
chữ thường à chữ hoa.
2b. Giống bài 2, nhưng chặn ngắt 1h !

3. Viết chương trình chặn hàm 1h ngắt 21h để nếu người sử dụng :
– Nhập vào <ký tự thường> + ‘1’ thì chuyển <ký tự thường> thành ký tự hoa, và ngược lại.
Nếu nsd bấm ‘1’ một lần nữa thì phục hồi lại thay đổi.

Ví dụ : nhập vào ‘A1’ , in ra ‘a’


nhập vào ‘a1’, in ra ‘A’
nhập vào ‘A11’, in ra A1
– - Nhập vào <ký tự hoa> + ‘1’ thì chuyển <ký tự hoa> thành ký tự thường.
• Nếu người sử dụng nhập tiếp ‘1’ thì phục hồi lại thay đổi trên ký tự trước đó
4. Viết chương trình sửa hàm 0Ah ngắt 21h (nhập chuỗi) cho phù hợp với chức năng xuất chuỗi của
hàm 9h (chuỗi kết thúc bằng ký tự ‘$’)
5. Viết chương trình sửa hàm 2h ngắt 21h sao cho luôn in ra ký tự hoa
6. Viết chương trình phục vụ ngắt 61h cho phép chuyển chuỗi thành chữ hoa hoặc thường:
Tham số vào : AH = 1, DX = Offset của chuỗi cần chuyển (chuỗi kết thúc bằng dấu ‘$’) : chuyển
chuỗi tại DX sang kiểu chữ hoa
Tham số vào : AH = 2, DX = Offset của chuỗi cần chuyển chuyển chuỗi tại DX sang kiểu chữ
thườngTham số vào : AH = 3, …

BÀI TẬP 9 : LẬP TRÌNH VỚI BÀN PHÍM

1. Viết chương trình thay tổ hợp phím Alt - F1 thành phím ‘A’
2. Viết chương trình bật/tắt đèn Num Lock mỗi khi người sử dụng gõ phím
3. Viết chương trình bật đèn Scroll Lock mỗi khi người sử dụng ấn phím, và tắt đèn khi người sử dụng
nhả phím
4. Viết chương trình thay phím F1 bằng phím A bằng cách chặn hàm 0h ngắt 16h
5. Viết chương trình lặp liên tục chuỗi ‘hello’ ra màn hình cho đến khi người sử dụng bấm phím Esc
6. Viết chương trình tự động bật tổ hợp các phím CapLock, Insert, NumLock

BÀI TẬP 10 : LẬP TRÌNH VỚI MÀN HÌNH

1. Không sử dụng ngắt, viết chương trình in ra trang 0 của màn hình chuỗi ABCD có màu vàng nhấp
nháy tại góc trên bên trái.
2. Viết chương trình xử lý ngắt 58 để in ra màn hình chuỗi ký tự màu như sau :
Tham số vào : DX chứa Offset chuỗi (kết thúc bởi ‘$’), AL chứa mã màu (0..15).
Tham số ra : Không

3. Tương tự bài 2, nhưng cho phép in chuỗi ra tại một tọa độ bất kỳ.
4. Viết chương trình chặn hàm 2h ngắt 21h để luôn in ra ký tự có màu đỏ, nền đen.
5. Viết chương trình chặn ngắt 9h để nếu người sử dụng gõ :
6. Alt – F1 : Hiển thị chuỗi “Hello” có màu vàng, nền trắng, nhấp nháy ra màn hình tại vị trí góc trên
bên trái.
7. Alt – F2 : Như câu a, nhưng hiển thị chuỗi Hello theo chiều đứng.
8. Alt – F3 : Đổi màu nền và màu chữ của toàn màn hình thành nền xanh dương, chữ vàng. Nếu bấm
Alt – F3 một lần nữa thì trả về màn hình cũ.
9. Alt – F4 : Hiển thị thời gian hiện tại của hệ thống lên góc trên bên phải màn hình (dùng hàm 2Ch
ngắt 21h để lấy thời gian)
10. Viết chương trình chặn ngắt 9 sao cho khi người sử dụng gõ :
11. Ctrl – 1 : Thay đổi hình dạng con trỏ thành con trỏ có kích thước lớn tối đa.
12. Ctrl – 2 : Thay đổi hình dạng con trỏ thành một vạch ở giữa.
13. Ctrl – 3 : Đưa con trỏ trở về trạng thái bình thường.
14. Viết chương trình cho một ký tự chạy trên màn hình từ trái qua phải, rồi ngược lại (Xem hàm 86h
ngắt 15h), cho đến khi gõ Alt – X thì kết thúc.
15. In ra màn hình 256 kí tự của bảng mã ASCII, mỗi kí tự có một thuộc tính khác nhau trong chế độ
text.
16. Vẽ một hình chữ nhật trong chế độ đồ họa VGA
17. Viết một điểm ảnh trực tiếp vào bộ nhớ hiển thị (không thông qua RAM).
18. Sử dụng các dịch vụ ngắt của BIOS phục vụ cho màn hình (ngắt 10h) trong chế độ đồ họa để vẽ ra
màn hình các hình sau:
a. Tam giác
b. Hình vuông
c. Hình tròn
d. Hình Parabol

BÀI TẬP 11 : LẬP TRÌNH VỚI TIMER

1. Viết chương trình hiển thị chuỗi “ngày/tháng/năm – giờ/phút/giây” ra màn hình tại vị trí con trỏ.

2. Viết chương trình chặn ngắt 09h để khi gõ Alt-A thì hiển thị chuỗi “ngày/tháng/năm – giờ/phút/giây”
tại vị trí góc trên bên trái màn hình có màu vàng, nền xanh dương, nhấp nháy.

3. Viết chương trình đặt lại thời gian hệ thống là ngày 11 tháng 9 năm 2001, thời gian là 10 giờ, 12
phút, 00 giây. Sử dụng bài tập 3 để kiểm tra.

4. Viết chương trình hiển thị chuỗi “giờ:phút:giây” có màu vàng tại dòng trên cùng của màn hình và
chuyển động từ bên trái màn hình sang bên phải và ngược lại.

5. Tương tự bài 5, nhưng trong khi chuyển động phải cập nhật lại thời gian sau mỗi giây.

6. Viết chương trình yêu cầu người sử dụng nhập vào một số n (từ 0 - 9). Sau đó đếm lùi n trở về 0, khi
n = 0 thì xuất hiện ra màn hình chuỗi “Good Bye !”

BÀI TẬP 12 : LẬP TRÌNH VỚI UART

1. Lập trình bằng hợp ngữ cho một Modem với các cấu hình như sau:
- 8 bít mã kí tự
- Tốc độ truyền 2400 bít/s
- Parity lẻ
- 2 bít stop
Biết rằng: Modem được nối vào cổng COM 3
Yêu cầu: Truyền ( hoặc nhận về ) 3 kí tự: a, b, 1

2. Lập trình để khởi tạo chế độ làm việc một mạch UART 8250A cho cổng COM2 với các thông số:
a. 6 bít mã kí tự truyền , tốc độ truyền 1200 bits/ giây, parity lẻ, hai bít stop.
b. 7 bít mã kí tự truyền , tốc độ truyền 9600 bits/ giây, parity chẵn 1.5 bít stop.

You might also like