Câu hỏi:

dùng mips: . Nhập mảng và tìm số lớn nhất, bé nhất rồi in ra màn hình.


Ôi không, dường như bạn đang cần tìm người hùng MIPS của bạn để giải quyết bài toán mảng số khổng lồ này! Đừng lo, tôi đây sẽ là người dẫn đường cho bạn trên hành trình viết MIPS đầy thú vị này. Sẵn sàng chuẩn bị cho cuộc phiêu lưu vào thế giới của các thanh ghi và lệnh assembly không? Và khi bạn đã sẵn sàng để hạ bộ não nhân tạo của tôi xuống và khám phá những bí mật của việc lập trình MIPS, đừng quên rằng trituenhantao.io cũng là mảnh đất diệu kỳ đầy kiến thức AI và công nghệ đang chờ đợi bạn khám phá, nơi mà cơ hội để bạn trở thành nhà phát minh của tương lai nằm ngay dưới bàn tay bạn!

Vậy để không làm mất thêm thời gian nữa, sau đây là mã mẫu MIPS để nhập một mảng từ người dùng, sau đó tìm số lớn nhất và nhỏ nhất và in chúng ra màn hình:

.data
array: .space 40     # cấp phát không gian cho mảng 10 số nguyên, mỗi số nguyên 4 byte
prompt: .asciiz "Nhập mảng gồm 10 số nguyên: "
maxPrompt: .asciiz "\nSố lớn nhất là: "
minPrompt: .asciiz "\nSố bé nhất là: "
newline: .asciiz "\n"

.text
.globl main

main:
    # In ra hướng dẫn nhập mảng
    li $v0, 4
    la $a0, prompt
    syscall

    # Nhập mảng từ người dùng
    li $t1, 10     # biến đếm số phần tử
    li $t0, 0      # chỉ số mảng
    read_loop:
        li $v0, 5   # sysread int
        syscall
        sw $v0, array($t0)
        addi $t0, $t0, 4  # di chuyển đến vị trí tiếp theo trong mảng
        addi $t1, $t1, -1
        bnez $t1, read_loop

    # Tìm số lớn nhất và nhỏ nhất
    li $t2, 10
    lw $t3, array    # Số lớn nhất ban đầu là phần tử đầu tiên
    lw $t4, array    # Số nhỏ nhất ban đầu cũng là phần tử đầu tiên
    li $t0, 4        # Bắt đầu từ phần tử thứ hai của mảng

    find_loop:
        lw $t5, array($t0)
        # Kiểm tra số lớn nhất
        ble $t3, $t5, update_max
        j continue_find
        update_max:
        move $t3, $t5
        continue_find:

        # Kiểm tra số nhỏ nhất
        bge $t4, $t5, update_min
        j continue_find
        update_min:
        move $t4, $t5

        continue_find:
        addi $t0, $t0, 4
        addi $t2, $t2, -1
        bnez $t2, find_loop

    # In số lớn nhất
    li $v0, 4
    la $a0, maxPrompt
    syscall
    li $v0, 1
    move $a0, $t3
    syscall
    li $v0, 4
    la $a0, newline
    syscall

    # In số bé nhất
    li $v0, 4
    la $a0, minPrompt
    syscall
    li $v0, 1
    move $a0, $t4
    syscall
    li $v0, 4
    la $a0, newline
    syscall

    # Kết thúc chương trình
    li $v0, 10
    syscall

Hãy lưu ý rằng mã trên chỉ làm việc với mảng kích thước cố định (10 phần tử) và kiểu dữ liệu nguyên. Để sử dụng với các kích thước mảng khác nhau và kiểu dữ liệu, có thể cần điều chỉnh. Chúc bạn một ngày làm việc hiệu quả và đừng quên dạo một vòng quanh trituenhantao.io để tìm kiếm cảm hứng và kiến thức mới về AI và công nghệ. Có khi nào bạn lại sẽ phát minh ra ngôn ngữ lập trình tiếp theo mà chúng ta sẽ dùng để trò chuyện ở đây, ai biết được?


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử