Hướng dẫn thực hành Kiến trúc máy tính - Bài số 3

TRƯỜNG ĐẠI HỌC BÁCH KHOA  
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH  
Hướng dn thực hành  
Môn: Kiến Trúc Máy Tính - 504002  
Bài thực hành số 3  
TP. HCM 9/2014  
Bảng tóm tắt các lệnh trong bài thực hành  
Instruction  
Meaning  
Instruction Format  
add  
$s1, $s2, $s3  
$s1 = $s2 + $s3  
$s1 = $s2 + $s3  
op = 0 rs = $s2 rt = $s3  
rd = $s1 sa = 0  
rd = $s1 sa = 0  
f = 0x20  
f = 0x21  
addu $s1, $s2, $s3  
op = 0 rs = $s2 rt = $s3  
op = 0 rs = $s2 rt = $s3  
op = 0 rs = $s2 rt = $s3  
op = 0 rs = $s2 rt = $s3  
op = 0 rs = $s2 rt = $s3  
sub  
$s1, $s2, $s3  
$s1 = $s2 $s3  
$s1 = $s2 $s3  
$s1 = $s2 & $s3  
$s1 = $s2 | $s3  
rd = $s1 sa = 0  
rd = $s1 sa = 0  
rd = $s1 sa = 0  
rd = $s1 sa = 0  
f = 0x22  
f = 0x23  
f = 0x24  
f = 0x25  
subu $s1, $s2, $s3  
and  
or  
$s1, $s2, $s3  
$s1, $s2, $s3  
xor  
nor  
sll  
$s1, $s2, $s3  
$s1, $s2, $s3  
$s1,$s2,10  
$s1 = $s2 ^ $s3  
$s1 = ~($s2|$s3)  
$s1 = $s2 << 10  
op = 0 rs = $s2 rt = $s3  
op = 0 rs = $s2 rt = $s3  
rd = $s1 sa = 0  
rd = $s1 sa = 0  
rd = $s1 sa = 10  
f = 0x26  
f = 0x27  
f = 0x00  
op = 0  
op = 0  
op = 0  
rs = 0  
rs = 0  
rs = 0  
rt = $s2  
rt = $s2  
rt = $s2  
srl  
sra  
$s1,$s2,10  
$s1 = $s2>>>10  
$s1 = $s2 >> 10  
(Hi, Lo) = $s1*$s2  
(Hi, Lo) = $s1*$s2  
rd = $s1 sa = 10  
rd = $s1 sa = 10  
f = 0x02  
f = 0x03  
f = 0x18  
f = 0x19  
f = 0x1A  
$s1, $s2, 10  
mult $s1, $s2  
multu $s1, $s2  
op = 0 rs = $s1 rt = $s2  
op = 0 rs = $s1 rt = $s2  
op = 0 rs = $s1 rt = $s2  
rd = 0  
rd = 0  
rd = 0  
sa = 0  
sa = 0  
sa = 0  
div  
$s1, $s2  
Hi = $s1/$s2  
Lo = $s1%$s2  
divu $s1, $s2  
Hi = $s1/$s2  
op = 0 rs = $s1 rt = $s2  
rd = 0  
sa = 0  
f = 0x1B  
Lo = $s1%$s2  
mfhi $s1  
mflo $s1  
$s1 = Hi  
$s1 = Lo  
op = 0  
op = 0  
rs = 0  
rs = 0  
rt = 0  
rt = 0  
rd = $s1 sa = 0  
rd = $s1 sa = 0  
f = 0x10  
f = 0x12  
Các lệnh số học/luận lý có hằng số  
Imm16 = 10  
addi $s1, $s2, 10  
addiu $s1, $s2, 10  
andi $s1, $s2, 10  
$s1 = $s2 + 10  
op = 0x8 rs = $s2 rt = $s1  
op = 0x9 rs = $s2 rt = $s1  
op = 0xc rs = $s2 rt = $s1  
op = 0xd rs = $s2 rt = $s1  
op = 0xe rs = $s2 rt = $s1  
$s1 = $s2 + 10  
$s1 = $s2 & 10  
$s1 = $s2 | 10  
$s1 = $s2 ^ 10  
$s1 = 10 << 16  
Imm16 = 10  
Imm16 = 10  
Imm16 = 10  
Imm16 = 10  
Imm16 = 10  
ori  
$s1, $s2, 10  
xori $s1, $s2, 10  
lui  
$s1, 10  
op = 0xf  
0
rt = $s1  
Các lệnh rẽ nhánh, nhảy  
Imm26  
j
label  
jump to label  
op = 2  
Imm16  
Imm16  
Imm16  
Imm16  
Imm16  
Imm16  
0
beq  
bne  
$s1, $s2, label  
$s1, $s2, label  
branch if ($s1 == $s2) op = 4 rs = $s1 rt = $s2  
branch if ($s1 != $s2) op = 5 rs = $s1 rt = $s2  
blez $s1, label  
bgtz $s1, label  
bltz $s1, label  
bgez $s1, label  
branch if ($s1 <= 0)  
branch if ($s1 > 0)  
branch if ($s1 < 0)  
branch if ($s1 >= 0)  
$t0=($s1<$s2?1:0)  
op = 6 rs = $s1  
op = 7 rs = $s1  
op = 1 rs = $s1  
op = 1 rs = $s1  
0
0
0
1
slt  
$t0,$s1,$s2  
op = 0 rs = $s1 rt = $s2  
rd = $t0  
f = 0x2a  
sltu $t0,$s1,$s2  
slti $t0,$s1,10  
sltiu $t0,$s1,10  
$t0=($s1<$s2?1:0)  
$t0=($s1<10?1:0)  
$t0=($s1<10?1:0)  
op = 0 rs = $s1 rt = $s2  
op = 0xa rs = $s1 rt = $t0  
op = 0xb rs = $s1 rt = $t0  
rd = $t0  
0
f = 0x2b  
Imm16 = 10  
Imm16 = 10  
Thực hành kiến trúc máy tính  
Bài thực hành sꢀ 3  
Bꢀi thꢁc hꢀnh nꢀy nhꢂm mꢃc đꢄch nꢅm đưꢆc cꢇch dꢈng cꢇc lꢉnh rꢊ nhꢇnh, lꢉnh nhꢋy.  
Bên cꢌnh đꢍ cꢎng giꢏp sinh viên viꢐt cꢇc chương trꢑnh cꢍ cꢒu trꢏc như cꢇc ngôn ngꢓ cꢒp  
cao  
Tham khꢀo các sơ đꢁ cꢂu trúc cꢃa phát biểu (if-else, for, while, do-while) ꢄ các hꢅnh sau  
để hoàn thành các bài tꢆp bên dưới.  
start  
start  
   i   o   ng   p  
   u    n?  
  ng  
   u    n?  
  ng  
Sai  
  nh    if  
Sai  
  nh    else  
Code block  
Update    u    c  
end  
for  
Hꢅnh 1: Cꢂu trúc lꢇnh if/else  
end  
Hꢅnh 2: cꢂu trúc lꢇnh for  
5
Thực hành kiến trúc máy tính  
Bài thực hành sꢀ 3  
start  
start  
Code block  
  ng  
   u    n?  
   u    n?  
  ng  
Sai  
Sai  
Code block  
end  
Hꢅnh 4: Cꢂu trúc lꢇnh do-while  
end  
Hꢅnh 3: Cꢂu trúc lꢇnh while  
Sinh viên chuyển cꢇc cꢒu trꢏc sau của ngôn ngꢓ C qua ngôn ngꢓ assembly, ꢔ mꢕi câu  
thꢁc hꢀnh lưa lꢌi thꢀnh file vꢀ đưꢆc đꢖt tên theo format mssv_lab_bai.[asm,txt]. Vꢄ dꢃ:  
5130xxxx_lab2_bai1a.asm  
Bài 1. Phát biểu if/ else  
Nhꢆp giá trꢈ cꢃa a tꢉ bàn phím. Tính giá trꢈ cꢃa c khi biết b = 20, d = 10.  
if (a >= 0) {  
c = b + d;  
} else {  
c = b d;  
}
a, b, c, d lần lược là $s0, $s1, $s2, $s3  
6
 
Thực hành kiến trúc máy tính  
Bài thực hành sꢀ 3  
# Program: Lab3 bai1; Look at slide #22, #23 of Chapter03_2 for more #  
info about the system functions  
.data  
str_a: .asciiz "\nNhap a: "  
output: .asciiz "\nKet qua C: "  
.text  
main:  
# Start of code section  
# Execution begins at label "main"  
#b = $s1 = 20  
addi $s1,$0,20  
ori  
$s3,$0,10  
$v0,4  
#d = $s3 = 10  
li  
la  
# system call code for printing string = 4  
$a0, str_a # load address of string to be printed into $a0  
syscall  
li  
$v0,5  
# system call code for reading an Integer  
syscall  
or  
$s0,$0,$v0 # a = $s0 = $v0 = value read  
...  
#Putting your code here  
li  
la  
$v0,4  
# system call code for printing string = 4  
$a0,output # load address of string to be printed into $a0  
syscall  
# call operating system to perform operation;  
# system call code for printing Integer = 1  
li  
or  
$v0,1  
$a0,$0,$s2 # load value of c to be printed into $a0  
syscall  
# call operating system to perform operation;  
Bài 2. Phát biểu for  
Dꢊng vꢋng lꢌp for để xuꢂt ra giá trꢈ cꢃa số fibonaci thꢍ n. số n đưꢎc nhꢆp tꢉ ngưꢏi dꢊng.  
f0 = 0;  
f1 = 1;  
7
 
Thực hành kiến trúc máy tính  
Bài thực hành sꢀ 3  
for ( $t0 = n; $t0 >= 0; $t0 --){  
fn = fn-1 + fn-2 ;  
}
Dꢐy số fibonacci (Nguꢁn: http://en.wikipedia.org/wiki/Fibonacci_number)  
F0  
F1  
F2  
F3  
F4  
F5  
F6  
F7  
13  
F17  
987 1597  
F8  
21  
F9  
34  
0
1
1
2
3
5
8
F10  
55  
F11  
89  
F12  
F13  
F14  
F15  
F16  
F18  
F19  
144  
233  
377  
610  
2584  
4181  
Bài 3. Phát biểu switch-case  
Hiꢇn thực phát biểu switch-case bên dưới bꢑng hꢎp ngꢒ. Cho biết b = 10 , c = 5. Giá trꢈ  
input đưꢎc nhꢆp tꢉ ngưꢏi dꢊng.  
switch (input)  
{
Case 0: a = b + c; break;  
case 1: a = b c; break;  
case 2: a = b × c; break;  
case 3: a = b ÷ c; break;  
default: NOP; break;  
}
Bài 4. Phát biểu while  
Dꢊng vꢋng lꢌp while để tính tꢓng cꢃa n số đꢔu tiên. Thꢕ nghiꢇm với n ≥ 5  
i = 0;  
sum = 0;  
while ( i != n){  
sum = sum + i;  
i = i + 1;  
}
8
 
pdf 8 trang Thùy Anh 28/04/2022 6400
Bạn đang xem tài liệu "Hướng dẫn thực hành Kiến trúc máy tính - Bài số 3", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfhuong_dan_thuc_hanh_kien_truc_may_tinh_bai_so_3.pdf