Tải bản đầy đủ (.doc) (31 trang)

ĐỀ CƯƠNG ĐÁP ÁN LẬP TRÌNH HỆ THỐNG VÀ GHÉP NỐI THIẾT BỊ ASSEMBLY,ĐẦY ĐỦ CODE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (360.82 KB, 31 trang )

Mục lục
1
Câu 1:So sánh tốc độthực hiện của chương trình khi sử dụng chương trình con
khi khai báo là near và far trong Assembly?
NEAR: chương trình con được gọi thì địa chỉ offset(16 bit) được lấy từ ngăn xếp để
gán cho thanh ghi IP. Chương trình con và chương trình gọi nó trên cùng một
đoạn(segment).
FAR: thì chỉ lấy địa chỉ Segment offset trong ngăn xếp được lấy để gán cho thanh
ghi CS và IP. Chương trình con và chương trình chính trong các đoạn khác nhau.
 Như vậy khi sử dụng chương trình con khai báo near thì chương trình sẽ thực
hiện nhanh hơn.
Câu 2: phân biệt giữa file và thư mục con. Phân biệt điểm nhập file trong thư
mục và điểm nhập file trong FAT?
-Thư mục con: dưới mỗi thư mục gốc chứa các thu mục con và file trực thuộc.
trong thư mục con lại có thư mục con của nó là file trực thuộc nó. Mỗi thư mục con
chỉ có 1 tên duy nhất.
-File là nơi lưu trữ thông tin bao gồm dữ liệu, chương trình, văn bản…mỗi file có
một tên riêng phân biệt, bao gồm 2 phần: phần tên và phần mở rộng (.exe, .doc, .txt,
.iso, …).
*,Điểm nhập file trong thư mục:
Dos tạo một điểm nhập 32byte cho mỗi file trong thư mục. Cấu trúc mỗi điểm
nhập:
-07: Tên file, byte 0 dùng làm byte trạng thái
-8-10: Phần mở rộng
-11: Thuộc tính
-12-21: Để mở rộng
-22-23: Giờ tạo (h:m:s)
-25: Ngày tạo (y:m:d)
-26-27: Số hiệu cluster đầu tiên
28-31: Kích thước file theo byte
=> Vừa là địa chỉ cluster đầu tiên của file trong vùng dữ liệu vừa là số thứ tự của


điểm nhập của file trong bảng
2
FAT.
*,Điểm nhập file trong bảng FAT:
-FAT(File Allocation Table) là tạo ra bản đồ các file trên đĩa
-Bao gồm các điểm nhập cho file, kích thước của điểm nhập tuỳ thuộc vào từng loại
đĩa
-Nội dung điểm nhập trong bảng FAT:
+FFF chỉ đây số thứ tự của điểm nhập này là địa chỉ cluster cuối cùng của file
+,000 chỉ điểm nhập chưa sử dụng
+,000 < a < FFF thì a vừa chỉ địa chỉ cluster hiện tại vừa chỉ trạng thái của file sẽ
xem tiếp trong điểm nhập thứ a của bảng FAT
=>File sẽ không lưu trữ thành các cluster liên tiếp mà các cluster của file sẽ được
tham chiếu trong bảng FAT
3
Câu 3: Tính sốxung nhịp đồng hồphát ra của bộ đếm 0 trong 1 giây biết tần
sốcủa máy phát xung là 1,93 MHz và số đếm 500?
Số xung nhịp đồng hồ phát ra của bộ đếm 0 trong 1s là:
Fout=Fin/N=1,93*10^6/500=3860Hz.
Câu 4: phân biệt Macro và chương trình con?
-Macro và chương trình con cùng là một nhóm lệnh thực hiện 1 công việc
-Chương trình con đc gọi thông qua chỉ dẫn CALL trong khi macro đc chèn thẳng
vào ct tại vị trí chỉ định
-Macro thực hiện nhanh hơn chương trình con vì ko thông qua call mà thực hiện
trực tiếp như các asm khác,
-Thời gian biên dịch: Macro ít tốn thời gian biên dịch hơn procedure
-Thời gian thực hiện: Macro nhanh hơn chương trình con vì không tốn thời gian
khôi phục trạng thái thông tin khi được gọi.Kích thước : kích thước chương trình
dài hơn
Câu 5. Nhiệm vụcủa PIT (Programable Interval Timer) trong đồng hồ hệ

thống là gì
PIT: programmable Interval Timer: bộ đếm khoảng thời gian lập trình được.
Nhiệm vụ: đếm khoảng thời gian từ một thời điểm nào đó.
Trong họ PC-IBM, PIT 8253/8354 thường dùng để:
- Tạo xung đồng bộ hệ thống: cho xung định thời gian bởi bộ đếm 0 với lối ra
OUT0, lối vào từ máy xung nhịp.
- Tạo xung điều khiển ngắt để điều khiển việc làm tươi DRAM bởi bộ đếm 1.
- Tạo xung âm thanh ra loa hay báo thức bởi bộ đếm 2 với lối ra OUT0
4
Câu 6:Phân loại ngắt?
 Cách 1: Phân loại dựa vào việc kích hoạt ngắt: có ngắt cứng, ngắt mềm, ngắt
lôgic( ngoại lệ)
 Ngắt cứng: sử dụng làm phương pháp vào / ra dữ liệu, trong đó thiết bị vào /
ra (thiết bị vật lý: bàn phím, máy in , đồng hồ nhịp thời gian v.v ) chủ động
khởi động quá trình vào / ra. Quá trình phục vụ ngắt cứng được kích hoạt
bằng một tín hiệu vật lý từ bên ngoài.
 Ngắt mềm: là ngắt được kích hoạt bằng các chương trình để gọi các chương
trình con phục vụ ngắt thông qua chỉ thị INT.
 Ngắt lôgic(Ngoại lệ): là ngắt do chính CPU phát ra khi nó gặp lỗi. Ví dụ phép
chia cho 0, tràn bộ nhớ
 Cách 2: Theo sự nhận biết ngắt của CPU: ngắt che được và ngắt không che được
 Ngắt che được(Maskable): có thể thiết lập để CPU nhận biết hoặc không thể
nhân biết được ngắt dựa vào cờ IF. Nếu IF=1, CPU có thể nhận biết ngắt,
IF=0, CPU không thể nhận biết được; nghĩa là khi có yêu cầu ngắt CPU vẫn
làm việc bình thường
 Ngắt không che được( Non Maskable): CPU luôn nhận biết được khi có yêu
cầu ngắt, việc thiết lập cờ IF không ảnh hưởng gì
Câu 7:PIC 8259 sửdụng đểlàm gì. Nhiệm vụcủa các chân IR0, IR1, … IR7,
INTR, INTA của PIC 8259?
 PIC 8259 là một vi mạch điện tử khả trình được thiết kế để giúp CPU thực

hiện quá trình ngắt cứng. PIC 8259 thực hiện các chức năng sau:
− Ghi nhận được 8 yêu cầu ngắt IRQ
i ,
i = 0,1,2,….,7.
− Cho phép chọn và phục vụ các yêu cầu ngắt theo mức ưu tiên.
− Cung cấp cho CPU số ngắt tương ứng với yêu cầu ngắt IRQ
i
số ngắt
này đại diện cho địa chỉ của chương trình con phục vụ thiết bị yêu cầu
ngắt IRQ
i
− Cho phép hoặc không cho phép các yêu cầu ngắt IRQ
i
kích hoạt hệ
thống ngắt.
- Ngắt INTR:
+)Ngắt này cho phép khi IF=1, cấm ngắt khi IF=0 và thanh ghi flag
+)Được xoá về "0" bởi lệnh CLI (Clear interrupt).
+)Được xác lập lên "1"bởi STI
+)Thường được nối vào chân yêu cầu ngắt của mạch xử lý ưu tiên ngắt
(8214, 8259).
5
Câu 8: giả sử tần số máy phát xung không đổi muốn thay đổi âm thanh đầu ra
cần phải làm gì?
- Cùng một tần số của máy phát xung nhịp, muốn điều khiển tần số của máy
phát âm thanh cần phải thay đổi số đếm N trong bộ chia tần số (bộ đếm 2 của PIT
8253/8354).
Câu 9: Giảsử ổ đĩa có dung lượng 100KB trong đó 20KB dành cho bảng FAT,
Sector Boot và thưmục gốc. Kích thước mỗi Cluster là 10KB và trên đĩa có
đúng 8 file, mỗi file kích thước 5KB. Hỏi theo cách quản lý của DOS, ổ đĩa đã

đầy chưa; tính dung lượng ổ đĩa lãng phí?
Khi kích thước file nhỏ hơn Cluster, DOS vẫn dành cho file cả một Cluster.
Theo đề bài thì trên đĩa có 8 file chiếm 8 Cluster vậy dung lượng cần dung
cho 8 file này là 8*10=80 KB. 80+20=100 KB vậy theo cách quản lí của DOS
thì ổ đĩa đã đầy.
Dung lượng ổ đĩa lãng phí là: 80-8*5=40KB.
câu 10: bản chất địa chỉ ô nhớ là gì? Không gian địa chỉ vật lí của mỗi hệ thống
máy tính phụ thuộc vào cái gì?
- Coi các bộ nhớ như là ma trận vuông cấp n thì mỗi ô là một địa chỉ của ô
nhớ chính là thứ tự của ô nhớ.
- Địa chỉ của ô nhớ là chỉ số và thứ tự của ô nhớ được nhà sản xuất quy
định.
- Không phải lưu trữ vì địa chỉ ô nhớ được nhà sản xuất lưu trữ sẵn.
- Không gian địa chỉ vật lí của mỗi hệ thống máy tính phụ thuộc vào độ
rộng address bus
6
Câu 11: Mỗi file có bao nhiêu điểm nhập file trong thưmục. Giảsử1 file có kích
thước 155KB, biết kích thước một cluster là 10KB. Xác định dung lượng cần
thiết trên ổ đĩa đểlưu trữ file?
- Mỗi file có một điểm nhập file trong thư mục có kích thước 32byte.
- Vì kích thước của file nhỏ hơn kích thước 1 cluser nên ta chia file này
thành nhiều file nhỏ có kích thước nhỏ hơn hoặc bằng cluser. Ở đây chia
file thành 15 file có kích thước mỗi file là 10KB và một file còn lại có kích
thước 5 KB. Vậy cần phải dùng 16 cluser do đó dung lượng cần thiết trên ổ
đĩa để lưu trữ file là 16*10=160 KB.
Câu 12: Phân biệt đơn vị lưu thông tin giữa ổ đĩa và RAM?
- -Ổ đĩa:Thông tin tổ chức trên các mặt đĩa theo các rãnh, rãnh được chia
thành các cung.
- Dung lượng đĩa = số mặt * số rãnh trên một mặt * số cung trên một rãnh *
số byte trên một cung.

- Loại thiết bị này bắt buộc máy tính phải di chuyển cơ học một cách tuần tự
để truy cập dữ liệu.
- -RAM: được tổ chức từ các ô nhớ. Mỗi ô nhớ có một địa chỉ. Bộ nhớ trong
RAM được đặc trưng bằng dung lượng và tổ chức bộ nhớ của nó (số ô nhớ,
số bit cho mỗi ô nhớ).
Câu 13: Phân biệt giữa thanh ghi chỉ số, thanh ghi dữ liệu và tập thanh ghi
nội của đồng hồ thời gian thực dùng chip MC146818
- Đồng hồ thời gian thực sử dụng chip MC146818 gồm:
+ Thanh ghi dữ liệu (địa chỉ 71h), thanh ghi chỉ số (địa chỉ 70h, chứa
số hiệu của mỗi thanh ghi nội) đóng vài trò cổng giao diện cho phép
MC146818 liên lạc với môi trường bên ngoài
+ Tập thanh ghi nội: gồm 64 thanh ghi, chứa dữ liệu và thông tin trạng
thái, điều khiển của MC146818
14. Khi sửdụng chức năng 43h của ngắt 21h đểthay đổi thuộc tính của file, cho
biết dấu hiệu kết thúc xâu chứa tên file là gì (Xâu chứa tên file có
segment:offset = DS:DX).
Dấu hiệu kết thúc xâu chứa tên file là byte 0
7
Câu 15: Giảsửtrong bảng FAT có 1000 phần tử, trong đó có 100 phần tửcó giá
trịlà 0. Tính số lượng cluster trống, sốlượng cluster đã sửdụng?
100 phần tử 0 => số cluster trống =100
số cluster còn lại = 1000-100=900
Câu 16. Khi sử dụng chức năng 0Ah của ngắt 21h để đọc vào một xâu lưu trữ
tại địa chỉ segment:offset = DS:DX. Ngay sau đó sử dụng chức năng 09h của
ngắt 21h để in ra xâu vừa nhập vào mà không thay đổi vùng nhớ chứa xâu đã
nhập.Cho biết kết quả. Giải thích
Khi sử dụng chức năng 0Ah của ngắt 21 thì đầu vào của chuỗi được đặt ở địa
chỉ DS:DX, trong đó byte đầu tiên chứa kích thước , byte thứ 2 chứa số các kí tự
được đọc vào và khi in ra thì phải bắt đầu từ địa chỉ DS:DX+2. Như vậy muốn
in chính xác chuỗi đã nhập thì phải thay đổi vùng nhớ là tăng địa chỉ offset lên

2. Ví dụ: địa chỉ bắt đầu của chuỗi tại offset 56 thì sẽ bắt đầu in chuỗi từ vị trí
58.
Chức năng 09h của ngắt 21 sẽ in chuỗi cho đến khi gặp kí tự kết thúc $ thì
dừng lại nhưng ở đây khi nhập vào chức năng 0Ah k thể tự đống thêm kí tự $.
Như vậy không thể in ra chuỗi vì 2 lí do: thiếu kí tự kết thúc chuỗi($) và vùng
nhớ chứa xâu không thay đổi.
Câu 17. Sử dụng bộ đếm 2 của PIT (Programable Interval Timer) để tạo âm
thanh, tính min, max của số đếm N sao cho âm thanh tạo ra có thể nghe được
biết ngưỡng nghe của người từ 16Hz đến 20000Hz và tần số máy phát xung là
1GHz

- Ta có : f(out)=16Hz-20000Hz và f(máy phát xung)=1GHz
 N(min)=10^9/16=62500000
 N(max)=10^9/20000=50000
8
Câu 18: Cho biết ổ đĩa mềm có dung lượng chưa sửdụng là 100KB, kích thước
mỗi cluster là 2 sectors, kích thước mỗi sector là 7.5KB. Cho một file có kích
thước 95KB. Hỏi có thể lưu trữfile này trên ổ đĩa mềm không. Giải thích
- Cluster là đơn vị lưu trữ lôgic nhỏ nhất. Mỗi file được chia thành
các đơn vị lưu trữ lôgic nhỏ hơn là cluster. Một file có ít nhất một
cluster
- Do đó không thể lưu trữ file trên đĩa mềm
o Kích thước một cluster = 2*7.5KB
o Số cluster cần thiết để lưu trữ file = [95/15] = 7
o Số cluster còn trống = lấy cận dưới (100/15) = 6
Câu 19. Trong chương trình sử dụng nhiều Macro có ảnh hưởng đến tốc độ
thực hiện không. Giải thích
Nếu trong chương trình sử dụng nhiều Macro thì nó sẽ không ảnh hường tới tốc độ
thực hiện bởi vì macro là tên thay thế cho một nhóm các câu lệnh có nhiều đoạn mã
giống nhau trong một chương trình , nó được chèn thẳng vào chương trình tại vị trí

chỉ định và thực hiện trực tiếp như các asm khác chứ không thông qua chỉ dẫn
CALL.
Câu 20. Trong chương trình sử dụng nhiều chương trình con có ảnh hưởng
đến tốc độ thực hiện của chương trình không. Giải thích?
Trong chương trình sử dụng chương trình con có ảnh hưởng tới tốc độ thực hiện
chương trình. Bởi vì khi gọi chương trình con, có sự chuyển điều khiển nên khi bắt
đầu chương trình con phải lưu lại trạng thái, trạng thái của chương trình gọi; khi kết
kết thúc phải phục hồi trạng thái, trạng thái chương trình chính và trả điều kiện cho
chương trình chính.
9
Câu 21. Trang màn hình là gì, kích thước trang màn hình là phụ thuộc cái gì?
Biết RAM màn hình có kick thước 32KB,màn hình trong chế độ văn bản có độ
phân giải 25x40,để biểu diễn một ký tự trong chế độ này cần 2byte.Tính số
trang màn hình tối đa.
- Trang màn hình thực chất là một trang nhớ RAM màn hình. Màn hình chỉ hiển
thị được một lượng thông tin nhất định của một trang nhớ trong RAM màn hình.
- Tuỳ loại card màn hình khác nhau mà độ phân giải khác nhau, dung lượng bộ
nhớ đệm khác nhau => số trang màn hình khác nhau.
- Số lượng trang MH = Kích thước RAMMH/Kích thước hiển thị(tuỳ thuộc vào
độ phân giải và chế độ)
- Kích thước trang màn hình là phụ thuộc vào card màn hình và chế độ hiển thị.
Biết RAM màn hình có kick thước 32KB,màn hình trong chế độ văn bản có độ phân
giải 25x40,để biểu diễn một ký tự trong chế độ này cần 2byte.Tính số trang màn
hình tối đa.
Ta có:
- kích thước lượng thông tin hiển thị là: 25x40x2=2000(byte)
- Số lượng trang màn hình tối đa: 32x1024:2000 xấp xỉ 16 trang.
10
Câu 22.Phân biệt số hiệu ngắt,vectơ ngắt,bảng vectơ ngắt, chương trình con
phục vụ ngắt.Mô tả tiến trình thực hiện khi ngắt xảy ra.

 Có 256 ô, các ô được đánh số thứ tự từ 00h, 01h, …FFH.Số thứ tự của
từng ô trong bảng được gọi là số hiệu ngắt
 Nội dung mỗi ô chứa địa chỉ logic của một chương trình phuc vụ ngắt
xác định, các địa chỉ này còn được gọi là véc tơ ngắt .Vector ngắt là các
biến bộ nhớ dài 4 bytes mà có khả năng chứa được một địa chỉ lôgic đầy
đủ gồm 2 byte segment và 2 byte offset
 Các vector ngắt được xếp nối tiếp nhau kể từ đầu của vùng bộ nhớ tạo
thành bảng vector ngắt .Chiều dài của bảng vector ngắt là 256*4=1024
hay 400h. Bảng vector ngắt sẽ nằm trong vùng bộ nhớ có địa chỉ vật lý
từ 00000h đến 003FFh
Quá trình phục vụ ngắt là quá trình gọi và thực thi các chương trình con phục vụ
ngắt( Interup Routines)
 Các chương trình phục vụ ngắt đều có đặc điểm: Hầu hết đã được viết
sẵn (là các ctr của hệ điều hành )và Địa chỉ của các ctr con này phải
được đặt ở một vùng nhớ xác định gọi là bảng véc tơ ngắt
Mô tả tiến trình thực hiện khi ngắt xảy ra.
 Tiến trình ngắt:
1. Công việc chính đang thực hiện
2. Lưu trữ trạng thái CPU và địa chỉ trở về của ctr chính (trạng thái CPU
được quy định bởi giá trị trong tập thanh ghi của CPU). Yêu cầu ngắt.
3. Thực hiện chương trình con phục vụ ngắt
4. Khôi phục trạng thái ctr chính
5. Tiếp tục thực hiện ctr chính
11
Câu 23: Mô tả quá trình hoạt động của máy từ khi bắt đầu nhấn nút bật máy
đến khi nạp xong hệ điều hành. Tại sao Boot sector luôn được nạp vào địa chỉ
7C00h?
1. Mô tả quá trình hoạt động của máy từ khi bắt đầu nhấn nut bật máy đến khi
nạp xong hệ điều hành.
- sau khi nguồn được cung cấp cho máy tính.

- CPU tiến hành đọc hệ thống ROM BIOS để bắt đầu khởi động chương trình
BIOS
- Tiến hành kiểm tra các thiết bị cơ bản nhất trên hệ thống để xem tình trạng
của các thiết bị này sẵn sàng chưa (RAM, HDD, VGA, chipset, mainboard).
- BIOS tìm kiếm video card được xây dựng trong chương trình BIOS và chạy
nó.
- BIOS tìm kiếm thiết bị khác của ROM (IDE/ATA)
- BIOS bắt đầu tìm kiếm ổ đĩa khởi động (floppy disk hoặc hard disk hoặc CD-
ROM…)
- BIOS tìm kiếm thông tin boot để bắt đầu tiến trình boot hệ điều hành sử dụng
thông tin trong boot sector. Bao gồm các file: io.sys, msdos.sys,
command.com được nạp lên RAM trong quá trình khởi động máy tính.
2. Tại sao Boot sector luôn được nạp vào địa chỉ 7C00h?
- Khi boot phải nạp vào vùng nhớ có địa chỉ bắt đầu là 07C00h vì 07C00h là
vùng nhớ mặc định của Master boot. Khi boot ROM trên BIOS khởi động nó
sẽ copy hệ điều hành trên RAM tại đại chỉ của Master boot record. Sau khi
copy lên nó sẽ trao quyền điều khiển cho hệ điều hành mới.
12
Câu 24.Phân biệt chương trình dịch ra dạng COM và dịch ra dạng EXE.tại
sao với chương trình dịch ra dạng EXE đầy đủ đã có chỉ thị Assume chỉ dẫn
nạp địa chỉ đoạn dữ liệu vào thanh DS mà trong chương trình vẫn phải nạp lại
địa chỉ đoạn dữ liệu vào thanh DS.
• Phân biệt:
1. Dạng COM:
- Chỉ dùng một đoạn duy nhất, các thanh ghi CS, DS, ES và SS đều có giá trị
giống nhau.
- Kích thước chương trình tối đa là 64K.
- Tập tin COM được nạp vào bộ nhớ trong và thực hiện nhanh hơn tập tin EXE.
- Khi DOS thực hiện tập tin COM, nó tạo một vùng ô nhớ từ độ dời 0 đến
0FFh để chứa thông tin cần thiết cho DOS. Vùng này gọi là vùng PSP prefix)

và tất cả các thanh ghi đoạn đều phải chỉ tới vùng PSP này. Vì thếđịa chỉ bắt
đầu của tập tin COM phải có địa chỉđộ dời là 100h.
2. Dạng EXE:
- Chương trình lớn và nằm ở nhiều đoạn khác nhau.
- Có thể gọi các chương trình con dạng Far.
- Kích thước tập tin tùy ý.
- Có header ởđầu tập tin để chứa các thông tin điều khiển cần thiết.
- Thi hành chậm hơn tập tin dạng COM.
- Tập tin dạng EXE, không dùng lệnh ORG 100h ởđầu chương trình.
• Tại sao với chương trình dịch ra dạng EXE đầy đủ đã có chỉ thị Assume chỉ
dẫn nạp địa chỉ đoạn dữ liệu vào thanh DS mà trong chương trình vẫn phải
nạp lại địa chỉ đoạn dữ liệu vào thanh DS :
Assume: lệnh này cho biết một đoạn nào đó thuộc loại gì. Ví dụ: assume
ds:data, cs:code dùng để báo cho hợp ngữ biết đoạn có tên data là đoạn ds và
đoạn có tên code là đoạn cs và như vậy mỗi lần liên hệ đến một nhãn, biến thì
ta phải báo cho biết đoạn của chúng (vd : assume ds :nhan cho biết nhan thuộc
đoạn ds)
Vì vậy khi khai báo assume thì chỉ cho biết cái đoạn mình khai báo
thuộc CS,DS,SS,ES nên trong đoạn chương trình ta phải nạp địa chỉ đoạn dữ
liệu vào thanh ghi DS thông qua AX.
13
Câu 25. Bản chất của việc lập trình trao đổi thông tin giữa CPU và khối ghép
nối thiết bị là gì. Trình bày nguyên lý lập trình điều khiển thiết bị ngoại vi
thông qua khối ghép nối, minh hoạ bằng việc mô tả hoạt động lập trình trực
tiếp bàn phím
TL: ????
Bản chât là trao đổi thông tin giữa mỗi chip của khối ghép nối luôn đăcn trưng bởi
tập lệnh và các thanh ghi giao diện (thanh ghi trạng thái, lệnh, dữ liệu). CPU muốn
ra lệnh cho khối ghép nối thực hiện công việc chỉ cần đưa chỉ thị ra địa chỉ thanh
ghi lệnh (của khối ghép nối) muốn trao đổi thông tin cần đọc ghi từ địa chỉ thanh

ghi dữ liệu
VD: tiến trình lập trình bàn phím trực tiếp:
+ PC AT được trang bị bộ điều khiển là vi xử lí 8042 với cổng sau
- Cổng 60h: là cổng dữ liệu, sử dụng để ghi mã từ phím hoặc từ CPU.
CPU phải đưa lệnh đọc cổng INAL,60h để biết phím nào được nhấn.
- Cổng 60h là cổng điều khiển và trạng thái với các lệnh từ CPU.
- Thao tác chủ yếu:
+ trao đổi dữ liệu.
+ Gán địa chỉ cổng cho thanh ghi DX.
+ Đọc trạng thái phím(vào AL) IN AL,64h
+ kiểm tra và trờ trạng thái sẵn sàng của bàn phím.
Câu 26: Ngắt 1Ah của BIOS có chức năng 05h đểthiết lập ngày/tháng/năm
hiên tại là 1/1/2010.
Xác định tham sốvào cho các thanh ghi CH, CL, DH, DL.
TL:
CH= 0010 0001 (thế kỷ theo BCD);
CL= 0001 0000 (năm theo BCD);
DH= 0000 0001 (tháng theo BCD);
Dl= 0000 0001 (ngày theo BCD);
14
Câu 27: . Cho bảng FAT như hình dưới đây:
Biết điểm nhập của một file nào đó trong một thư mục cho biết chỉ số cluster
đầu tiên của file là 1. Cho biết chuỗi cluser được phân bố cho file này. Biết
dung lượng một sector là 512 byte, mỗi cluster gồm 10 sector, tính dung lượng
của file trên.
Chuỗi cluser phân bố cho file này: : 1-3-4-2-6-9-7-FF (8 cluster tất cả)
-tính dung lượng của file trên.(8 * 10 * 512) byte
Câu 28. Bản chất quá trình chuyển điều khiển chương trình là gì. Mô tả trạng
thái hiện thời của CPU (kiểm tra lại bản chất, tự chém)
- Trạng thái hiện thời của CPU :Chính là các giá tri hiện thời thuộc tập thanh ghi

của CPU đó.
- Bản chất của quá trình chuyển điều khiển chương trình: CPU lưu lại trạng thái
hiện thời của thanh ghi vào ngăn xếp -> nạp giá trị mới là địa chỉ mã lệnh đầu tiên
của chương trình con . Sau khi thực hiện xong sẽ quay lại chương trình chính( nạp
lại giá trị ở ngăn xếp)
Câu 29. Giả sử ổ đĩa có dung lượng 1000KB trong đó 200KB dành cho bảng
FAT, Sector Boot và thư mục gốc. Kích thước mỗi Cluster là 100KB. Theo
cách quản lý của DOS, tính số lượng tối đa các file có thể lưu trữ trên ổ đĩa
TL:
Dung lượng dành cho phần data là: 1000-200= 800 kb
 Số file tối đa có thể lưu trữ trên ổ đĩa : 800: 100= 8 ( file).
15
Câu 30. Mô tả quá trình nhận dữ liệu giữa thiết bị ngoại vi và máy vi tính
theo chế độNibble ở hình dưới đây:
TL: Các giai đoạn nhận dữ liệu giữa TBNV và MVT:
1-máy chủ báo sẵn sàng nhận bằng cách đưa hostbusy về 0
2-TBNV đặt nibble đầu tiên lên các tín hiệu trạng thái
3-TBNV báo nibble có giá trị bằng cách đặt PtrClk=0
4-Máy chủ đưa hostbusy =1 báo đã nhận nibble và chưa sẵn sàng nhận nibble
mới
5-TBNV đưa PtrClk =1 để báo cho máy chủ
6- các bước 1-5 lặp lại cho nibble sau
Câu 31. Biết tần số của máy phát xung là 1GHZ, tính tần số của đồng hồ hệ
thống khi số đếm N = 1000. Mô tả hoạt động của bộ đếm 1 và xác định chu kỳ
làm tươi DRAM của bộ đếm 1 trong PIT (Progamable Interval Timer) khi số
đếm N = 100(phần tính chu kỳ làm tươi cần xem lại)
TL:
-Tần số của đồng hồ hệ thống:
Fout= Fin/N= 10^9: 1000= 1 MHz
-Hoạt động của bộ đếm 1:

-Làm tươi bộnhớ: PIT nối với chip DMAC dùng làm tươi bộ nhớ DRAM. Bộ đếm
1 sẽ định kỳ kích hoạt kênh 0 của DMAC-8237A để tiến hành 1 chu trình đọc giả
làm tươi bộ nhớ. Bộ nhớ hoạt động trong chế độ 3 phát sóng vuông với giá trị
nạp ban đầu là N=100. Do đó sóng vuông được phát ra có tần số1GHz/100= 10^7
Hz (chu kỳbằng 1.10^-7s). Như vậy cứ sau 0.1μs cạnh dương của sóng vuông này
sẽ tạo 1 chu kỳ đọc giả để làm tươi bộ nhớ.
16
Câu 32. Mô tả quá trình chuyển dữ liệu từ thiết bị ngoại vi vào máy vi tính
theo chế độ byte như hình dưới đây:
TL: Mô tả:
1-Máy chủ báo sẵn sàng nhận bằng cách đưa hostbusy = 0
2-TBNV đặt byte đầu tiên lên đường dữ liệu
3-TBNV báo byte có giá trị bằng cách đặt PtrCLk= 0
4-Máy chủ đặt hostbusy= 1 => báo đã nhận được byte ,chưa sẵn sàng nhận byte tiếp
theo
5-TBNV đưa PtrClk = 1 để báo cho máy chủ, máy chủ đưa HostClk = 1 để trả lời
6- lặp lại từ 1-5 cho byte sau
17
Câu 33. Với CPU 8086/8088, giả sử bảng vector ngắt bắt đầu từ 00000, tính địa
chỉ vật lý của vector ngắt của ngắt 8 (hình dưới). Giải thích cách tính.
Địa chỉ vật lý của ngắt 8:
Số ngắt * 4= 8 x 4= 00020 h
Giải thích: Số ngắt chỉ thứ tự của vecto ngắt và mỗi vecto ngắt chiếm 4 byte hay
bốn ô trong bảng vecto ngắt => địa chỉ vecto ngắt bằng số ngắt * 4
Câu 34. Với CPU 8086/8088, cho biết cách chuyển từ địa chỉ lôgic
(segment:offset) sang địa chỉ vật lý. Giải thích cách chuyển (kiểm tra lại phần
giải thích)
TL: đc vật lý = segment*16 + offset
Hoặc dịch trái địa chỉ segment 4 bit + địa chỉ offset
Giải thích: vì bộ nhớ được chia làm các đoạn (segment) , trong mỗi đoạn các ô nhớ

được xác định bằng địa chỉ tương đối (offset) hay là khoảng cách từ ô nhớ đến địa
chỉ đầu của đoạn. Mà địa chỉ vật lý là địa chỉ xác định vị trí thực của 1 ô nhớ => ta
chuyển từ địa chỉ logic sang địa chỉ vật lý như công thức trên.
18
Câu 35. Ngắt 1Ah của BIOS có chức năng 04h sử dụng để lấy thời gian thực.
Sau khi thực hiện chức năng này, các tham số ra như sau: CH=00100011,
CL=00110011, DH=00010010, DL=00000011. Cho biết ngày, tháng, năm hiện
tại.
TL: các thanh ghi chứa giá trị thế kỷ, năm , ngày , tháng theo mã BCD nên:
CH = 0010 0011 và CL= 0011 0011 => năm : 2233
DH= 0001 0010 => tháng: 12
DL= 0000 0011=> ngày: 3
Ngày tháng năm hiện tại : 3-12-2233
Câu 36. Mô tả hoạt động của bàn phím. Ngắt 09h do CPU hay chip bàn phím
thực hiện. Bộ đệm bàn phím (typehead buffer) chứa trong bàn phím hay trong
RAM
TL:
-Hoạt động:
Khi nhấn một phím và chương trình thi hành đang đọc nó; tiến trình như sau:
1. Bàn phím gửi ngắt 09h đến CPU yêu cầu trao đổi tin
2. Chương trình phục vụ ngắt 09h đọc từ cổng vào/ra và chứa vào trong bộ đệm.
3. Chương trình hệ thống hoặc ứng dụng có thể sử dụng các ngắt của hệ điều
hành để đọc các giá trị này
-Bộ đệm bàn phím (type head buffer ) chứa trong bàn phím.
-Ngắt 09h do CPU thực hiện.
19
Bài 1. Ẩn hiện file
inxau macro x
mov ah,09h
lea dx,x

int 21h
endm
.model small
.stack 100h
.data
FileName db 'D:\Test.txt',0
b1 db 10,13,"nhap ky tu $"
b2 db 10,13,"file da duoc an $"
b3 db 10,13,"file da duoc hien $"
.code
mov ax,@data
mov ds,ax
nhap:
inxau b1
mov ah,01h
int 21h
cmp al,'t'
je tao
cmp al,'T'
je tao
cmp al,'e'
je thoat
cmp al,'E'
je thoat
cmp al,'H'
je an
cmp al,'h'
je an
cmp al,'S'
je hien

cmp al,'s'
je hien
cmp al,'x'
je xoa
cmp al,'X'
je xoa
jmp nhap
tao:
mov ah,3ch
lea dx,FileName
mov cx,00h
int 21h
20
mov bx,ax
mov ah,3eh
int 21h
jmp nhap
xoa:
mov ah,41h
lea dx,FileName
int 21h
jmp nhap
hien:
mov ah,43h
mov al,1
lea dx,FileName
mov cx,0
int 21h
inxau b3
jmp nhap

an:
mov ah,43h
mov al,1
lea dx,FileName
mov cx,2
int 21h
inxau b2
jmp nhap
thoat:
mov ah,4ch
int 21h
end
21
Bài 2. Trạng thái chuột
inxau macro x
mov ah,09h
lea dx,x
int 21h
endm
.model small
.stack 100h
.data
b1 db 10,13,"chon trang thai
chuot$"
b2 db 10,13,"ban da an chuot
phai$"
b3 db 10,13,"ban da an chuot
trai$"
b4 db 10,13,"hai phim chuot duoc
nhan$"

.code
main proc
mov ax,@data
mov ds,ax
mov ax,00h
int 33h
inxau b1
batdau:
mov ax,03h
int 33h
cmp bx,01h
jz an
cmp bx,02h
jz hien
cmp bx,03h
jz cahai
jmp batdau
hien:
mov ax,01h
int 33h
inxau b2
jmp batdau
an:
mov ax,02h
int 33h
inxau b3
jmp batdau
22
cahai:
inxau b4

jmp ket
ket:
mov ah,4ch
int 21h
endp
end
23
Bài 3. Vẽ đường thẳng
print macro ms
lea dx,ms
mov ah,09h
int 21h
endm
.model small
.stack 100h
.data
menu db "menu chuc nang:$"
so1 db 10,13,"nhan so 1 de ve
duong thang$"
so2 db 10,13,"nhan so 2 de ve
hinh chu nhat$"
so3 db 10,13,"nhan so 3 de ket
thuc$"
so4 db 10,13,"xin moi ban chon
menu chuc nang:$"
.code
mov ax,@data
mov ds,ax
print menu
print so1

print so2
print so3
batdau:
print so4
mov ah,01h
int 21h
cmp al,'1'
je veduongthang
cmp al,'2'
je vehinhchunhat
cmp al,'3'
je ketthuc
jmp batdau
veduongthang:
mov ah,00h
mov al,13h
int 10h
mov cx,100
mov dx,100
mov ah,0ch
mov al,04h
lap:
int 10h
inc cx
cmp cx,200
24
jl lap
jmp batdau
vehinhchunhat:
mov ah,00h

mov al,13h
int 10h
mov cx,100
mov dx,100
mov ah,0ch
mov al,04h
canh1:
int 10h
inc cx
cmp cx,200
jl canh1
canh2:
int 10h
inc dx
cmp dx,150
jl canh2
canh3:
int 10h
dec cx
cmp cx,100
jg canh3
canh4:
int 10h
dec dx
cmp dx,100
jg canh4
jmp batdau
ketthuc:
mov ah,4ch
int 21h

end
25

×