- PCI (Peripheral Component Interconnect) Bus: Phiên bản đầu tiên của PCI Bus chạy ở tốc độ 33 Mhz và đường truyền dữ liệu 32 bit, hỗ trợ qua trình truyền
5. Các bài tập tổng hợp
CÁC BAØI TẬP CƠ BẢN
Bài 1: Sử dụng chương trình Debug, thực hiện các công việc sau: - Xem, thay đổi nội dung của các ô nhớ.
- Thao tác trên Sector của đĩa. - Tạo chương trình .COM
- Xem, thay đổi nội dung của các thanh ghi. - Chạy từng bước các lệnh trong chương trình… - Các chức năng khác.
Bài 2: Viết chương trình hiển thị thông báo “Programming In ASM” ra màn hình, chương trình ở dạng .EXE.
Bài 3: Viết chương trình hiển thị thông báo “Programming In ASM” ra màn hình, chương trình ở dạng .COM.
Bài 4. Viết chương trình copy 2000 lần giá trị 8f20h vào vùng nhớ có địa chỉ vật lý bắt đầu là b8000h.
Bài 5. Viết chương trình copy 2000 lần giá trị 0f20h vào vùng nhớ có địa chỉ vật lý b8000h. Bài 6. Viết chương trình đổi thuộc tính của 7 ký tự tại hành 4, cột 4 với thuộc tính chữ đen nền
trắng.
Bài 11.Viết chương trình xóa màn hình mà không dùng một ngắt nào, kể cả ngắt dùng để kết thúc chương trình.
Bài 12.Viết chương trình nhập một chuỗi vào vùng nhớ có địa chỉ đầu là buffer, sau đó chuyển sang chuỗi thường tương ứng rồi in ra màn hình. Giả sử chuỗi dài tối đa 100 ký tự. Bài 13.Viết chương trình copy chuỗi 1 có địa chỉ đầu là buffer1 vào chuỗi 2 có địa chỉ đầu là
buff2, biết rằng chiều dài tối đa của chuỗi là 100 ký tự, và các chuỗi kết thúc bằng ký tự ‘$;’.
Bài 14.Viết chương trình copy n ký tự đầu tiên của chuỗi 1 có địa chỉ đầu là buffer1 vào chuỗi 2 có địa chỉ đầu là buff2 với trị n nhập từ bàn phím dạng thập phân, biết rằng chiều dài tối đa của chuỗi (kể cả khi ghép) là 100 ký tự và các chuỗi kết thúc bằng ký tự ‘$’. Bài 15.Viết chương trình nhập 1 chuỗi vào vùng nhớ có địa chỉ đầu là buffer, sau đó đếm số
lần xuất hiện của ký tự a có trong chuỗi, in ra màn hình dạng thập lục phân. Giả sử chuỗi dài tối đa 100 ký tự.
Bài 16.Viết chương trình nhập vào một chuỗu rồi in ra chuỗi ngược tương ứng, giả sử chuỗi dài tồi đa 100 ký tự và không dùng stack.
Bài 17.Cho hai vùng nhớ có địa chỉ đầu lần lượt là mem1 và mem2, ký tự kết thúc chuỗi là ký tự ‘$’ viết chương trình hóan đổi nội dung của hai chuỗi này.
Bài 18.Viết chương trình nhập 1 chuỗi vào vùng nhớ có địa chỉ đầu là buffer, sau đó in ra vị trí xuất hiện đầu tiên của ký tự a (nếu co)ù trong chuỗi đếm, in ra màn hình dạng thập lục phân. Giả sử chuỗi dài tối đa 100 ký tự.
Bài 19.Viết chương trình hiển thị nội dung thanh ghi ax, cs của CPU ra màn hình dạng thập lục phân.
Bài 24. Viết chương trình hiển thị nội dung thanh ghi BX ra màn hình dạng thập lục phân.
Bài 25. Viết chương trình nhập giá trị 16 bit vào thanh ghi BX dạng nhị phân. Bài 26. Viết chương trình nhập giá trị 16 bit vào thanh ghi BX dạng thập phân. Bài 27. Viết lại chương trình trên nhưng với số có dấu.
Bài 28.Viết chương trình nhập một trị giá 16 bit vào màn hình dạng thập lục phân, sau đó in ra màn hình trị thập phân có dấu tương ứng.
Bài 29. Viết chương trình nhập giá trị 16 bit vào thanh ghi BX dạng thập lục phân. Bài 30.Viết chương trình chuyển đổi qua lại giữa các số hệ hai. mười và mười sáu.
Bài 31.Viết chương trình hiển thị nội dung của tất cả các thanh ghi trong CPU ra màn hình dạng thập lục phân.
Bài 32.Trong các CPU sau này của Intel có các thanh ghi 32 bit được mở rộng từ các thanh ghi 16 bit ( ví dụ thanh ghi AX sẽ có thanh ghi mở rộng tương ứng là EAX…) viết chương trình hiển thị nội dung của thanh ghi EBX ra màn hình dạng thập lục phân.
Bài 33.Viết chương trình so sánh hai số 16 bit nhập từ bàn phím, hiển thị kết quả ra màn hình. Bài 34.Viết chương trình cộng, trừ hai số 16 bit nhập từ bàn phím sau đó hiển thị kết quả ra
màn hình dạng thập phân.
Bài 35.Viết chương trình nhập một số thập phân N 16 bit từ bàn phím, sau đó in ra màn hình tổng 1 + 2 + ... + N.
Bài 40.Viết chương trình tìm số lớn nhất, nhỏ nhất trong ba số thập phân không dấu 16 bit nhập từ bàn phím.
Bài 41.Viết chương trình đổi một chuỗi ký tự có trị giá từ ‘0’ đến ‘9’ ra dạng thập phân. Với các lưu ý:
- Xử lý lỗi trong trường hợp số lớn hơn 16 bit (số có dấu).
- Xử lý trong tình huống có dấu trừ và không có dấu trừ phía trước.
Phần 2. CÁC BAØI TẬP NÂNG CAO
Bài 1. Viết chương trình tạo file có tên nhập từ bàn phím, có nội dung là “Toi đi hoc”. Bài 2. Viết chương trình xoá file có có tên nhập từ bàn phím.
Bài 3. Viết chương trình đọc file có tên nhập từ bàn phím, sau đó hiển thị ra màn hình.
Bài 4. Viết chương trình dời 7 ký tự tại vị trí hàng 5 cột 5 sang vị trí hàng 7 cột 7 trên màn hình.
Bài 5. Viết chương trình nhập vào một vị trí tọa độ gồm hai tham số hàng và cột, sau đó chuyển Cursor đến vị trí này.
Bài 6. Viết chương trình đổi nội dung của màn hình với các chũ thường thành chữ hoa. Bài 7. Viết chương trình cho một chữ rơi từ dòng đầu đến dòng cuối.
Bài 8. Viết chương trình đọc sector C: 0, H: 1, S: 2, của đĩa mềm. Hiển thị 8 byte đầu tiên dạng mã Ascii.
Bài 12.Viết chương trình mô phỏng lệnh dir của Dos.
Bài 13.Viết chương trình nhập vào tên của một file, sau đó kiểm tra File này có tồn tại trên đĩa không.
Bài 14.Viết chương trình nhập vào tên của một file trên đĩa mềm, sau đó kiểm tra File này có tồn tại trên đĩa không, nếu có thì hiển thị các Cluster mà file này chiếm.
Bài 15.Viết chương trình kiểm tra xem ổ đĩa C trên máy tính hiện tại (hoặc một đĩa cứng khác) đang dùng hệ thống file nào? (ví dụ FAT 12, FAT 16, FAT 32, NTFS…)
Bài 16.Viết chương trình thường trú hiển thị thời gian của máy tính ra màn hình. Bài 17.Viết chương trình giải mã lệnh MOV.
Bài 18.Viết chương trình thực hiện phép cộng, trừ cho hai số 32 bit nhập từ bàn phím và in ra kết quả nhưng chỉ dùng các thanh ghi 16 bit.
Bài 19.Viết chương trình thực hiện phép nhân, chia cho hai số 32 bit nhập từ bàn phím và in ra kết quả nhưng chỉ dùng các thanh ghi 16 bit.
Bài 20.Viết chương trình tìm USCLN của hai số thập phân không dấu 16 bit nhập từ bàn phím. Bài 21.Viết chương trình so sánh hai chuỗi có nội dung nhập từ bàn phím. Giả sử chuỗi dài tối
đa 100 ký tự.
Bài 22.Viết chương trình giống như phần kiểm tra password của BIOS, với PASSWORD được định nghĩa trước trong chương trình.
Bài 23.Viết chương trình hiển thị nội dung 256 byte của một vùng nhớ bất kỳ với địa chỉ đầu có dạng segment: offset được nhập từ bàn phím. Vùng bên trái hiển thị dạng Hexa và