You are on page 1of 4

VIỆN ĐIỆN TỬ VIỄN THÔNG

BỘ MÔN ĐIỆN TỬ VÀ KTMT


-------------------------------
MÔN HỌC: KỸ THUẬT VI XỬ LÝ
Học kỳ: 2 Năm học: 2017-2018

BÀI TẬP VỀ NHÀ SỐ 2

Bài 1 (30 điểm)


Cho AX=0000H, SS=1200H, DS = 041EH, BP = 1A2CH, SI = 03CFH và số
3100H. Hãy viết các lệnh MOV sử dụng các thanh ghi và số đã cho ở các
chế độ địa chỉ sau:
- Gián tiếp thanh ghi
- Tương đối chỉ số
- Tương đối cơ sở
- Tương đối cơ sở chỉ số
Tính địa chỉ vật lý của ô nhớ được truy cập trong mỗi trường hợp.
Bài làm
- Gián tiếp thanh ghi:
MOV [SI], AX : copy nội dung của AX vào ô nhớ có địa chỉ DS: SI
 [SI]= 0000H
MOV AX, [SI]: copy nội dung của ô nhớ có địa chỉ DS: SI vào AX
 AX= 03CFH
- Tương đối chỉ số
MOV AX, [SI] + 3100H: copy nội dung của 2 ô nhớ liên tiếp có địa
chỉ DS: SI + 3100 và DS: SI+3101 vào AX
MOV [SI] + 3100H, AX: copy nội dung của AX vào 2 ô nhớ liên tiếp
có địa chỉ DS: SI + 3100 và DS: SI+3101
- Tương đối cơ sở
MOV AX, [BP] + 3100H: copy nội dung của 2 ô nhớ liên tiếp có địa
chỉ SS: BP+ 3100 và SS: BP + 3101 vào thanh ghi AX.
MOV [BP] +3100H, AX : copy nội dung của thanh ghi AX vào 2 ô
nhớ liên tiếp có địa chỉ SS: BP+ 3100 và SS: BP + 3101
- Tương đối chỉ số cơ sở
MOV AX, [BP] + [SI]+ 3100H ; copy nội dung của 2 ô nhớ liên tiếp
có địa chỉ SS:BP+SI+3100 và SS: BP+SI+3101 vào thanh ghi AX
MOV [BP]+[SI]+3100H, AX; copy nội dung của thanh ghi AX vào 2
ô nhớ liên tiếp có địa chỉ SS:BP+SI+3100 và SS: BP+SI+3101.
Bài 2 (20 điểm)
Dịch từ đoan mã máy sau sang hợp ngữ biết rằng đoạn mã máy được biểu
diễn bằng số hexa và các byte được sắp xếp từ trái sang phải theo chiều tăng
dần của địa chỉ bộ nhớ của các ô nhớ chứa đoạn mã máy.
8B45058BA834128B1F
Bài làm:
Chuyển mã máy sang hệ nhị phân được:
1000 1011 0100 0101 0000 0101 1000 1011 1010 1000 0011 0100 0001
0011 1000 1011 0001 1111
 Xét đoạn mã 1000 1011 0100 0101 0000 0101
- Opcode 100010 => MOV
- D=1 dữ liệu đi đến thanh ghi
- W=1 dữ liệu 2 byte
- MOD= 01 dịch chuyển 8 bit
- REG= 000 => thanh ghi AX
- R/M= 101 địa chỉ DS:[DI]
 Lệnh: MOV AX, [DI +05H]
 Xét đoạn mã 1000 1011 1010 1000 0011 0100 0001 0011
- Opcode 100010 => MOV
- D=1 dữ liệu đi đến thanh ghi
- W=1 dữ liệu 2 byte
- MOD= 10 dịch chuyển 16 bit
- REG= 101 => thanh ghi BP
- R/M= 000 => địa chỉ DS:[BX+SI]
 Lệnh: MOV BP,[BX+SI+3412H]
 Xét đoạn mã 1000 1011 0001 1111
- Opcode 100010 => MOV
- D=1 dữ liệu đi đến thanh ghi
- W=1 dữ liệu 2 byte
- MOD=00 không có dịch chuyển
- REG=011 => thanh ghi BX
- R/M= 111 => địa chỉ DS:[BX]
 Lệnh MOV BX, [BX]
Bài 3 (30 điểm)
Cho DS=1000H, SI=03CFH, DI=0002H, SS=1200H, CS=19AE, IP=0005,
CX=1234H
Trình bày chi tiết hoạt động của bộ vi xử lý 8086 theo 3 bước thực hiện lệnh
khi 8086 thực hiện lênh 898C0030 biết rằng lệnh này được lưu trữ tại địa
chỉ bắt đầu bằng 19AE:0005:
- Chỉ rõ tại từng bước vi xử lý phát ra tín hiệu địa chỉ nào? Tín hiệu
điều khiển nào? Các thanh ghi nào được tác động và giá trị của chúng
thay đổi thế nào? Ô nhớ nào được truy cập? Nội dung của các ô nhớ
thay đổi thế nào?
Bài làm:
Ta có lệnh 898C0030 chuyển sang hệ nhị phân được:
1000 1001 1000 1100 0000 0000 0011 0000
- Ta có opcode: 100010 => MOV
- D=0 dữ liệu đi từ thanh ghi
- W=1 dữ liệu 2 byte
- MOD= 10 dịch chuyển 16 bit
- REG=001=> thanh ghi CX
- R/M=101 => địa chỉ DS:[SI]
Lệnh: MOV [SI]+0300H,CX; copy nội dung của thanh ghi CX vào 2 ô
nhớ liên tiếp có địa chỉ DS: SI+0300 và DS: SI+0301
Chi tiết hoạt động của bộ vi xử lí 8086 sử dụng các lệnh trên:
Bước 1:Nạp lệnh
- Vi xử lý đọc CS ,IP từ thanh ghi đoạn và con trỏ lệnh đưa vào bộ cộng
∑ và tính ra địa chỉ lệnh tiếp theo có ô địa chỉ vật lý là CS:IP hay
19AE5H .
- Vi xử lý phát địa chỉ lệnh tính được theo đường bus địa chỉ tới
memory thông qua khối Logic điều khiển BUS, đi theo bus ngoài vào
memory.
- Đọc lệnh từ đoạn code chứa trong memory theo bus điều khiển thông
qua bus ngoài và khối Logic điều khiển BUS vào hàng đợi lệnh. Khi
đó địa chỉ bắt đầu lệnh là 19AE5H đến địa chỉ cuối 19AE9H( do lệnh
mất 4 byte để biểu diễn)
Bước 2: Giải mã lệnh
- Khối EU đọc lệnh từ hàng đợi lệnh và giải mã chúng. Đó là lệnh
MOV [SI]+0300H,CX
- Sau khi đọc hết đoạn lệnh trên hàng đợi lệnh, thì con trỏ IP sẽ tăng giá
trị lên IP+4 để trỏ vào lệnh tiếp theo.
Bước 3:Thực hiện lệnh
- Khối điều khiển của EU sẽ đưa giá trị 0300H theo bus điều khiển vào
1 bên của ALU, đồng thời điều khiển đưa SI từ thanh ghi chỉ số vào
đường còn lại của ALU. Qua các thanh ghi tạm thời, ALU sẽ cộng 2
giá trị đưa vào trên SI+0300H=34CFH.
- Khối điều khiển của EU sẽ tiếp tục điều khiển đưa qua khối B.I.U để
tính địa chỉ vật lý của ô nhớ cần ghi là DS:SI+3000H hay 144CFH.
- Khối điều khiển của EU sẽ tiếp tục điều khiển đưa giá trị CX=1234H
qua bus dữ liệu vào địa chỉ 2 ô nhớ liên tiếp nhớ DS:SI+0300H và
DS:SI+0301H. Khi đó tại ô nhớ 144CFH chứa giá trị bit thấp 34H,tại
ô nhớ 144D0H chứa giá trị bit cao 12H.
Bài 4 (20 điểm)
Đặt 5 câu hỏi trắc nghiệm cho các nội dung đã học từ đầu kỳ đến tuần này.
Mỗi câu hỏi có 4 phương án trả lời trong đó có 1 đáp án đúng. Nhập các
câu hỏi vào form tại địa chỉ:
https://docs.google.com/spreadsheet/viewform?
formkey=dFh3MkZacWVTa0tNS0JWcm5QbF94bmc6MA
1. Chức năng chính của ALU( arithmetic logical unit) là gì:
A: thực hiện các phép toán số học.
B: thực hiện các phép toán logic.
C: đóng vai trò xuất dữ liệu.
D: cả 3 đáp án trên đều đúng.
2. 1 chu kì lệnh của CPU nào dưới đây là chính xác
A: đọc mã lệnh, thực hiện lệnh, giải mã lệnh.
B: đọc mã lệnh, giải mã lệnh, thực hiện lệnh.
C: giải mã lệnh, đọc mã lệnh, thực hiện lệnh.
3. Thanh ghi cờ của intel 8088/8086 có mấy cờ trạng thái:
A. 3
B. 4
C. 6
D. 9
4. Toán hạng nào dưới đây là không hợp lệ:
A. MOV BL,1200H
B. MOV AL,[BX]
C. MOV CX, [BX]+1234H
D. MOV DS,AX
5. Trong quá trình ghi bộ nhớ thì: ( chọn đáp án không chính xác)
A. =1
B. DT/ =1
C. M/ O=0
D. R=0

You might also like