You are on page 1of 18

Tổ chức và cấu trúc máy tính 2

Tên SV:
MSSV:
Lớp:

Báo cáo LAB 05


1. Thao tác với mảng
Code và giải thích:
- Cấp phát dữ liệu trong bộ nhớ:

- Lưu địa chỉ array1 vào $t0.


- Kích cỡ array1 vào $t1
- Tạo một biến $t2 để chứa index hiện tại trong mảng

- Tạo vòng lặp bằng cách dùng label loop và loop_end điều kiện kết thúc là $t1 =
$t2 hay index bằng với số phần tử của mảng.
- Tính địa chỉ của array1[i] rồi lưu vào $t4
- Xuất ra array1[i]
- Tăng index:
- Lưu địa chỉ array2 vào $t0
- Kích cỡ array1 vào $t1
- Tạo một biến $t2 để chứa index hiện tại trong mảng

- Tạo vòng lặp bằng cách dùng label loop_1 và loop_1_end, điều kiện kết thúc là
$t1 = $t2 hay index bằng với số phần tử của mảng.
- Tính địa chỉ của array2[i] rồi lưu vào $t3
- Xuất ra array1[i]
- Tăng index
(Lưu ý: do mỗi phần tử của array2 được lưu trong 1 byte nên để lấy địa chỉ kế tiếp chỉ
cần cộng với 1 byte, khi lấy phần tử trong bộ nhớ cần sử dụng lệnh lb)
- Lưu địa chỉ array3 vào $t0
- Kích cỡ array3 vào $t1
- Tạo một biến $t2 để chứa index hiện tại trong mảng
- Lưu địa chỉ array2 vào $t3
- Kích cỡ array2 vào $t4

- Tạo vòng lặp bằng cách dùng label loop_2 và loop_2_end, điều kiện kết thúc là
$t1 = $t2 hay index bằng với số phần tử của mảng.
- Tính địa chỉ của array3[i] rồi lưu vào $t5
- Tính giá trị của array2[i] + array2[size2 – 1 – i] lưu vào array3[i]
- Xuất ra array3[i]
- Tăng index
(Lưu ý: do mỗi phần tử của array3 được lưu trong 1 byte nên để lấy địa chỉ kế tiếp chỉ
cần cộng với 1 byte, khi lấy phần tử trong bộ nhớ cần sử dụng lệnh lb):
- Lưu địa chỉ array1, array2, array3 lần lượt vào $t0, $t1, $t2.
- Nhận số mảng từ người dùng.

- Nhận index từ người dùng.

- Tạo 3 biến $s0 = 1, $s1 = 2, $s2 = 3 để nhận biết mảng người dùng nhập
- Tạo 3 nhãn continue, continue_1, continue_2 ứng với 3 trường hợp
- Trong mỗi nhãn tính địa chỉ arrayx[i] rồi xuất ra giá trị lưu trong địa chỉ đó.
- Kết quả:
2. Thao tác với con trỏ
- Tương tự câu 1, khác nhau ở việc tính và lưu địa chỉ của ô nhớ cần truy cập.
- Kết quả:
3. Bài tập
3.1:
- Cấp phát chuỗi 100 byte cho array

- Yêu cầu nhập số n và nhập mảng


- Thanh ghi $t1 chứa index hiện tại.
- Thanh ghi $t2 chứa địa chỉ của array.
- 2 thanh ghi $t3, $t4 lần lượt lưu giá trị lớn nhất và nhỏ nhất (ban đầu có giá trị là
phẩn tử đầu của array)

- Tạo loop_1 duyệt qua từng phần tử của array.


- Lần lượt so sánh array[i] với min, max (giá trị của thanh ghi $t3, $t4). Nếu array[i]
< min, cập nhật giá trị thanh ghi $t3, nếu array[i] > max, cập nhật giá trị thanh ghi
$t4.

- Xuất ra giá trị min, max


- Thanh ghi $t1 chứa index.
- Thanh ghi $t2 chứa địa chỉ array
- Thanh ghi $s0 chứa tổng ta đang tính

- Tính tổng từng phần tử

- Xuất ra tổng của chuỗi.


- Yêu cầu người dùng nhập index
- Xuất ra giá trị array[i]
- Kết quả:
- Cấp phát cho mảng A 100 byte

- Yêu cầu nhập số phần tử mảng và các giá trị tương ứng

- So sánh 2 thanh ghi $s0, $s1, với mỗi trường hợp thực hiện phép gán tương ứng.
- Kết quả sau khi nhập bảng, địa chỉ 0x1001000 chứa giá trị 0x0020301
- $s0 = 0x0, $s1 = 0x1

- Kết quả: A[0] = 0, giá trị của địa chỉ 0x1001000 thay đổi

You might also like