You are on page 1of 13

Bùi Đức Dũng - 20204954

ASSIGNMENT 1:

Khởi tạo dữ liệu cho mảng A và gán địa chỉ cơ sở của mảng A cho thanh
ghi $a0. Gán số phần tử của mảng A cho thanh ghi $a1 và nhảy đến thủ
tục mspfx.

Khởi tạo giá trị độ dài, tổng, biến đếm, và tổng chạy bằng 0
Lưu địa chỉ của từng phần tử trong mảng vào thanh ghi $t3 và load giá trị ở thanh ghi
$t3 vào thanh ghi $t4 . ( indexing method)

….

Sau mỗi bước load giá trị vào $t4 ta cộng giá trị trong $t4 vào tổng chay rồi so
sánh với tổng được lưu trong $v1 . Nếu tổng max nhỏ hơn thì ta chuyển đến bước
sửa đổi kết quả mdfy . Ngược lại nếu tổng max vẫn lớn hơn thì ta chuyển đến bước
kiểm tra xem biến đếm đã vượt qua số phần tử của mảng chưa .

mdfy :
Test :
Kết quả :

Assignment 2 :

Khởi tạo giá trị cho mảng đồng thời gán địa chỉ cơ sở của mảng cho thanh ghi $a0 và địa
chỉ của phần tử cuối cùng cho thanh ghi $a1 và nhảy đến thủ tục sort .
Sort :

Kiểm tra điều kiện chỉ còn 1 phần tử . Nếu đúng thì nhảy ra done nếu không thì
chuyển đến thủ tục max .

Tìm max :

Load lần lượt phần tử đầu tiên vào thanh ghi $v1 . ( gán ,là max )

Trong vòng loop kiểm tra điều kiện phần tử chuối nếu là phần tử cuối thì thoát luôn:

Nếu chưa phải phần tử cuối thì so sánh lần lượt phần tử đầu với các phần tử sau . Phần
tử nào lớn hơn thì gán lại vào max :
Sau lần tìm max đầu tiên được max = 8 ( đúng )

Sau khi tìm xong max thì nhảy đến thủ tục after_max
Load phần tử cuối cùng vào thanh ghi $t0

Gán phần tử cuối cùng vào vị trí max và phần tử max vào vị trí cuối cùng .

Sau đó giảm con trỏ đến phần tử cuối cùng và tiếp tục quay lại thủ tục sort .

➔Kết quả: ( chính xác )

Assignment 3:
Bubble Sort:
➔Kết quả :

→Giải thích :

Lưu địa chỉ cơ sở của mảng vào thanh ghi $s0, khởi tạo 2 biến đếm vào 2 thanh ghi $t0,
$t1 , lưu
số phần tử vào thanh ghi $s1 . 2 thanh ghi $t2, $t3

Sau mỗi vòng lặp lớn thì số lượng lần so sánh giảm đi 1 đồng thời ta reset lại cho
thanh ghi $t3 về địa chỉ cơ sở của mảng để so sánh lại từ đầu .
….

Trong vòng lặp con :

Ta load lần lượt 2 phần tử liền nhau rồi so sánh chúng :

Nếu số sau $s4 > số trước $s3 thì ta rẽ nhánh đến kiểm tra điều kiện biến đếm j = n-
i-1 . Nếu
chưa đến thì tiếp tục load và so sánh tiếp .

Nếu không thì swap 2 phần tử :

Kiểm tra biến đếm cho vòng lặp to :


In ra chuỗi sau khi đã sắp xếp :

ASSIGNMENT 4 :
Insert sort:
Thuật toán :
➔Kết quả :

Giải thích :

Gán địa chỉ cơ sở của chuỗi cho thanh ghi $a0 và số phần tử cho thanh ghi $a1 .
Khởi tạo biến đếm vòng lặp ngoài i = 1 :

Trong vòng lặp to đầu tiên kiểm tra điều kiện giá trị đếm i trong thanh ghi $t0 đã
chạm đến tổng số phần tử chưa . Rồi sau đó load lần lượt các phần tử Arr[i] ( I bắt đầu
từ 1) vào thanh ghi
$t5

Do ta cho phần tử thứ 2 có giá trị = 0 nên :

Sau đó ta khởi tạo biến đếm j = i -1

rồi vào vòng lặp con Vòng lặp con :

Kiểm tra điều kiện j > 0 lưu kết quả vào $t4 nếu sai thì rẽ nhánh ra ExitInnerLoop :

Load phần tử A[j] vào thanh thi $t4 ( ở đây là phần tử A[0] do

A[i] = A[1]) So sánh với phần tử đang cần tìm vị trí nếu nhỏ hơn

thì exitInnerLoop
Ngược lại lưu phần tử đó vào đúng vị trí của phần tử cần tìm vị trí và tiếp tục vòng
lặp
Kết thúc vòng lặp con ta được giá trị của phần tử cần tìm vị trí và lưu nó vào vị trí phù
hợp bởi thanh ghi $t7

In ra kết quả :

You might also like