Professional Documents
Culture Documents
2
Sinh viên thực hiện: Nguyễn Anh Đức - MSSV: 20521195
Giảng viên hướng dẫn thực hành: Trần Đại Dương
THỰC HÀNH
2.a. In ra tất cả các phần tử của mảng array1 và array2
.data
array1: .word 5, 6, 7, 8, 1, 2, 3, 9, 10, 4
size1: .word 10
array2: .byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
size2: .word 16
.text
2.c. Nhập vào thứ tự mảng và chỉ số phần tử, sau đó xuất ra phần tử tương ứng
add $4, $5, $9 % giải thích ý nghĩa của lệnh này
li $2, 19 % giải thích ý nghĩa của lệnh này
slt $18, $8, $2
syscall
BÀI TẬP
3.a.1 Nhập mảng số nguyên n phần tử, xuất ra giá trị lớn nhất và nhỏ nhất
.data
kt: .space 500 %mảng kt có kích thước 500 byte
liên tục
nhap: .asciiz "Nhap so phan tu cua mang: " %chuỗi nhap có nội dung Nhap so
pha tu cua mang và kết thúc bằng null
nhap2: .asciiz "Nhap mang: \n" %chuỗi nhap2 có nội dung Nhap
mang và kết thúc bằng null
max: .asciiz "\nMax: " %chuỗi max có nội dung Max và
kết thúc bằng null
min: .asciiz "\nMin: " %chuỗi min có nội dung Min và
kết thúc bằng null
.text
li $v0,4 %v0=4
la $a0,nhap %đặt $a0 thành địa chỉ của nhap
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi giá trị trong $v0
li $v0,5 %v0=4
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi giá trị trong $v0
li $v0,4 %$v0=4
la $a0,nhap2 %đặt $a0 thành địa chỉ của nhap2
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
LOOP:
li $v0,5 %$v0=5
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
sw $v0,($t0) % Lệnh chuyển dữ liệu từ thanh ghi $v0 ra $t0
addi $t0,$t0,4 %$t0=$t0+4
slt $t3,$t0,$t2 %nếu $t0<$t2 đúng thì $t3 nhận giá trị 1 và ngược
lại
bne $t3,$0,LOOP %nếu $t3 khác $0 thì nhảy đến nhãn LOOP
li $v0,4 %$v0=4
la $a0,max %đặt $a0 thành địa chỉ của max
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
li $v0,1 %$v0=1
la $a0,($t4) %gán giá trị của $t4 vào $a0
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
li $v0,4 %$v0=4
la $a0,min %đặt $a0 thành địa chỉ của min
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
li $v0,1 %$v0=1
la $a0,($t5) %gán giá trị của $t5 vào $a0
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
3.a.2 Nhập mảng số nguyên n phần tử, xuất ra tổng các phần tử trong mảng
.data
kt: .space 500 %mảng kt có kích thước 500 byte
liên tục
nhap: .asciiz "Nhap so phan tu cua mang: " %chuỗi nhap có nội dung Nhap so
pha tu cua mang và kết thúc bằng null
nhap2: .asciiz "Nhap mang: \n" %chuỗi nhap2 có nội dung Nhap
mang và kết thúc bằng null
.text
li $v0,4 %$v0=4
la $a0,nhap %đặt $a0 thành địa chỉ của nhap
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi giá
trị trong $v0
li $v0,5 %$v0=4
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
move $s0,$v0 %$s0=$v0
la $a0,kt %đặt $a0 thành địa chỉ của kt
move $t0,$a0 %$t0=$a0
sll $t1,$s0,2 %dịch trái $s0 2 bit rồi gán vào $t1
add $t2,$t1,$a0 %$t2=$t1+$a0
li $v0,4 %$v0=4
la $a0,nhap2 %đặt $a0 thành địa chỉ của nhap2
syscall % Thực hiện lệnh gọi hệ thống được chỉ định bởi
giá trị trong $v0
li $v0,1 %$v0=1
la $a0,($t4) %gán giá trị của $t4 vào $a0
syscall % Thực hiện lệnh gọi hệ thống được chỉ định
bởi giá trị trong $v0
3.a.3 Nhập mảng số nguyên n phần tử và nhập chỉ số phần tử, sau đó xuất ra giá trị của
phần tử
add $4, $5, $9 % giải thích ý nghĩa của lệnh này
li $2, 19 % giải thích ý nghĩa của lệnh này
slt $18, $8, $2
syscall
3.b. Nhập mảng số nguyên n phần tử, sau đó biên dịch chương trình
C MIPS
if(i < j) add $4, $5, $9 % giải thích ý nghĩa của lệnh này
A[i] = j; li $2, 19 % giải thích ý nghĩa của lệnh này
else slt $18, $8, $2
A[i] = j; syscall