1. Trang chủ
  2. » Công Nghệ Thông Tin

CE119Lab03IT012Lab05 có đáp án uit

11 836 4

Đ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

Định dạng
Số trang 11
Dung lượng 140,42 KB

Nội dung

LAB 5: THAO TÁC VỚI MẢNG VÀ CON TRỎ TRONG MIPS 1) Bài tập (chỉ sử dụng trỏ) 1.1 Xuất giá trị lớn nhỏ mảng Hình 5- 1: Lưu đồ thuật tốn Xuất giá trị lớn nhỏ mảng Code data array1: space 200 size1: word 200 Max: asciiz "\n Max: " Min: asciiz "\n Min: " string1: asciiz "Moi nhap so luong phan tu: " string2: asciiz "Nhap gia tri cac phan tu: \n" text li $v0, la $a0, string1 syscall li $v0, syscall la $s1, size1 sw $v0, 0($s1) li $v0, la $a0, string2 syscall la $a1, array1 lw $a2, size1 add $t1, $a1, $0 add $t2, $a1, $a2 NHAP: li $v0, syscall sb $v0, 0($t1) addi $t1, $t1, slt $t3, $t1, $t2 bne $t3, $0, NHAP j Tim_Min_Max Tim_Min_Max: la $a1, array1 lw $a2, size1 add $t0, $a1, $0 add $t1, $a1, $a2 lb $s0, 0($t0) lb $s1,0($t0) FIND: lb $t3, 0($t0) slt $t4, $s0, $t3 Giải thích #Khai báo vùng nhớ data #mảng array có kích thước 200 byte # # # # # # #v0 = -> in chuỗi # a0 = string1 # # v0=5 -> Nhập int # # s1 = size1 # # # v0=4 -> in chuỗi # a0=string2 # #nap dia chi cua mang array1 vao $a1 #nap n vao $a2 #Tao tro chi vao mang array1[0] #Tao tro chi vao mang array1[size1] # # # # #Tang tro len don vi #Xem tro co chay den cuoi mang chua # # # # #Nap dia chi mang Array1 cho $a1 #nap gia tri size1 cho $a2 #Khoi tao tro chi vao mang Array[0] #Khoi tao tro chi vao mang Array[size1] #$s0=array1[0] , luu gia tri Max tam #$s0=array1[0] , luu gia tri Min tam # #$t3=array1[0] #if( $s0 in string la $a0, phantu # a0 = phantu syscall # li $v0, #v0 =5 -> nhập int syscall # move $s0, $v0 #index li $t0, #counter la $a1, arr #a1[10] loop1: # label loop1 beq $t0, $s0, end_loop1 #t0 = s0-> end_loop1 li $v0, # v0=5-> nhập int syscall # sw $v0, ($a1) #input a[i] addi $t0, $t0, #i=i+1 addi $a1, $a1, #a[i+1] j loop1 # end_loop1: # # # #sum # # # t3=t3+t2 # i++ # a[i+1] # # # # v0 =4 # a0 = tong # # a0 = t3 # # li $t0, la $a1, arr li $t3, loop2: beq $t0, $s0, end_loop2 lw $t2, ($a1) add $t3, $t3, $t2 addi $t0, $t0, addi $a1, $a1, j loop2 end_loop2: li $v0, la $a0, tong syscall move $a0, $t3 li $v0, syscall 1.3 Người sử dụng nhập vào số phần tử giá trị phần tử in cửa sổ Hình 5- 3: in vị trí phần tử cửa sổ Code Giải thích #Khai báo vùng nhớ data # # # mảng arr[10] #code # v0 = -> in string # a0 = phantu # #v0 =5 -> nhập int # #index #counter #a1[10] data phantu: asciiz "Nhap so phan tu: " input: "Nhap phan tu can in: " arr: word 0:10 text li $v0, la $a0, phantu syscall li $v0, syscall move $s0, $v0 li $t0, la $a1, arr loop1: beq $t0, $s0, end_loop1 #t0 = s0-> end_loop1 li $v0, syscall sw $v0, ($a1) addi $t0, $t0, addi $a1, $a1, j loop1 end_loop1: li $t0, la $a1, arr # v0=5-> nhập int # #input a[i] #i=i+1 #a[i+1] # # # # # # v0 =4 # # # v0=5 # # s2 = v0-4 # a1 = a1+a2 # Lệnh chuyển liệu từ a1 vào t2 # a0=t2 # # in kí tự li $v0, la $a0, input syscall li $v0, syscall mul $a2, $v0, add $a1, $a1, $a2 lw $t2, ($a1) move $a0, $t2 li $v0, syscall 1.4 Nhập mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử) Code C if (i end_loop1 addi $a1, $a1, #a[i+1] j loop1 # end_loop1: # li $t0,0 #counter la $a1, arr # addi $s1, $s0, -1 #n-1 for soft loop jal soft # loop2: # lw $a0, ($a1) # li $v0, # syscall # #print space # li $a0, 32 # li $v0, 11 # syscall #i++ addi $t0, $t0, # beq $t0, $s0, end_loop2 #a[i+1] addi $a1, $a1, # j loop2 # end_loop2: # li $v0, 10 # syscall # soft: # # # counter for max loop # # # # #a1 not chage, #a2 change $a3 = max address # # v1 compare # # # # v1 change # # # a3=a2 # # t1=s1+1 #t1=s0->end_max # a2=a2+4 # # # # # # increase counter #t0=t0+1 #t0=s1-> end_soft #a[i+1] # # #counter # # move $t1, $t0 lw $v0, ($a1) move $a2, $a1 move $a3, $a1 max: lw $v1, ($a2) bgt $v1, $v0, compare j continue compare: lw $k0, ($a3) bgt $v1, $k0, change j continue change: move $a3, $a2 continue: addi $t1, $t1, beq $t1, $s0, end_max addi $a2, $a2, j max end_max: lw $k0, ($a3) sw $k0, ($a1) sw $v0, ($a3) addi $t0, $t0, beq $t0, $s1, end_soft addi $a1, $a1, j soft end_soft: li $t0,0 la $a1, arr jr $ra 2.2 Viết chương trình hợp ngữ nhập vào N mang gồm N phần tử In mảng đảo ngược mảng vừa nhập Code Giải thích .data phantu: asciiz "N = " input: asciiz "\nARR = " out: asciiz "\noutput = " arr: word 0:10 text li $v0, la $a0, phantu syscall #Khai báo vùng nhớ data # nhập n # mảng arr[i] # xuất output # mảng arr 10 phần tử # code # v0=4 # a0= phantu # xuất string # #v0=5 -> nhập int # #index # # v0=4 #a0=input # #counter #a1[10] # # #t0=s0 -> end_loop1 # v0=5 # #input a[i] # i=i+1 #a[i+1] # # # # # # # a1= a1+4 # # # t0=s0 -> end_loop2 # load a1 vào a0 # v0=1 -> in int # #print space # # li $v0, syscall move $s0, $v0 li $v0, la $a0, input syscall li $t0, la $a1, arr loop1: beq $t0, $s0, end_loop1 li $v0, syscall sw $v0, ($a1) addi $t0, $t0, addi $a1, $a1, j loop1 end_loop1: li $t0, li $v0, la $a0, out syscall subi $a1, $a1, syscall loop2: beq $t0, $s0, end_loop2 lw $a0, ($a1) li $v0,1 syscall li $a0, 32 li $v0,11 syscall 10 addi $t0, $t0, subi $a1, $a1, j loop2 end_loop2: end_program: #i++ #a[i-1] # # # 11 ... #a1[10] # loop1: # input array li $v0, # syscall # sw $v0, ($a1) # a1 có v0 # addi $t0, $t0, #i++ beq $t0, $s0, end_loop1 # so sánh t0 = s0 -> end_loop1 addi $a1, $a1, #a[i+1] j loop1 # end_loop1:... $s1,0($t0) FIND: lb $t3, 0($t0) slt $t4, $s0, $t3 Giải thích #Khai báo vùng nhớ data #mảng array có kích thước 200 byte # # # # # # #v0 = -> in chuỗi # a0 = string1 # # v0=5 -> Nhập int # # s1

Ngày đăng: 09/12/2021, 08:11

HÌNH ẢNH LIÊN QUAN

Hình 5- 1: Lưu đồ thuật toán Xuất ra giá trị lớn nhất và nhỏ nhất của mảng - CE119Lab03IT012Lab05 có đáp án uit
Hình 5 1: Lưu đồ thuật toán Xuất ra giá trị lớn nhất và nhỏ nhất của mảng (Trang 1)
Hình 5- 2: Lưu đồ thuật toan tính tổng tất cả các phần tử của mảng - CE119Lab03IT012Lab05 có đáp án uit
Hình 5 2: Lưu đồ thuật toan tính tổng tất cả các phần tử của mảng (Trang 4)

TỪ KHÓA LIÊN QUAN

w