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

Thao tác với mảng thao tác với con trỏ

21 2 0

Đ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 21
Dung lượng 689,8 KB

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐAI HỌC CÔNG NGHỆ THÔNG TIN TỐ CHỨC VÀ CẤU TRÚC MÁY TÍNH II LỚP: IT012.N21 BÀI BÁO CÁO THỰC HÀNH SỐ Giảng viên hướng dẫn: Nguyễn Thành Nhân Sinh viên: Đặng Thanh Ngân MSSV: 22520929 MỤC LỤC: 1.Thao tác với mảng 1.1 In cửa sổ I/O MARS tất phần tử mảng array1 array2 1.2 Gán giá trị cho mảng array3 cho: array3[i]=array2[i]+array2[size2-1-i] 1.3 Người sử dụng nhập vào mảng thứ số phần tử cần lấy mảng đó, chương trình xuất phần tử tương ứng 2.Thao tác với trỏ 2.1 In cửa sổ I/O MARS tất phần tử mảng array1 array2 2.2 Gán giá trị cho mảng array3 cho: array3[i]=array2[i]+array2[size2-1-i] 11 2.3 Người sử dụng nhập vào mảng thứ số phần tử cần lấy mảng đó, chương trình xuất phần tử tương ứng 12 Bài tập 14 a Nhập mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử), xuất cửa sổ I/O MARS theo yêu cấu 14 b) Nhậpmột mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử) Mảng gọi A 19 1.Thao tác với mảng 1.1 In cửa sổ I/O MARS tất phần tử mảng array1 array2 data array1: word 5, 6, 7, 8, 1, 2, 3, 9, 10, size1: word 10 array2: byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 size2: word 16 array3: space size3: word string1: asciiz " " string2: asciiz "\n" str1: asciiz "Mang : " str2: asciiz "Mang : " text add $t0, $zero, $zero # i=0 lw $s0, size1 # n la $s1, array1 la $a0, str1 # xuat thong bao addi $v0,$zero, syscall LOOP1: slt $t1, $t0, $s0 beq $t1, $zero, EXIT1 sll $t2, $t0, add $t3, $s1, $t2 lw $a0, 0($t3) addi $v0,$zero, syscall la $a0, string1 ## Xuat khoang trang addi $v0, $zero, syscall addi $t0, $t0, j LOOP1 ##### EXIT1: la $a0, string2 # xuong hang addi $v0,$zero,4 syscall ### add $t0, $zero, $zero # i=0 lw $s0, size2 # n la $s1, array2 la $a0, str2 #xuat thong bao addi $v0,$zero, syscall LOOP2: slt $t1, $t0, $s0 beq $t1, $zero, EXIT add $t2, $s1, $t0 lb $a0, 0($t2) addi $v0,$zero, syscall la $a0, string1 #khoang trang addi $v0, $zero, 4 syscall addi $t0, $t0, j LOOP2 EXIT: Kết quả: 1.2 Gán giá trị cho mảng array3 cho: array3[i]=array2[i]+array2[size2-1-i] data array1: word 5, 6, 7, 8, 1, 2, 3, 9, 10, size1: word 10 array2: byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 size2: word 16 array3: space size3: word string1: asciiz " " text lw $s0, size3 la $s1, array3 lw $s2, size2 la $s3, array2 addi $t0, $zero, # i =0 LOOP: slt $t1, $t0,$s0 beq $t1, $zero, EXIT1 add $t3, $t0,$s3 lb $t4, ($t3) # t4= a2[i] addi $t5, $s2,-1 sub $t5, $t5, $t0 add $t5, $s3, $t5 lb $t6, ($t5) # t6= a2[s2-1-i] add $t7, $t6, $t4 # t7 la gia tri can gan add $t8, $t0, $s1 # dia chi bo nho sb $t7, 0($t8) addi $t0,$t0,1 j LOOP ##### EXIT1: add $t0, $zero, $zero # i=0 LOOP2: slt $t1, $t0, $s0 beq $t1, $zero, EXIT add $t2, $s1, $t0 lb $a0, 0($t2) addi $v0,$zero, syscall la $a0, string1 addi $v0, $zero, syscall addi $t0, $t0, j LOOP2 EXIT: Kết 1.3 Người sử dụng nhập vào mảng thứ số phần tử cần lấy mảng đó, chương trình xuất phần tử tương ứng .data array1: word 5, 6, 7, 8, 1, 2, 3, 9, 10, size1: word 10 array2: byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 size2: word 16 array3: space size3: word string1: asciiz " " string2: asciiz "\n" str1: asciiz "Nhap mang\n" str2: asciiz "Nhap tri so can tim\n" text la $a0, str1 #thong bao nhap addi $v0, $zero, syscall addi $v0, $zero, # Nhap mang syscall add $t0, $zero, $v0 addi $t1,$zero, addi $t2, $zero,2 #### beq $t0,$t1, DO1 j IF2 DO1: la $a0, str2 #thong bao nhap chi so addi $v0, $zero, syscall addi $v0, $zero, syscall add $t4, $zero, $v0 ## t4 tri so lw $s0, size1 la $s1, array1 sll $t4, $t4,2 add $t4, $t4,$s1 lw $a0, ($t4) #Xuat gia tri addi $v0,$zero, syscall j EXIT ### IF2: beq $t0,$t2, DO2 j EXIT DO2: la $a0, str2 addi $v0, $zero, syscall addi $v0, $zero, syscall add $t4, $zero, $v0 ## t4 tri so lb $s0, size2 la $s1, array2 add $t4, $t4,$s1 lb $a0, ($t4) addi $v0,$zero, syscall j EXIT EXIT: Kết quả: 2.Thao tác với trỏ 2.1 In cửa sổ I/O MARS tất phần tử mảng array1 array2 data array1: word 5, 6, 7, 8, 1, 2, 3, 9, 10, size1: word 10 array2: byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 size2: word 16 array3: space size3: word string1: asciiz " " string2: asciiz "\n" str1: asciiz "Mang : " str2: asciiz "Mang : " text lw $s0, size1 la $s1, array1 add $t0, $zero, $s1 # *i sll $t1, $s0, # kich thuc *4 add $t2, $s1, $t1 # *i chay toi t2 la $a0, str1 addi $v0,$zero, syscall LOOP1: slt $t3, $t0, $t2 beq $t3, $zero, EXIT1 lw $a0, ($t0) addi $v0, $zero, syscall la $a0, string1 addi $v0, $zero, syscall addi $t0,$t0, j LOOP1 EXIT1: la $a0, string2 addi $v0,$zero,4 syscall ### lw $s0, size2 la $s1, array2 add $t0, $zero, $s1 # *i add $t2, $s1, $s0 # *i chay toi t2 la $a0, str2 addi $v0,$zero, syscall LOOP2: slt $t3, $t0, $t2 beq $t3, $zero, EXIT lb $a0, ($t0) addi $v0, $zero, syscall 10 la $a0, string1 addi $v0, $zero, syscall addi $t0,$t0, j LOOP2 EXIT: 2.2 Gán giá trị cho mảng array3 cho: array3[i]=array2[i]+array2[size2-1-i] data array1: word 5, 6, 7, 8, 1, 2, 3, 9, 10, size1: word 10 array2: byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 size2: word 16 array3: space size3: word string1: asciiz " " text lw $s0, size3 la $s1, array3 lw $s2, size2 la $s3, array2 add $t0, $zero, $s1 # *i3 =0 add $t1, $s1,$s0 # *i3 chay toi t1 add $t2, $zero, $s3 #i2 add $t3, $s3, $s2 #*i2 add $t3, $t3, -1 LOOP: slt $t4, $t0,$t1 beq $t4, $zero, EXIT1 lb $t5, ($t2) # t3= a2[i] addi $t2, $t2, 11 lb $t6, ($t3) # t6= a2[s2-1-i] addi $t3, $t3, -1 add $t7, $t6, $t5 # t7 la gia tri can gan sb $t7, 0($t0) addi $t0,$t0,1 j LOOP ##### EXIT1: add $t0, $zero, $s1 # *i3 =0 add $t1, $s1,$s0 # *i3 chay toi t1 LOOP2: slt $t2, $t0, $t1 beq $t2, $zero, EXIT lb $a0, 0($t0) addi $v0,$zero, syscall la $a0, string1 addi $v0, $zero, syscall addi $t0, $t0, j LOOP2 EXIT: 2.3 Người sử dụng nhập vào mảng thứ số phần tử cần lấy mảng đó, chương trình xuất phần tử tương ứng .data array1: word 5, 6, 7, 8, 1, 2, 3, 9, 10, size1: word 10 array2: byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 size2: word 16 array3: space 12 size3: word string1: asciiz " " string2: asciiz "\n" str1: asciiz "Nhap mang\n" str2: asciiz "Nhap tri so can tim\n" text la $a0, str1 addi $v0, $zero, syscall addi $v0, $zero, syscall add $t0, $zero, $v0 addi $t1,$zero, addi $t2, $zero,2 addi $t3, $zero,3 #### beq $t0,$t1, DO1 j IF2 DO1: la $a0, str2 addi $v0, $zero, syscall addi $v0, $zero, syscall add $t4, $zero, $v0 ## t4 tri so lw $s0, size1 la $s1, array1 sll $t4, $t4,2 add $t4, $t4,$s1 lw $a0, ($t4) 13 addi $v0,$zero, syscall j EXIT ### IF2: beq $t0,$t2, DO2 j EXIT DO2: la $a0, str2 addi $v0, $zero, syscall addi $v0, $zero, syscall add $t4, $zero, $v0 ## t4 tri so lb $s0, size2 la $s1, array2 add $t4, $t4,$s1 lb $a0, ($t4) addi $v0,$zero, syscall j EXIT EXIT: Bài tập a Nhập mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử), xuất cửa sổ I/O MARS theo yêu cấu  Xuất giá trị lớn nhỏ mảng  Tổng tất phần tử mảng  Người sử dụng nhập vào số phần tử giá trị phần tử in cửu sổ data array1: word 0:1000 14 str1: asciiz "Nhap so phan tu\n" str2: asciiz "Nhap gia tri tung phan tu\n" str3: asciiz "Gia tri lon nhat la " str4: asciiz "Gia tri nho nhat la " str5: asciiz "Tong tat ca cac phan tu la " str6: asciiz "Nhap tri so can tim\n" str7: asciiz "Gia tri la " string: asciiz "\n" text la $a0, str1 addi $v0, $zero, syscall addi $v0, $zero, syscall add $s0, $zero, $v0 # s0 =n la $a1, array1 add $s1, $zero, $a1 # s1 = *i sll $s2, $s0, add $s2, $s2, $a1 # *i den s2 la $a0, str2 #Thong bao addi $v0, $zero, syscall ##### NHAP: slt $t3, $s1, $s2 beq $t3, $zero, CAUA addi $v0, $zero, syscall sw $v0, 0($s1) addi $s1, $s1, j NHAP 15 ###### CAUA: add $s1, $zero, $a1 lw $t0, ($s1) #max lw $t1, ($s1) #min LOOP: slt $t3, $s1, $s2 beq $t3, $zero, CAUB lw $t4, ($s1) slt $t5, $t0, $t4 beq $t5, $zero, DO1 add $t0, $zero, $t4 j DO DO1: slt $t5, $t4, $t1 beq $t5, $zero, DO add $t1, $zero, $t4 DO: addi $s1, $s1, j LOOP CAUB: la $a0, str3 addi $v0, $zero, syscall add $a0, $zero, $t0 addi $v0, $zero, syscall la $a0, string 16 addi $v0, $zero, syscall la $a0, str4 addi $v0, $zero, syscall add $a0, $zero, $t1 addi $v0, $zero, syscall la $a0, string addi $v0, $zero, syscall ### tinh tong add $s3, $zero, $zero #sum add $s1, $zero, $a1 # i TONG: slt $t3, $s1, $s2 beq $t3, $zero , CAUC lw $t4, ($s1) add $s3, $s3, $t4 addi $s1, $s1, j TONG CAUC: la $a0, str5 addi $v0, $zero, syscall add $a0, $zero, $s3 addi $v0, $zero, syscall 17 la $a0, string addi $v0, $zero, syscall #### la $a0, str6 #nhap chi so addi $v0, $zero, syscall addi $v0, $zero, syscall add $t4, $zero, $v0 la $a0, str7 addi $v0, $zero, syscall sll $t4, $t4, add $t4, $t4, $a1 lw $a0, ($t4) addi $v0, $zero, syscall Kết quả: 18 b) Nhậpmột mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử) Mảng gọi A Chuyển dòng lệnh C sang mã assembly MIPS Với biến nguyên i, j gán vào ghi $s0, $s1; địa mảng số nguyên A lưu ghi $s3 if (i

Ngày đăng: 17/08/2023, 10:33

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w