Hướng dẫn thực hành môn Kiến trúc máy tính - Bài thực hành số 4
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
Hướng dẫn 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
Thực hành kiến trúc máy tính
ự 4
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
op = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
f = 0x20
f = 0x21
addu $s1, $s2, $s3
sub
$s1, $s2, $s3
$s1 = $s2 – $s3
$s1 = $s2 – $s3
$s1 = $s2 & $s3
$s1 = $s2 | $s3
op = 0
op = 0
op = 0
op = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
rs = $s2 rt = $s3 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
op = 0
op = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
rs = $s2 rt = $s3 rd = $s1 sa = 0
f = 0x26
f = 0x27
f = 0x00
rs = 0
rs = 0
rs = 0
rt = $s2 rd = $s1 sa = 10
rt = $s2 rd = $s1 sa = 10
rt = $s2 rd = $s1 sa = 10
srl
sra
$s1,$s2,10
$s1 = $s2>>>10
$s1 = $s2 >> 10
(Hi, Lo) = $s1*$s2
(Hi, Lo) = $s1*$s2
op = 0
op = 0
op = 0
op = 0
op = 0
f = 0x02
f = 0x03
f = 0x18
f = 0x19
f = 0x1A
$s1, $s2, 10
mult $s1, $s2
multu $s1, $s2
rs = $s1 rt = $s2
rs = $s1 rt = $s2
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
branch if ($s1 == $s2) op = 4
branch if ($s1 != $s2) op = 5
Imm16
Imm16
Imm16
Imm16
Imm16
beq
bne
$s1, $s2, label
$s1, $s2, label
rs = $s1 rt = $s2
rs = $s1 rt = $s2
blez $s1, label
bgtz $s1, label
bltz $s1, label
branch if ($s1 <= 0)
branch if ($s1 > 0)
branch if ($s1 < 0)
op = 6
op = 7
op = 1
rs = $s1
rs = $s1
rs = $s1
0
0
0
3
Thực hành kiến trúc máy tính
ự 4
bgez $s1, label
slt $t0,$s1,$s2
branch if ($s1 >= 0)
$t0=($s1<$s2?1:0)
$t0=($s1<$s2?1:0)
$t0=($s1<10?1:0)
$t0=($s1<10?1:0)
op = 1
op = 0
op = 0
rs = $s1
1
Imm16
rs = $s1 rt = $s2
rs = $s1 rt = $s2
rd = $t0
rd = $t0
0
f = 0x2a
f = 0x2b
sltu $t0,$s1,$s2
slti $t0,$s1,10
sltiu $t0,$s1,10
0
op = 0xa rs = $s1 rt = $t0
op = 0xb rs = $s1 rt = $t0
Imm16 = 10
Imm16 = 10
Các lệnh truy xuất bộ nhớ load và store
$s1, imm16($s0)
s1 = MEM[s0+imm16] op = 0x20 rs = $s0 rt = $s1
Imm16
Imm16
Imm16
Imm16
Imm16
Imm16
Imm16
Imm16
lb
lh
$s1, imm16($s0)
$s1, imm16($s0)
$s1, imm16($s0)
$s1, imm16($s0)
$s1, imm16($s0)
$s1, imm16($s0)
$s1, imm16($s0)
s1 = MEM[s0+imm16] op = 0x21 rs = $s0 rt = $s1
s1 = MEM[s0+imm16] op = 0x23 rs = $s0 rt = $s1
s1 = MEM[s0+imm16] op = 0x24 rs = $s0 rt = $s1
s1 = MEM[s0+imm16] op = 0x25 rs = $s0 rt = $s1
MEM[s0+imm16] = s1 op = 0x28 rs = $s0 rt = $s1
MEM[s0+imm16] = s1 op = 0x29 rs = $s0 rt = $s1
MEM[s0+imm16] = s1 op = 0x2b rs = $s0 rt = $s1
lw
lbu
lhu
sb
sh
sw
4
Thực hành kiến trúc máy tính
B ng tóm t t các l nh trong bài thực hành
ự 4
s ore( ), oa ( ),
a o arra (BYTE, HALF, WORD, FLOAT, DOUBLE, ASCII, ASCIIZ,
SPACE … ) r arra . a e
eo or a ss a a as , : 5130xxxx_lab4_bai1a.asm
B 1. ệ ệ .
ư ướ 2 lab 2).
với a = 4, b = 3, c = 2, d = 1
a, b, c, d ố ư ư sẵn ở vùng data ị
ị kq ư ẵ ướ .
.data
x:
a:
b:
c:
d:
.word
.word
.word
.word
.word
0
1
2
3
4
0
kq: .word
.text
main:
#quan sát giá trị “kq” ở cửa sổ “da a”
#$s0 chứa địa chỉ của biến x
la
$s0, x
#địa chỉ biến (a, b, c, d, kq) lần lược là $s0 +
#(4, 8, 12, 16, 20)
#thêm code tính toán biểu thức f
D – – .
B 2. ắ ả
10 sau:
1, 6, 3, 23, 3, 7, 8, 34, 24, 50
ế ư ế ạ n.
5
Thực hành kiến trúc máy tính
ự 4
B 3.
ự :
“K M 13”
ế ạ ư ớ ự ự
ế ế ư ư ạ ự .
B 4. Xuất giá trị ra LED 7 oạn
S d ng công c “Digital Lab Sim” (trong menu “Tool”), viết chư ng trình hi n thị số có
hai ch số bất kỳ ư c nhập t ngư i dùng.
Đoạn chư ng trình mẫu dưới ây hi n thị số “10” . Tham kh o ph n “Help” c a công c
này hi u rõ chư ng trình.
# Display LED's Value using Digital Lab Sim,
# please read "help"
.data
LEDL: .byte
LEDR: .byte
1
0
# Left Digit value
# Right Digit value
LEDFONT1: .byte 0x3f, 0x06, 0x5b, 0x4f
.text
la
la
la
li
li
$t0, LEDL #load address of Left Digit value byte
$t1, LEDR # load address of Right Digit value byte
$t5, LEDFONT1
$t2, 0xFFFF0011
$t3, 0xFFFF0010
# load address of Left Digit
# load address of Right Digit
# load value of Left Digit
lbu $t0, 0($t0)
6
Thực hành kiến trúc máy tính
ự 4
lbu $t1, 0($t1) #load value of Right Digit
add $t0,$t0,$t5 #get the LEDFONT1[LEDL]
lb
$t0,0($t0)
sb
$t0, 0($t2) #push the LEDFONT1[LEDL] to Left LED
add $t1,$t1,$t5 # get the LEDFONT1[LEDR]
lb
$t1,0($t1)
sb
$t1, 0($t3) # push the LEDFONT1[LEDR] to Right LED
li
syscall
$v0, 10
# system call for exit
# we are out of here.
7
Bạn đang xem tài liệu "Hướng dẫn thực hành môn Kiến trúc máy tính - Bài thực hành số 4", để 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:
- huong_dan_thuc_hanh_mon_kien_truc_may_tinh_bai_thuc_hanh_so.pdf