Professional Documents
Culture Documents
HỒ CHÍ MINH
TRƯỜNG ĐAI HỌC CÔNG NGHỆ THÔNG TIN
1
MỤC LỤC:
2.Thực hành.......................................................................................................................... 2
2.1 Chuyển đoạn code trong bảng sang MIPS và sử dụng MARS để kiểm tra lại kết quả:. 3
3. Bài tập............................................................................................................................... 3
a Nhập vào một ký tự, xuất ra cửa sổ I/O của MARS theo từng yêu cầu sau:.....................3
Ký tự liền trước và liền sau của ký tự nhập vào........................................................3
Ký tự nhập vào chỉ được phép là ba loại: số, chữ thường và chữ hoa.Nếu không
xuất “invalid type:..........................................................................................................4
b) Nhập từ bàn phím 2 số nguyên, in ra cửa sổ I/O của MARS theo từng yêu cầu sau:. .5
2
2.Thực hành
2.1 Chuyển đoạn code trong bảng sang MIPS và sử dụng MARS để kiểm tra lại kết quả:
LOOP:
S3 =1 khi s0<s1 (i<n)
slt $s3, $s0, $s1
Nếu s3 ==0 (s0>=s1) thì EXIT
beq $s3, $0, EXIT
Nếu s3==1 (s0<s1) thì thực thiện
add $s2, $s2, $s0
S2=s2+s0 và s0=s0+1;
addi $s0, $s0, 1
Nhảy lại lệnh LOOP thực hiện lại vòng
j LOOP
lặp
EXIT:
add $s2, $s2, $s1 Gán s2=s2+s1
(Với giá trị của i, N, Sum lần lượt chứa trong các thanh ghi $s0, $s1, $s2)
3
3. Bài tập
a Nhập vào một ký tự, xuất ra cửa sổ I/O của MARS theo từng yêu cầu sau:
Ký tự liền trước và liền sau của ký tự nhập vào
Áp dụng mã ASCII
MIPS Ý nghĩa
.text
li $v0, 12
syscall Nhập kí tự
la $s0, ($v0)
Gán a0= s0-1 (ký tự đứng trước)
add $a0, $s0, -1
li $v0, 11 Xuất kí tự ở a0
syscall Gán a0=s0+1 (ký tự đứng sau)
add $a0, $s0, 1
li $v0, 11 Xuất kí tự ở a0
syscall
Ký tự nhập vào chỉ được phép là ba loại: số, chữ thường và chữ hoa. Nếu ký tự nhập
vào rơi vào một trong ba loại, xuất ra cửa sổ đó là loại nào; nếu ký tự nhập không rơi
vào một trong ba loại trên, xuất ra thông báo “invalid type:
a là kí tự, áp dụng bảng mã ASCII, ta có
48<=a<=57 : a là số
65<=a<=90: a là chữ hoa
97<=a<=122: a la chữ thường
MIPS Ý nghĩa
.data
string1: .asciiz "la so"
string2: .asciiz "la chu thuong"
string3: .asciiz "la chu hoa"
string4: .asciiz "invalid type"
.text
li $v0, 12
syscall Nhập kí tự và gán vào s0
la $s0, ($v0) Gán t1 =1 để so sánh
li $t1, 1
Gán s1=1 nếu s0<48
Nếu s1==t1 thì thực hiện lệnh EXIT
slti $s1, $s0, 48 # s0<48
Gán s1 =1 nếu s0<58
beq $s1, $t1, EXIT
4
slti $s1, $s0, 58 Nếu s1==0 thì thực hiện lệnh EXIT 1
beq $s1, $0, EXIT1 Nếu (s0>=48 && s0<=57) thì xuất ra chuỗi
la $a0, string1 string1
li $v0, 4
syscall Nhảy đến END
j END
EXIT1: Gán s1=1 khi s0<65
slti $s1, $s0, 65 # s0 <64 Nếu s1==1 thì thực hiện EXIT, không thì tiếp tục
beq $s1, $t1, EXIT Gán s1= 1 khi s0<91
slti $s1, $s0, 91 Nếu s1==0 thì thực hiện EXIT 2
beq $s1, $0, EXIT2 Nếu s1==1 thì xuất chuối 3 và nhảy tới lệnh END
la $a0, string3
li $v0, 4
syscall
j END Gán s1=1 khi s0<96
EXIT2: Nếu s1==1 thì thực hiện EXIT, không thì tiếp tục
slti $s1, $s0, 97 # s0 <96 Gán s1= 1 khi s0<123
beq $s1, $t1, EXIT Nếu s1==0 thì thực hiện EXIT 2
slti $s1, $s0, 123 Nếu s1==1 thì xuất chuối 4 và nhảy tới lệnh END
beq $s1, $0, EXIT
la $a0, string2
li $v0, 4
syscall
Vì a0 không phải là chữ và số nên xuất ra chuỗi 4
j END
và thoát
EXIT:
la $a0, string4
li $v0, 4
syscall
END:
b) Nhập từ bàn phím 2 số nguyên, in ra cửa sổ I/O của MARS theo từng yêu cầu sau:
Số lớn hơn
MIPS Ý nghĩa
.text
li $v0, 5
syscall
Nhập số thứ nhất gán vào s0
la $s0, ($v0)
li $v0, 5
syscall Nhập số thứ hai gán vào s1
la $s1, ($v0)
5
## Nếu s0<s1 thì s2=1, Nếu s0==s1 thì s2=0
slt $s2, $s0, $s1 Nếu s1 != s0 thì thực hiện lệnh ELSE
bne $s1, $s0, ELSE Nếu s1==s0 thì nhảy tới END để kết thúc
j END
ELSE: Nếu s2==0 (s0>s1) thì thực hiện lệnh ELSE1 để xuất s0
beq $s2, $0, ELSE1 Nếu s2==1 (s0<s1) thì xuất s1
li $v0, 1
la $a0, ($s1)
syscall
j END
ELSE1:
li $v0, 1
la $a0, ($s0)
syscall
END: