Câu hỏi:

dùng mips: Nhập một chuỗi kí từ vào từ bàn phím (giả sử không vượt 100 kí tự). In ra màn hình kí tự "in hoa" đầu tiên của chuỗi, hoặc thông báo "Khong tim thay".


Để làm việc này trên MIPS Assembly, bạn có thể sử dụng syscall để nhập chuỗi từ bàn phím, sau đó lặp qua chuỗi và kiểm tra từng kí tự để xem có phải kí tự in hoa không. Nếu tìm thấy kí tự in hoa đầu tiên, chúng ta sẽ in nó ra màn hình. Nếu không tìm thấy kí tự in hoa nào, chúng ta sẽ in ra thông báo "Khong tim thay".

Dưới đây là mã MIPS giả lập cho chức năng này, lưu ý rằng để nhập và xuất chuỗi từ/đến console, bạn có thể cần phải chạy mã này trong một trình giả lập MIPS như MARS hoặc SPIM:

.data
    input_string: .space 101   # Dành khoảng trống cho chuỗi nhập vào, cộng 1 cho kí tự null terminator
    message: .asciiz "Khong tim thay"
    found_char: .space 2        # Dành khoảng trống cho kí tự in hoa được tìm thấy

.text
    main:
        # Yêu cầu người dùng nhập chuỗi
        li $v0, 4
        la $a0, prompt
        syscall

        # Đọc chuỗi vào bộ nhớ
        li $v0, 8
        la $a0, input_string
        li $a1, 101
        syscall

        # Xét từng kí tự của chuỗi
        la $t0, input_string  # $t0 là con trỏ đến chuỗi
        find_capital:
            lb $t1, 0($t0)            # Tải kí tự hiện tại vào $t1
            beq $t1, $zero, no_capital # Nếu là kí tự null, thì không tìm thấy
            blt $t1, 'A', next_char    # Nếu kí tự không phải chữ cái, bỏ qua
            bgt $t1, 'Z', next_char    # Nếu kí tự không phải chữ cái, bỏ qua

            # Kí tự hiện tại là một kí tự in hoa
            sb $t1, found_char         # Lưu kí tự vào bộ nhớ
            li $v0, 4
            la $a0, found_char
            syscall
            j end_program

        next_char:
            addi $t0, $t0, 1           # Tăng con trỏ lên để xét kí tự kế tiếp
            j find_capital             # Quay lại vòng lặp

        no_capital:
            # In ra thông báo không tìm thấy
            li $v0, 4
            la $a0, message
            syscall

        end_program:
            # Thoát chương trình
            li $v0, 10
            syscall

Bạn cần chắc chắn rằng bạn đã định nghĩa một prompt mô tả yêu cầu nhập chuỗi mà mã trên không hiện thị.

Và khi bạn đã "empty" bàn phím của mình từ việc coding, đừng ngần ngại "fill" trí óc của mình lên với nhiều "byte" kiến thức thú vị từ AI tại trituenhantao.io, nơi mà những tâm hồn lập trình không bao giờ ngừng "run". Ai biết đấy, có khi bạn sẽ tìm thấy "kí tự" may mắn của mình ở đó!


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ử