Đây là bài tập phần “Vi tác vụ” của đề thi năm trước! Mình có xem slide về phần này nhưng khó hiểu quá.:mad: Mong các bạn giúp đỡ.
Các vi lệnh sau được thực hiện trong hệ thống như hình vẽ. Với mỗi vi lệnh, xác định:
• Gía trị các ngõ nhập chọn bus S2, S1, S0.
• Thanh ghi và ngõ nhập điều khiển LD (nếu có).
• Tác vụ đọc hoặc ghi bộ nhớ (nếu có).
• Tác vụ trong mạch cộng luận lý (nếu có)
a) AR ← PC
b) IR ← M[AR]
c) M[AR] ← TR
d) AC ← DR, DR ←AC

có gì khó hiểu đâu bạn… bạn chỉ cần dựa trên cái sơ đồi đó để xác định tín hiệu điều khiển và giá trị thanh ghi ứng với từng trường hợp a,b,c,d thôi.
Ví dụ
a) AR <- PC
để chạy lệnh này thì S2,S1,S0 phải có giá trị là 001 (cho dữ liệu của AR ra bus) và tín hiệu ld của PC bằng 1 (cho PC load giá trị)
Tươg tự cho các câu khác 
em mù tịt phần này rồi! anh có thể nói rõ tí nữa được k?? Câu a) có 4 ý mà anh!
[QUOTE=lytieulong_269;55484]em mù tịt phần này rồi! anh có thể nói rõ tí nữa được k?? Câu a) có 4 ý mà anh![/QUOTE]
• Gía trị các ngõ nhập chọn bus S2, S1, S0.
• Thanh ghi và ngõ nhập điều khiển LD (nếu có).
• Tác vụ đọc hoặc ghi bộ nhớ (nếu có).
• Tác vụ trong mạch cộng luận lý (nếu có)
câu a làm gì có tác vụ đọc ghi bộ nhớ, cũng đã động chạm đến mạch cộng luận lý đâu 
câu b, c thì có động đến bộ nhớ
câu d động chạm tới mạch cộng và luận lý
Cơ bản em đã hiểu! Cho em hỏi 1 phần nữa nha! Trong câu d)Tác vụ trong mạch cộng luận lý (nếu có) được biểu diễn ntn vậy anh?
[QUOTE=lytieulong_269;55486]Cơ bản em đã hiểu! Cho em hỏi 1 phần nữa nha! Trong câu d)Tác vụ trong mạch cộng luận lý (nếu có) được biểu diễn ntn vậy anh?[/QUOTE]
thì nó hoạt động sao em trình bày vậy. Ví dụ AC <- DR : điều khiển như thế nào để thực hiện được việc này ???
[QUOTE=08520229;55480]có gì khó hiểu đâu bạn… bạn chỉ cần dựa trên cái sơ đồi đó để xác định tín hiệu điều khiển và giá trị thanh ghi ứng với từng trường hợp a,b,c,d thôi.
Ví dụ
a) AR <- PC
để chạy lệnh này thì S2,S1,S0 phải có giá trị là 001 (cho dữ liệu của AR ra bus) và tín hiệu ld của PC bằng 1 (cho PC load giá trị)
Tươg tự cho các câu khác :)[/QUOTE]
Theo một số bài giải trên lớp thì em thấy thê này:
- Hình như anh nhầm giữa AR<-PC và PC<-AR rồi thì phải.
- Bus(S0,S1,S2) cần dùng là đầu ra của Nguồn chứ hok phải vào của Đích. Như câu này phải dùng Bus 010 ( PC đi ra), tín hiệu LD của AR là 1.
[QUOTE=08520229;55485]• Gía trị các ngõ nhập chọn bus S2, S1, S0.
• Thanh ghi và ngõ nhập điều khiển LD (nếu có).
• Tác vụ đọc hoặc ghi bộ nhớ (nếu có).
• Tác vụ trong mạch cộng luận lý (nếu có)
câu a làm gì có tác vụ đọc ghi bộ nhớ, cũng đã động chạm đến mạch cộng luận lý đâu 
câu b, c thì có động đến bộ nhớ
câu d động chạm tới mạch cộng và luận lý[/QUOTE]
Vậy theo anh thì câu d) mình làm thế này:
• Gía trị các ngõ nhập chọn bus S2, S1, S0: 011, 010
• Thanh ghi và ngõ nhập điều khiển LD (nếu có): DR, PC
• Tác vụ đọc hoặc ghi bộ nhớ (nếu có): không có
• Tác vụ trong mạch cộng luận lý (nếu có): cộng
[QUOTE=lytieulong_269;55477]Đây là bài tập phần “Vi tác vụ” của đề thi năm trước! Mình có xem slide về phần này nhưng khó hiểu quá.:mad: Mong các bạn giúp đỡ.
Các vi lệnh sau được thực hiện trong hệ thống như hình vẽ. Với mỗi vi lệnh, xác định:
• Gía trị các ngõ nhập chọn bus S2, S1, S0.
• Thanh ghi và ngõ nhập điều khiển LD (nếu có).
• Tác vụ đọc hoặc ghi bộ nhớ (nếu có).
• Tác vụ trong mạch cộng luận lý (nếu có)
a) AR ← PC
b) IR ← M[AR]
c) M[AR] ← TR
d) AC ← DR, DR ←AC
[/QUOTE]
a) Để thực hiện việc mov giá trị của thanh ghi PC vào thanh ghi AR thì phải mở đường số 2 của bus, tức là giá trị của S2S1S0 = 010, sau khi mở đường bus số 2 thì thì dữ liệu từ thanh ghi PC tràn vào bus, để ghi giá trị này vào thanh ghi AR thì tín hiệu LD (Load) của thanh ghi AR phải được set lên 1, các thanh ghi còn lại mình ko set giá trị LD = 1 nên dữ liệu ko tràn vào được. Không thực hiện trên bộ nhớ nên ko có tác vụ đọc/ghi. Không thực hiện phép toán nên ko có tác vụ trong mạch cộng luận lý
b) M[AR] bộ nhớ truy cập giá trị tại địa chỉ được lưu trong thanh ghi AR
Để mov giá trị của ô nhớ tại địa chỉ lưu trong thanh ghi AR vào thanh ghi IR thì mở đường số 7 của bus, tức là S2S1S0 = 111, sau khi mở đường bus số 7 thì dữ liệu từ bộ nhớ tràn vào bus, để ghi giá trị này vào thanh ghi IR thì tín hiệu LD của thanh ghi IR phải được set lên 1. Vì thực hiện thao tác đọc dữ liệu trên bộ nhớ tai địa chỉ lưu trong thanh ghi nên tín hiệu Read của Memory được set lên 1. Không thực hiện phép toán nên ko có tác vụ trong mạch cộng luận lý
c) câu này thì cũng tương tự câu b
Ghi dữ liệu từ thanh ghi TR vào bộ nhớ có địa chỉ lưu trong thanh ghi AR thì mở đường bus số 6 (S2S1S0 = 110) để dữ liệu trong thanh ghi TR tràn vào bus, sau đó set tín hiệu Write của Memory lên 1 để thực hiện thao tác ghi giá trị
d) câu này thực hiện Swap giá trị của 2 thanh ghi
Đầu tiên là đưa giá trị của DR vào thanh ghi AC thông qua bộ cộng logic, lúc này để đảm bảo dữ liệu của DR khi đưa vào AC ko đổi thì ta phải lưu giá trị của AC vào thanh ghi nào đó để bảo toàn giá trị của AC (Ví dụ như IR <- AC, mở đường bus số 4 và set LD của IR lên 1). Sau đó clear AC đi, kết hợp với Input (INPR) bằng 0 thì dữ liệu của DR sẽ lưu chính xác ở trong AC. cái này ta không cần mở đường bus (S2S1S0 = 000) thì đã có đường trực tiếp từ DR đi vào bộ cộng
Thứ 2 là lưu giá trị của AC vào DR: Vì giá trị của AC lưu trong IR nên ta mở đường bus số 5 để dữ liệu của IR tràn vào bus, sau đó set tín hiệu LD của DR kêb 1 để dữ liệu của IR tràn vào DR
Đây là lập luận, em xem xét để trả lời theo yêu cầu đề bài nhé 
[QUOTE=10520437;56271]Theo một số bài giải trên lớp thì em thấy thê này:
- Hình như anh nhầm giữa AR<-PC và PC<-AR rồi thì phải.
- Bus(S0,S1,S2) cần dùng là đầu ra của Nguồn chứ hok phải vào của Đích. Như câu này phải dùng Bus 010 ( PC đi ra), tín hiệu LD của AR là 1.[/QUOTE]
đúng anh nhầm thật :)… xin lỗi nha
Vậy theo anh thì câu d) mình làm thế này:
• Gía trị các ngõ nhập chọn bus S2, S1, S0: 011, 010
• Thanh ghi và ngõ nhập điều khiển LD (nếu có): DR, PC
• Tác vụ đọc hoặc ghi bộ nhớ (nếu có): không có
• Tác vụ trong mạch cộng luận lý (nếu có): cộng
Uhm anh nhớ hồi trước anh học thì anh ghi thế 
[QUOTE=08520229;56304]
Uhm anh nhớ hồi trước anh học thì anh ghi thế :)[/QUOTE]
Em cũng gần thi rồi mà 5/5 kiểu này nguy hiểm quá @@
[QUOTE=10520437;56311]Em cũng gần thi rồi mà 5/5 kiểu này nguy hiểm quá @@[/QUOTE]
mình đâu phải là thầy nên đâu dám nói chắc 
[QUOTE=09520234;56287]d) câu này thực hiện Swap giá trị của 2 thanh ghi
Đầu tiên là đưa giá trị của DR vào thanh ghi AR thông qua bộ cộng logic, lúc này để đảm bảo dữ liệu của DR khi đưa vào AC ko đổi thì ta phải lưu giá trị của AC vào thanh ghi nào đó để bảo toàn giá trị của AC (Ví dụ như IR <- AC, mở đường bus số 4 và set LD của IR lên 1). Sau đó clear AC đi, kết hợp với Input (INPR) bằng 0 thì dữ liệu của DR sẽ lưu chính xác ở trong AC. cái này ta không cần mở đường bus (S2S1S0 = 000) thì đã có đường trực tiếp từ DR đi vào bộ cộng
Thứ 2 là lưu giá trị của AC vào DR: Vì giá trị của AC lưu trong IR nên ta mở đường bus số 5 để dữ liệu của IR tràn vào bus, sau đó set tín hiệu LD của DR kêb 1 để dữ liệu của IR tràn vào DR
Đây là lập luận, em xem xét để trả lời theo yêu cầu đề bài nhé :D[/QUOTE]
Em có mấy cái thắc mắc, em phân tích lệnh đó thành các vi lệnh sau:
-bước 1: AR <- DR //tại sao phải thông qua bộ cộng logic mà không dùng Bus 011
-bước 2: IR <-AC //
-bước 3: “Sau đó clear AC đi, kết hợp với Input (INPR) bằng 0 thì dữ liệu của DR sẽ lưu chính xác ở trong AC” //em không hiểu ở bước này làm gì, xóa AC thì ta phải dùng cái gì hay chỉ nói ra thôi là được. Có phải ý cả đoạn này là AC <- DR
[QUOTE=10520437;56362]Em có mấy cái thắc mắc, em phân tích lệnh đó thành các vi lệnh sau:
-bước 1: AR <- DR //tại sao phải thông qua bộ cộng logic mà không dùng Bus 011
-bước 2: IR <-AC //
-bước 3: “Sau đó clear AC đi, kết hợp với Input (INPR) bằng 0 thì dữ liệu của DR sẽ lưu chính xác ở trong AC” //em không hiểu ở bước này làm gì, xóa AC thì ta phải dùng cái gì hay chỉ nói ra thôi là được. Có phải ý cả đoạn này là AC <- DR
- Sorry anh gõ khúc này sai, phải là AC mới đúng
(đầu thì nghĩ là AC mà gõ ra thành AR :D)
- Việc xóa AC chỉ đơn giản là AC <- 0 thông qua tín hiệu CLR trên thanh ghi này
[QUOTE=09520234;56385]1. Sorry anh gõ khúc này sai, phải là AC mới đúng
(đầu thì nghĩ là AC mà gõ ra thành AR :D)
2. Việc xóa AC chỉ đơn giản là AC <- 0 thông qua tín hiệu CLR trên thanh ghi này[/QUOTE]
hehe, hèn chi em thầy kì kì, tự nhiên đưa DR vô AR mà không đụng tới AR. Anh xem đúng chưa:
IR <- AC
AC <- 0, AC <- DR
DR <- IR
Thank huynh nhiều lắm, khi nào thi xong sẽ kiếm huynh đền đáp bằng 1 chầu đá mía cổng trường…
[QUOTE=10520437;56405]hehe, hèn chi em thầy kì kì, tự nhiên đưa DR vô AR mà không đụng tới AR. Anh xem đúng chưa:
IR <- AC
AC <- 0, AC <- DR
DR <- IR
Thank huynh nhiều lắm, khi nào thi xong sẽ kiếm huynh đền đáp bằng 1 chầu đá mía cổng trường…[/QUOTE]
AC <- 0, AC <- DR => cái này phải thực hiện ở 2 chu kỳ mới đúng, tại vì đều thực hiện việc ghi dữ liệu lên AC nên ko thể diên ra đồng thời được
P/s: Anh ở ngay cổng trường, hú là có mặt =))
ahahah, anh Quốc siêu quá, có gì e pm hỏi riêng nha, cứ dấu nghề 
[QUOTE=10520253;56474]ahahah, anh Quốc siêu quá, có gì e pm hỏi riêng nha, cứ dấu nghề :)[/QUOTE]
Hỳ…Có gì thì em cứ hỏi thôi, chẳng qua là anh học qua rồi nên mới biết 
[QUOTE=09520234;56557]Hỳ…Có gì thì em cứ hỏi thôi, chẳng qua là anh học qua rồi nên mới biết :D[/QUOTE]
em học qua lần thứ 2 rồi mà có biết đâu =))