Professional Documents
Culture Documents
Câu 1: Tính toán của bộ CPU đơn giản (3 bit) : D2 D1 D0 Mạch điều khiển
Câu 1: Tính toán của bộ CPU đơn giản (3 bit) : D2 D1 D0 Mạch điều khiển
Mã hóa các lệnh trong bộ nhớ và giải thích các bước khi thực hiện lệnh bằng mạch dãy tuần tự phép
tính:
(6 or 1) + 4 – 3
(6 or 1) + 4 – 3 = C1 + 4 – 3 = C2 - 3
Coi 6 OR 1 = C1
Coi C1+4 = C2
Bước Mảng thanh Giải thích
ghi
1 110 LOAD A: Gọi thanh ghi A để đưa dữ liệu cần tính vào
2 110 Đưa giá trị bằng 6 vào thanh ghi A
(chuyển 6 sang nhị phân = 110)
3 111 Gọi thanh ghi B để đưa dữ liệu cần tính vào
4 001 Đưa giá trị bằng 1 vào thanh ghi B
(chuyển 1 sang nhị phân = 001)
5 101 Thực hiện phép tính OR giữa thanh ghi A và thanh ghi B, kết quả thu được
đưa vào thanh ghi C
6 000 Mov A, C: đưa dữ liệu từ thanh ghi lưu kết quả C vào thanh ghi A
7 111 Gọi thanh ghi B để đưa dữ liệu cần tính vào
8 100 Đưa giá trị bằng 4 vào thanh ghi B
(chuyển 4 sang nhị phân = 100)
9 010 Thực hiện phép tính ADD giữa thanh ghi A và thanh ghi B, kết quả thu được
đưa vào thanh ghi C
10 000 Mov A, C: đưa dữ liệu từ thanh ghi lưu kết quả C vào thanh ghi A
11 111 Gọi thanh ghi B để đưa dữ liệu cần tính vào
12 011 Đưa giá trị bằng 3 vào thanh ghi B
(chuyển 3 sang nhị phân = 011)
13 011 Thực hiện phép tính SUB giữa thanh ghi A và thanh ghi B, kết quả thu được
đưa vào thanh ghi C
LOAD A => 6 (110) => LOAD B = > 1(001) => ADD => MOV A, C => ,,.
Vidu: (6 + 1 OR 5) + 2
Câu 2:
Ghép nối mở rộng bộ nhớ cho 8085 (VXL cơ bản lâu rồi, có 16-bit địa chỉ)
Mã nhị phân 16-bit địa chỉ Hexa
Đầu tiên (thấp nhất) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000h
Thứ 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0001h
Thứ 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0002h
……..
Cuối cùng (cao 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FFFFh
nhất)
+ Bộ nhớ lẻ, bắt đầu từ địa chỉ bất kỳ trong không gian bộ nhớ hoặc địa chỉ thấp nhất trong không gian
bộ nhớ (0000h)
Mã hexa (cơ số 16): 0000h hoặc 0x0000
1 số màu đỏ ở trên tương đương 4-bit nhị phân
0000h = 0x0000 = 16 bit = 0000 0000 0000 0000 (nhị phân)
+ Bộ nhớ chẵn, bắt đầu từ địa chỉ bất kỳ trong không gian bộ nhớ hoặc địa chỉ thấp nhất trong không
gian bộ nhớ (0000h)
+ Bộ nhớ chẵn hoặc lẻ, ở địa chỉ cao nhất trong không gian bộ nhớ (FFFFh = 0xFFFF)
Vidu: Mở rộng bộ nhớ 4KB cho 8085 từ các IC nhớ 2 KB, với địa chỉ bắt đầu là 0x8000 (8000h)
Giải:
B1: Hình dung trong tưởng tượng là sẽ cần bao nhiêu IC, cần bộ nhớ 4 KB từ IC 2 KB=> cần 2 IC 2KB
B2: Tính toán chuyển dung lượng sang nhị phân để biết xem là cần bao nhiêu bit đường địa chỉ để kết
nối.
(1 KB = 1024 bit)
IC1: 2 KB = 2. 1024 = 2. 210 = 211
=> Sử dụng 11 đường địa chỉ từ A0 đến A10
Tên của từng bit A15 A1 A0
Đầu tiên (thấp nhất) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16-bit địa chỉ, đặt địa chỉ là A (Address)
IC2: 2 KB = 2. 1024 = 2. 210 = 211
=> Sử dụng 11 đường địa chỉ từ A0 đến A10
B3: Chuyển địa chỉ bắt đầu đề bài cho sang nhị phân.
+ Chuyển địa chỉ bắt đầu 0x8000 (8000h) sang nhị phân.
0x8000 = 1000 0000 0000 0000
B4: Thực hiện gán địa chỉ cho IC như đã tính ở bước 2
IC1: 2 KB (sử dụng 11 đường địa chỉ)
Đề bài cho cái địa bắt đầu ở đề bài, chính là cái vị trí mà mình sẽ gắn cái con IC nhớ đầu tiên vào
Địa chỉ bắt đầu: 1000 0|000 0000 0000
Địa chỉ kết thúc: 1000 0|111 1111 1111
Tất cả bit sau dấu gạch thẳng => chuyển sang bit trạng thái cuối cùng (0 => 1, 1010 => 1111, 10001 =>
1111, 100000011100 => 111111111111)
=> Cần tính địa chỉ bắt đầu cho IC2= Địa chỉ kết thúc IC1 + 1
1000 0|111 1111 1111 + 1 = 1000 1|000 0000 0000
IC2: 2 KB (sử dụng 11 đường địa chỉ)
Địa chỉ bắt đầu: 1000 1|000 0000 0000
Địa chỉ kết thúc: 1000 1|111 1111 1111
Vidu: Mở rộng bộ nhớ 2KB từ các IC nhớ 1 KB, địa chỉ bắt đầu từ địa chỉ thấp nhất trong không gian bộ
nhớ.
=> 2 IC 1 KB.
Vidu2: Mở rộng bộ nhớ 2KB từ các IC nhớ 1 KB, địa chỉ bắt đầu từ địa chỉ 0x7005
IC1: 1 KB
Địa chỉ bắt đầu: 1110 00|00 0000 0101
Địa chỉ kết thúc: 1110 00|11 1111 1111
Vidu 3: Mở rộng bộ nhớ 4KB từ các IC nhớ 1 KB, địa chỉ bắt đầu từ địa chỉ 0x7060
Giải:
B1: Tưởng tượng tính toán số lượng IC cần sử dụng. cần bộ nhớ 4 KB từ IC 1KB => 4 con IC 1 KB
B2: Tính toán số đường địa chỉ (bus) của IC cần sử dụng.
IC1: 1 KB = 1024 = 210
=> Sử dụng 10 đường địa chỉ từ A0 đến A9
IC2: 1 KB = 1024 = 210
=> Sử dụng 10 đường địa chỉ từ A0 đến A9
IC3: 1 KB = 1024 = 210
=> Sử dụng 10 đường địa chỉ từ A0 đến A9
IC4: 1 KB = 1024 = 210
=> Sử dụng 10 đường địa chỉ từ A0 đến A9
B3: Chuyển địa chỉ đề bài cho (mã hexa) sang mã nhị phân
0x7060 = 0111 0000 0110 0000
B4: Tìm địa chỉ bắt đầu và địa chỉ kết thúc cho các IC
IC1: 1 KB (sử dụng 10 đường địa chỉ)
A15 A0
Địa chỉ bắt đầu: 0111 00|00 0110 0000
Địa chỉ kết thúc: 0111 00|11 1111 1111
VD: Mở rộng bộ nhớ 3 KB từ 1 IC 4 KB ở địa chỉ bắt đầu 0000h (địa chỉ thấp nhất trong không gian bộ
nhớ)
B1: Cần 1 IC 4 KB
B2: Tính toán số đường địa chỉ cần sử dụng
IC1: 2 KB (hiểu trong tưởng tượng là con này nó tổng là 4 KB => còn thừa 2 KB)
2 KB = 2. 1024 = 2. 210 = 211
=> Sử dụng 11 đường địa chỉ A0 đến A10
IC1: 1 KB (hiểu trong tưởng tượng là con này nó tổng là 4 KB => còn thừa 1 KB)
1 KB = 1024 = 210
=> Sử dụng 10 đường địa chỉ A0 đến A9
B3: Chuyển địa chỉ bắt đầu sang mã nhị phân
0000h = 0000 0000 0000 0000
Vidu: bộ nhớ 5KB từ các IC nhớ 2KB với địa chỉ bắt đầu 4000h
Vidu2: Bộ nhớ 7KB từ một IC nhớ 8KB với địa chỉ bắt đầu 8000h
TH3: Mở rộng bộ nhớ ở địa chỉ cao nhất trong không gian bộ nhớ (FFFFh hoặc có thể viết là 0xFFFF)
Vidu: bộ nhớ 4KB từ IC 2KB ở địa chỉ cao nhất trong không gian bộ nhớ
Vidu: Mở rộng bộ nhớ 6KB từ các IC 2KB ở địa chỉ cao nhất trong không gian bộ nhớ.