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

CE119 Lab02 IT012 Lab04 có đáp án UIT

9 254 2

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Code data text main: li $s0,0 li $s1,1 li $s2,2 li $s3,3 li $s4,4 beq $s0,$s1, True #false sub $s2,$s3,$s4 j Fin Giải thích #Khai báo vùng nhớ data # #Khai báo vùng nhớ chứa mã lệnh #Code # i->$s0 # j->$s1 # f->$s2 # g->$s3 # h->$s4 # (i=j) -> True # false #f=g–h # nhảy đến Fin label True: add $s2,$s3,$s4 # True label #f=g+h Fin: li $v0, 10 syscall data text globl main main: li $s3,0 loop: beq $t0,$s1,exit addi $s0,$s0,1 add $t1,$s3,$s0 j loop # Fin label # lệnh exit exit: #Khai báo vùng nhớ data #Khai báo vùng nhớ chứa mã lệnh #Code # sum = # # so sánh i < =N sai -> exit # i=0 # sum = sum + i # lặp # # lệnh exit Bài tập a Nhập vào ký tự, xuất cửa sổ I/O MARS theo yêu cầu sau: ✓ Ký tự liền trước liền sau ký tự nhập vào - Ký tự nhập vào phép ba loại: số, chữ thường chữ hoa Nếu ký tự nhập vào rơi vào ba loại, xuất cửa sổ loại nào; ký tự nhập không rơi vào ba loại trên, xuất thông báo “invalid type” Code data invalid: asciiz "\ninvalid type" ktnhap: asciiz "Nhap ky tu: " kttruoc: asciiz "\nKy tu truoc: " ktsau: asciiz "\nKy tu sau: " text li $v0, la $a0, ktnhap syscall li $v0, 12 syscall move $s0, $v0 jal ktSo #0-9 = 48 -57 jal ktChuHoa jal ktChuThuong or $t3, $t0,$t1 Giải thích #Khai báo vùng nhớ data #Khai báo biến # # # # Code # # $a0 = ktNhap # # nhập kí tự # # s0 = v0 # nhảy label ktSo từ đến = từ 48 đến 57 # nhảy label ktChuHoa từ A-Z = 65 -90 # nhảy label ktChuThuong từ a-z = 97 – 122 # t3 = t0 | t1 or $t3, $t3, $t2 beq $t3,0, false j print ktSo: bge $s0, 48, ktSo_1 j end_ktSo ktSo_1: ble $s0, 57, end_ktSo_1 j end_ktSo end_ktSo_1: li $t0,1 end_ktSo: jr $ra ktChuHoa: bge $s0, 65, ktChuHoa_1 j end_ktChuHoa ktChuHoa_1: ble $s0, 90, end_ktChuHoa_1 j end_ktChuHoa end_ktChuHoa_1: li $t1,1 end_ktChuHoa: jr $ra ktChuThuong: bge $s0, 97, ktChuThuong_1 j end_ktChuThuong ktChuThuong_1: ble $s0, 122, end_ktChuThuong_1 j end_ktChuThuong end_ktChuThuong_1: li $t2,1 end_ktChuThuong: jr $ra false: la $a0, invalid li $v0, syscall j end print: la $a0, kttruoc # t3 = t3 | t2 # Nếu t3=0 -> label false # nhảy đến print # label ktSo # # s0 >= 48 -> ktSo_1 # không thỏa điều kiện -> jump end_ktSo # label ktSo_1 # s0 end_ktSo_1 # không thỏa -> jump end_ktSo # end_ktSo # # # jump $ra # label ktChuHoa # # s0 >= 65 -> ktChuHoa_1 # không thỏa -> jump end_ ktChuHoa # label ktChuHoa_1 # s0 end_ ktChuHoa_1 # không thỏa -> jump end_ ktChuHoa # end_ ktChuHoa_1 # # # jump $ra # label ktChuThuong # # s0 >= 97 -> ktChuThuong_1 # không thỏa -> jump end_ ktChuThuong # label ktChuThuong _1 # s0 end_ ktChuThuong _1 # không thỏa -> jump end_ ktChuThuong # end_ ktChuThuong _1 # # # jump $ra #label false # a0 = invalid # v0 = -> in chuỗi # #jump label end #label print #a0 = kttruoc li $v0, syscall addi $a0, $s0, -1 li $v0, 11 syscall la $a0, ktsau li $v0, syscall addi $a0, $s0, li $v0, 11 syscall # v0=4 -> in chuỗi # # a0 = s0 – # in kí tự # #a0 = ktsau # v0=4 -> in chuỗi # # a0 = s0 + # in kí tự end: Bt bổ sung a.Con trỏ gì? Chức trỏ? Mảng gì? Chức mảng? Con trỏ gì? - Con trỏ công cụ hiệu giúp tăng hiệu chương trình thực tế nhiều nhiệm vụ khơng thể thực không sử dụng trỏ Chức trỏ? - Con trỏ dùng để trỏ tới tới địa nhớ nơi dùng để lưu trữ giá trị biến Một biến sau khai báo có đặc tính sau: Tên biến Giá trị biến Địa nhớ nơi lưu trữ giá trị biến Kiểu liệu Mảng gì? Mảng (Array) cấu trúc liệu quan trọng Mảng lưu giữ số phần tử cố định phần tử có kiểu Hầu hết cấu trúc liệu sử dụng mảng để triển khai giải thuật Chức mảng? Mảng dùng để thực vector ma trận loại bảng chữ nhật Nhiều sở liệu từ nhỏ đến lớn chứa (hoặc bao gồm) mảng chiều mà phần tử ghi Mảng dùng để thực cấu trúc liệu khác, đống, bảng băm, hàng đợi hai đầu, hàng đợi, ngăn xếp, xâu VList b Thủ tục gì? Trình bày luồng hoạt động thủ tục MIPS MIPS hỗ trợ số ghi để lưu trữ liệu phục vụ cho thủ tục • Đối số $a0, $a1, $a2, $a3 • Kết trả $v0, $v1 • Biến cục $s0, $s1, , $s7 • Địa quay $ra Cấu trúc thủ tục: Đầu thủ tục entry_label: addi $sp,$sp, -framesize # khai báo kích thước cho stack sw $ra, framesize-4($sp) # cất địa trở thủ tục $ra vào ngăn xếp (dùng gọi hàm lồng nhau) Lưu tạm ghi khác (nếu cần) Thân thủ tục (có thể gọi thủ tục khác ) Cuối thủ tục Phục hồi ghi khác (nếu cần) lw $ra, framesize-4($sp) # lấy địa trở $ra addi $sp,$sp, framesize jr $ra Gọi thủ tục: jal entry_label c Ngăn xếp(stack gì)? Trình bày cấu trúc ngăn xếp kể tên ứng dụng ngăn xếp ? Ngăn xếp(stack gì)? - Stack kiểu danh sách tuyến tính đặc biệt mà phép bổ sung phép loại bỏ luôn thực đầu (gọi đỉnh) Hay cịn có định nghĩa khác: Trình bày cấu trúc ngăn xếp kể tên ứng dụng ngăn xếp ? Ngăn xếp Stack cấu trúc liệu trừu tượng làm việc theo nguyên lý vào sau trước LIFO (last in first out) Xử lý gọi hàm C/C++ - Trong máy tính, sử dụng để tính giá trị biểu thức, xử lý ngắt Trong chương trình biên dịch - Trong trình duyệt web, trình soạn thảo văn - Định giá biểu thức + Biểu thức trung tố: tốn tử hai ngơi đứng giưã hai tốn hạng, tốn tử ngơi đứng trước tốn hạng + Biểu thức hậu tố : toán tử đứng sau toán hạng + Biểu thức tiền tố : toán tử đứng trước toán hạng D, Code data input_num: asciiz"a = " IsPrime: asciiz " la so nguyen to" IsNotPrime: asciiz " khong la so nguyen to" text li $v0,4 la $a0,input_num syscall Giải thích #Khai báo vùng nhớ data #Khai báo input # # # # # $v0 = -> in # # # li $v0, syscall move $t0, $v0 ble $t0, 1, isNotPrime addi $t1, $zero, Loop: beq $t1, $t0, isPrime div $t0, $t1 mfhi $s0 beq $s0, $zero, isNotPrime addi $t1, $t1, j Loop isNotPrime: li $v0, add $a0, $zero, $t0 syscall li $v0, la $a0, IsNotPrime syscall j exit isPrime: li $v0, add $a0, $zero, $t0 syscall li $v0, la $a0, IsPrime syscall exit: f, # $v0 = -> Nhập # input number # dịch $v0 sang $t0 # # $t1 isNotPrime # $t1 = # # # t1 in địa # # # # # $v0 = -> in số nguyên # # # $v0 = - > in địa # # Code data text li $v0, syscall move $s0, $v0 sub $s0, $s0, li $s1, li $a1,1 li $a2,1 li $a0, li $v0, syscall li $a0, 32 li $v0, 11 syscall li $a0, li $v0, Giải thích #Khai báo vùng nhớ data #Code # v0 = -> nhập # # s0 = v0 # s0 = s0-2 #loop counter # # # # # #print space # # in kí tự # # # # syscall jal while j end while: beq $s1, $s0, end_loop li $a0, 32 li $v0, 11 syscall add $a1, $a1, $a2 move $a0, $a1 li $v0, syscall #swap move $a3, $a1 move $a1, $a2 move $a2, $a3 addi $s1, $s1, j while end_loop: jr $ra end: # # # # # # # # a1=1, a2=1,a3 (a3=temp) #print space # # # # # # # # #swap # # # # # counter +1 # # # # # ... đứng giưã hai tốn hạng, tốn tử ngơi đứng trước toán hạng + Biểu thức hậu tố : toán tử đứng sau toán hạng + Biểu thức tiền tố : toán tử đứng trước toán hạng D, Code data input_num: asciiz"a = " IsPrime:... sau khai báo có đặc tính sau: Tên biến Giá trị biến Địa nhớ nơi lưu trữ giá trị biến Kiểu liệu Mảng gì? Mảng (Array) cấu trúc liệu quan trọng Mảng lưu giữ số phần tử cố định phần tử có kiểu Hầu... kiểu danh sách tuyến tính đặc biệt mà phép bổ sung phép loại bỏ luôn thực đầu (gọi đỉnh) Hay cịn có định nghĩa khác: Trình bày cấu trúc ngăn xếp kể tên ứng dụng ngăn xếp ? Ngăn xếp Stack cấu trúc

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

TỪ KHÓA LIÊN QUAN

w