30/09/2018, 18:43
Lỗi ghi đè kiểu asciiz trong MIPS
mình có mã nguồn của MIPS này
.data
str1: .asciiz " "
str2: .asciiz " "
.globl main
.text
main:
#nhap chuoi str1
li $v0, 8
la $a0, str1
la $a1, 20
syscall
#nhap chuoi str2
li $v0, 8
la $a0, str2
la $a1, 20
syscall
#xuat chuoi str1
li $v0, 4
la $a0, str1
syscall
#xuat chuoi str1
li $v0, 4
la $a0, str2
syscall
#thoat
li $v0, 10
syscall
khi mình nhập xong str1 rồi nhập str2 thì xuất ra thì str1 bị đè lên. Mọi người giải thích giúp mình với, cảm ơn mọi người
Bài liên quan
Bạn khai báo chuỗi str1 quá ngắn mà bạn nhập một đoạn dài hơn độ dài str1, đồng thời các vùng nhớ liên tiếp nhau, nên nó sẽ bị str2 ghi đè lên.
mình khai báo cho nó là 20byte mà mình chỉ nhập vài kí tự thôi bạn :). Còn tại sao các vùng nhớ của nó lại liên tiếp nhau? Minh chuyển sang xài kiểu .space thì ko sao. Vậy tại sao .space ko có hiện tượng này vậy bạn? Cảm ơn bạn
Bạn chưa khai báo 20 kí tự đâu, .space x là khai báo một vùng nhớ x byte. Tại sao các vùng nhớ liên tiếp nhau thì tại vì người ta quy định như thế