1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài thi kiến trúc máy tính và hợp ngữ

17 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiến Trúc Máy Tính Và Hợp Ngữ
Tác giả Sinh Viên Thực Hiện
Người hướng dẫn AAA
Trường học Trường Đại Học Sư Phạm Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Thi
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 1,39 MB

Nội dung

Hãy trình bày và giải thích vai trò của các thành phần trong các cấu trúc câu lệnh R-format, I-format, J-format.. Tại sao trong cấu trúc câu lệnh R-format, trường opcode và funct không n

Trang 1

BO GIAO DUC VA DAO TAO

TRƯỜNG ĐẠI HỌC SU PHAM THANH PHO HO CHi MINH

KHOA CONG NGHE THONG TIN

-===== [Hl -

© 36 TP HO CHi MINH

BAI THI

KIEN TRUC MAY TINH

VA HOP NGU

Sinh viên thực hiện:

Mã số sinh viên:

Mã lớp học phần:

Lớp sinh viên:

Trang 2

Thành phố Hô Chỉ Minh, tháng 12 năm 2021

Trang 3

MUC LUC

LOI CAM ON

DE THI

NOI DUNG BAI THI

CAU 1 (2 GUGM) eee ces ceccceeseeseceessesscesessvsecsevssssessessessnsersetsesevseseserseseveveesens 5 CAU 2 (3 GUGM) eee eecceccceeseeseceessesscesessvseesevssssessessessnsersetsesevstsesensesevevsesens 8 CAU 3 (5 GIG) eee cecceccececsesecsscessesevssessesevssesessessessessesevensesevevsesevsnsevsnseses II

Trang 4

LOI CAM ON

Lời đầu tiên em xin gửi lời cám ơn đến trường đã tạo điều kiện để sinh viên chúng em có một môi trường học tập thoải mái về cơ sở hạ tầng cũng như cơ sở vật chất

Tiếp theo, em xin gửi lời cám ơn đến các thầy/cô khoa Công nghệ Thông tin đã tạo điều kiện tốt nhất để em tiếp thu kiến thức ngành học của em Em xin gửi lời cám ơn đến thầy AAA, trong suốt quá trình học tập va tim hiéu mén “Kién ứrúc máy tính và hợp ngữ”, em đã nhận được sự giảng dạy tận tình của thay Điều đó giúp em tích lũy được thêm nhiều kiến thức mới cho bản thân Thông qua bài thí này em xin trình bày lại những øì mà bản than em đã được học từ thầy và cũng như những kiến thức mà em đã tìm hiểu trong suốt quá trình học tập

Có lẽ vì kiến thức là vô tận mà sự tiếp nhận kiến thức mỗi người ở mức độ khác nhau Do đó, trong quá trình hoàn thành bài thí chắc chắn sẽ có những hạn chế và

có nhiều sai sót Bản thân em cũng rất mong nhận được những góp ý đến từ thầy đề bai thi của em được hoàn thiện hơn

Cuối cùng, em kính chúc thầy có nhiều sức khỏe, hạnh phúc và thành công hơn trên con đường công tác và giảng dạy của mình

Xin chân thành câm ơn!

Sinh viên thực hiện

Trang 5

DE THI

Cau 1 (2 diém)

a Hãy trình bày và giải thích vai trò của các thành phần trong các cấu trúc câu lệnh R-format, I-format, J-format

b Tại sao trong cấu trúc câu lệnh R-format, trường opcode và funct không năm liền nhau?

Câu 2 (3 điểm)

a) Trình bày thuật toán nhân hai số nguyên có đấu (thuật toán Booth) và cho ví

dụ minh họa

b) Trong thuật toán Booth, người ta sử dụng cặp bít QạQ¡ để làm điều kiện phân loại xử lý Hãy trình bảy cơ sở lý thuyết của ý tưởng này:

Q — Multiplier Count — a

Trang 6

Câu 3 (5 điểm)

Cho đoạn mã được viết bằng ngôn ngữ ASM

1 MOV N, 10

2 MOV Cx, N

DEC cx

3 MOV SI, 0

4 FOR_I:

5 PUSH CX

MOV CX, N

6 MOV DI, 0

" MOV DL, A[STI]

CMP DL, A[DTI]

9 JB LAP

11 MOV A[DI], DL

12 MOV A[SI], BL

MOV DL, A[SI]

Lộ LAP:

14 INC DI

15 LOOP FOR J

INC SI

16 POP CX

17 LOOP FOR_I

Yéu cau:

1 Hoàn chỉnh chương trình đầy đủ để có thê chạy được, cho | vi du minh hoa cu thé input va output khi thực hiện chương trình hoàn chỉnh

2 Hãy chuyền đôi 3 dòng lệnh bất kỳ của đoạn mã trên sang ngôn ngữ máy

3 Hãy viết lại chương trình băng ngôn ngữ C (hoặc C+~) mà không làm thay đổi đi các công việc chính được thực hiện trong đoạn mã trên

Trang 7

NOI DUNG BAI THI CAU 1 (2 diém)

a Hãy trình bày và giải thích vai trò của các thành phần trong các cấu trúc câu lệnh R-format, I-format, J-format

CẤU TRÚC CÂU LỆNH R-FORMAT

opcode (operation code): mi thao tac, cho biét lệnh làm gì

funct (function code): kết hợp với opcode đề xác định lệnh làm gì (trường hợp các lệnh có cùng mã thao tac với opcode)

rs (source register): thanh ghi nguồn, thường chứa toán hạng nguồn thứ |

r (target register): thanh ghi nguồn, thường chứa toán hạng nguồn thứ 2

rd (destination register): thanh ghi đích, thường chứa kết quả lệnh

shamt: chứa số bít cần địch trong các lệnh dịch, nếu không phải lệnh dịch thì trường này có giá trị 0

Nhận xét:

Các trường lưu địa chỉ thanh ghi rs, rt, rd có kích thước 5 bít

> Có khả năng biếu diễn các số từ 0 đến 31

> Đủ để biếu diễn 32 thanh ghi của MIPS

Trường lưu số bít cần dịch shamt có kích thước 5 bít

> Có khả năng biếu diễn các số từ 0 đến 31

> Đủ để dịch hết 32-bit lưu trữ của 1 thanh ghi

Ví dụ:

Biểu diễn machine code cua lénh: sil $t2, $80, 4

Trang 8

Biểu diễn lệnh với R-format theo từng trường:

0 0 16 10 4 0

000000 00000 10000 01010 00100 000000

rs = 0 (không dùng trong phép dịch)

rt = l6 (toán hạng nguồn là $s0 ~ $16)

rd = I0 (toán hang dich la $t2 ~ $10)

shmat = 4 (số bít dịch = 4)

CẤU TRÚC CÂU LỆNH I-FORMAT

opcode (operation code); ma thao tác, cho biết lệnh làm gì (tương tự opeode của R-format, chỉ khác không cần thêm trường funct)

Đây cũng là lý do tại sao R-ƒformat có 2 trường 6-bit đề xác định lệnh làm gì thay vì 1 trường 12-bit = Đề nhất quán với các cấu trúc lệnh khác (1-format) trong khi kích thước mỗi trường vẫn hợp ly

rs (source register): thanh ghi nguồn, thường chứa toán hạng nguôn thứ I

rt (target register): thanh øhi đích, thường chứa kết quả lệnh

immediate: 16-bit, co thé biểu diễn số nguyên từ -215 đến (215 - L)

> [format da co thé lưu hằng số 16 bit (thay vi 5-bit nhw R-format) Vidu:

Biéu dién machine code cua lénh: addi $s0, $s1, 10

Trang 9

Biểu diễn lệnh với R-format theo từng trường:

opcode = 8: Xac dinh thao tac céng hang sé

rs = L7 (toán hạng nguồn thứ | 1a $31 ~ $17)

tt= l6 (toán hạng đích là $s0 ~ $16)

Iinmediate = 10 (toán hạng nguồn thứ 2 = hằng số = 10)

CẤU TRÚC CÂU LỆNH J-FORMAT

opcode (operation code): ma thao tac, cho biét 1énh lam gì (tương tự opcode cua R-format va I-format)

Đề nhất quán với các cấu trúc lệnh khác (Ñ-ƒormat và ]-ƒormaf)

target address: Lưu địa chỉ đích của lệnh nhảy

Tương tự lệnh rễ nhánh, địa chỉ dich của lệnh nháy tính theo đơn vị word Nhận xét:

Trong cấu trúc lệnh J-format, các lệnh nhảy có thê nhảy tới các lệnh có địa

chỉ trong khoảng 25

Muốn nhảy tới các lệnh có địa chỉ lớn hơn từ 2?” đến 2??

> MIPS hé tro lệnh jr (đọc trong phân thủ tục)

> Tuy nhiên nhu cầu này không cần thiết lắm vì chương trình thường không quá lớn như vậy

Trang 10

b Tại sao trong cấu trúc câu lệnh R-format, trường opcode và funet không năm liên nhau?

Trong cấu trúc câu lệnh R-format, trường opcode và funct không nằm liền nhau là để nhất quán với các câu trúc lệnh khác trong khi kích thước của mỗi trường

van hop li

Y

tiếp theo quyết định thanh ghi nguồn Nếu chúng ta kết hợp opcode và funct cho

lệnh R thì định dạng lệnh không nhất quán giữa R và I điều này có thé lam cho thiết

kế của bộ xử lý trở nên phức tạp Cụ thể như sau:

-_ Cái thứ nhất, chiều rộng có định là 32-bít Nó đảm bao rang opcode 6 bits, đối với loại R và I, 5-bit tiếp theo quyết định thanh ghi nguồn Định dạng lệnh đã nhất quán giữa R và I giúp đơn giản hóa bộ nhớ cache và sự hiện diện của trang

- Thứ hai, các lệnh đã có chiều rộng cô định và vị trí cố định Điều nảy làm cho chúng nhanh hơn, ít logic hơn để giải mã và cần thiết trong giai đoạn đầu của

quá trình xử lý thông tin Thanh ghi đích không cần thiết cho đến khi kết thúc

đường dẫn, nên nó có thê ở những vị trí khác nhau trong lệnh R và I

- Cuối cùng, vẫn có thể đặt funct ngay bên cạnh opcode và di chuyên các trường khác Tuy nhiên điều này sẽ đòi hỏi phải chia nhỏ ngay lập tức cho loại I Chia nhỏ để giảm sự trộn lẫn cần thiết cho việc giải mã và đơn giản hóa phần mở rộng ký hiệu phần mềm thông qua dịch chuyên bên phải số học bằng cách đặt bít trên cùng của phân mêm ngay lập tức ở ngoài cùng bên trái

Trang 11

CAU 2 (3 diém)

a Trinh bay thuật toán nhân hai số nguyên có dấu (thuật toán Booth) và cho vi

dụ minh họa

THUẬT TOÁN BOOTH

Các số hạng trong phép nhân phải có dấu Vậy nếu là Số dương bít lớn

nhất ; S6 4m bit lớn nhất

Các số hạng có độ dài bit giống nhau

Khởi tạo

Khi hay đời bít sang phải giảm số hạng nhân là

Khi thì dời bít sang phải giảm số hạng nhân là

Khi thì dời bít sang phải giảm số hạng nhân là

Khi đời bít giữ đấu của

Khi nhân hết số hạng kết quả là giá trị được nối giữa hai giá trị

VÍ DỤ:

Chuyến số thập phân sang nhị phân có dấu:

Thông thường trong máy tính các số hạng có dạng +, 8, 16, 32, 64 bils nhưng

đề đơn giản và không ảnh hưởng thuật toán ta có thể chuyên sang số nhị phân có

số bịt 2 số hạng bằng nhau và có dấu

Thực hiện

Trang 12

b Trong thuật toán Booth, người ta sử dụng cặp bít QuQ¡ để làm điều kiện

phân loại xử lý Hãy trình bảy cơ sở lý thuyết của ý tưởng này:

Right: A, Q Q,

Ý TƯỞNG THUẬT TOÁN BOOTH

Positive

Negative

Trang 13

CƠ SO THUAT TOAN BOOTH

Chia y:

- n là số bít của số đó sau khi chuyến thành hệ nhị phân (ví đụ : 4 bits, 8 bits, 16 bits )

- _ Thứ tự của các bịt trong hệ nhị phân được bat dau tir 0,1,2,3 Nén bit cuối cùng của | so la bỊt có vị trí n -Ï

Bước 0

Bước Ì

Bước 2

Bước 3

Bước

Vì và chính là bít xác định đấu nên phần trong dấu ngoặc chính là Vậy

Vi vay, cap được chọn làm điều kiện phân loại xử lý ( hoặc )

CÂU3 (5 điểm)

Cho đoạn mã được viết bằng ngôn ngữ ASM

Trang 14

MOV N, 10 ;

FOR_I:

PUSH CX

FOR_J:

LAP:

LOOP FOR_I

Yêu cầu:

1 Hoàn chỉnh chương trình đầy đủ đề có thế chạy được, cho I ví dụ minh họa

cu thé input va output khi thực hiện chương trình hoàn chỉnh

CHƯƠNG TRÌNH HOÀN THIỆN

6

7

8

9

0

1 PS:

1

2

3

4

Trang 15

DWWAWNOA

END

MOV SI, 0

FOR I:

PUSH CX

MOV CX, N

MOV DI, 0 MOV DL, A[ST]

FOR J:

CMP DL, A[DI]

JB LAP MOV BL, A[DI]

MOV A[DI], DL MOV A[SI], BL

MOV DL, A[ST]

LAP:

INC DI

LOOP FOR_J

INC SI

POP CX

LOOP FOR_I

Trang 16

vi DU

2 Hãy chuyền đôi 3 dòng lệnh bất kỳ của đoạn mã trên sang ngôn ngữ máy

MOV N, 10

Chuyên đổi:

MOVCX,N

Chuyên đôi:

LOOP FOR_I

Chuyên đổi:

3 Hãy viết lại chương trình bằng ngôn ngữ C (hoặc C++) mà không làm thay đôi đi các công việc chính được thực hiện trong đoạn mã trên

1 #include <iostream>

2 using namespace std;

5 int temp, i, 1, k;

6 for (3 = 0; j < count; +13)

8 for (k = 43 + 1; k < count; ++k)

9 {

1 if (number[j] > number[k])

Q

1

1 temp = number[j];

2

1 number[j] = number[k];

3

1 number[k] = temp;

4

Trang 17

FWOWUONODANHAINAN

int

}

cout << "Result after sorting: ";

for (i = 0; i < count; ++i)

Ww,

r

cout << number[i] << "

main()

int i, count, number[10];

cout << "Number of elements in the array: ";

cin >> count;

cout << "The value of each element in the array: for (i = 0; i < count; ++i)

cin >> number[i];

sort_numbers_ascending (number, count);

Ngày đăng: 02/08/2024, 16:29

w