1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn học thực hành kiến trúc máy tính

68 6 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thực hành kiến trúc máy tính
Tác giả NGUYấN TUẦN ANH
Người hướng dẫn TRAN DAI DUONG
Trường học TRƯỜNG ĐẠI HỌC CễNG NGHỆ THONG TIN
Chuyên ngành Kiến trúc máy tính
Thể loại Báo cáo môn học
Năm xuất bản 2020
Thành phố TP. Hề CHÍ MINH
Định dạng
Số trang 68
Dung lượng 3,49 MB

Nội dung

- Ký tự: đặt trong ngoặc nhảy đơn.. ?khai báo dữ liệu .text #viết chương trình sau .text main: #nhãn đề cho người dùng biết nơi bắt đầu chương trình.. #viết chương trình sau đây... đ Nh

Trang 1

DAI HOC QUOC GIA TP HO CHI MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THONG TIN KHOA KỸ THUẬT MÁY TÍNH

BAO CAO MON HOC THUC HANH KIEN TRUC MAY TINH

CE119.L12.MTCL.1

SINH VIEN THUC HIEN: NGUYÊN TUẦN ANH - 19520794

TP HÒ CHÍ MINH, 12/2020

Trang 2

MUC LUC

1.1.4/ Cau trite ctia 1 churong trinh cccccccccssssssssssssssssssscssssssssssssssssseessessssecsssseessssesssssss 2

mm 7

1.1.1/ Cấu trúc 1Ÿ — else -2-+ccccstttrecvEEEEirvEEEttirvttrtrirrrrrrrrrrrrrrrrrrrrrie 10 1.1.2/ Cau tric switch — case 11 1.1.3/ Cấu trúc vòng lặp for 11 1.2/ Thực hàành 5-5-6 55% se S33 h2 31x 13 13 913 13 14.1 15 E13 g7 ng ch che ươm 11 1.2.1/ Chuyên đoạn code trong bảng theo sau sang MIPS và sử dụng MARS để

kiểm tra lại kết quả: 11

1.3/ Bải tẬp ch HH HH HH 1g HH 111.111.1111 15

Trang 3

1.1.2/ Nhắc lại về khai báo biến,kiểu dữ liệu

1.1.3/ Mang vao con trỏ

1.2/ Thực hàành 5-5-6 55% se S33 h2 31x 13 13 913 13 14.1 15 E13 g7 ng ch che ươm

Trang 4

DANH MUC HiNH ANH

Sơ đổ giải thuật Yêu cầu 1

Sơ đổ giải thuật Yêu cầu 2

Sơ đổ giải thuật Yêu cầu 3

Sơ đổ giải thuật 1.3 Lab4 Stack trong trường hợp 5!

Stack trong trường hợp 10!

II

Trang 5

Biểu diễn thông tin trong bộ nhớ

Chuyển đoạn code

Chuyển đoạn code 2

Bài tập 1.3.a

Bài tập thực hành Bài tập 1.3.a Lab3 Bài tập 1.3.b Lab3 Code trong Yêu cầu 1 Code trong Yêu cầu 2 Code trong Yêu cầu 3 Code Thực hành với đệ quy

IV

Trang 7

Chwong 1 LAM QUEN VOI LAP TRINH HOP NGU

1.1/ Ly thuyét

1.1.1/ Bộ nhớ

- Dữ liệu được định nghĩa | byte(8 bits),1 half(2 bytes),1 word(4 bytes)

- | ki tw la | byte dé lu trữ (acsii)

- | sé nguyén la | word dé lu trir

- | 1énh là | word (32 bits) để lưu trữ

1.1.2/ Biéu dién thong tin

- Ky SỐ:

+ Hệ thập phân: 9,10,

+ Hệ thập lục phân: thêm tiền tố Ox Vd: 0x20

- Ký tự: đặt trong ngoặc nhảy đơn Vd: ‘a’

- Chuỗi: đặt trong cặp nháy kép Vd: “UIT” (kết thúc chuỗi là ki ty null)

1.1.3/ Thanh ghi

- Co 32 thanh ghi da dung (thanh ghi 32 bit)

- Biéu dién: tiền tố $ theo sau là chỉ số hoặc tên của thanh ghi ($0 hoặc $t1)

- Thanh ghi Hi và Lo được dành riêng cho phép nhân và phép chia

+ mfhi, mflo (move from hi/lo)

- Quy ước:

+ $at đành cho assembler, $k0 và $kI đành cho hệ điều hành

+ $øp, $sp, $fp, $ra dành cho các mục đích riêng biệt, không nên sử đụng đề lưu

trữ tạm trong quá trình tính toán và lập trình

Trang 8

1.1.4/ Cau trac cia 1 chương trình

Muốn chú thích trong MIPS dùng #

.data

#khai báo biến

?khai báo dữ liệu

.text

#viết chương trình sau text

main:

#nhãn đề cho người dùng biết nơi bắt đầu chương trình

#viết chương trình sau đây

1.1.5/ Khai báo dữ liệu,biến

<tênbiến> <kiểu dữliệu> <danh sách các giá trỊ>

VD:

stringl: ase1z “UIT” #tạo | chuỗi tên stringl với khoi tao “UIT”

varl: word5 #khai bao | s6 nguyén tén varl chiém 1 word lưu trữ, có giá trị

khoi tao la 5

arrayl: space 10 #tạo 1 mang array! co 10 bytes lién tuc nhau, chưa khởi tạo giá

tri

array2: byte ‘a’, ‘b’ #tao | mang array2 c6 2 phan tt, mdi phan tt chiém | byte,

khoi tao gia tri 1a ‘a’, “bỉ

Trang 9

1.2/ Bài tập thực hành

1.2.1/ Sinh viên tìm hiểu tài liệu “Một số lệnh assembly MIPS cơ bản”

Mô phỏng việc thực thi các lệnh và cho biệt chức năng của các lệnh cơ bản sau: add, addi, addu, addiu, sub, subu, and, andi, or, nor, lw, sw, slt, slti, sltu, sltiu,

2 | Addi | Add immediate - Cộng giá trị trong thanh ghi | Addi $s0, $s1,5

thứ 2 với một hằng số 16bit có dấu, lưu vào

thanh ghi thứ nhất

3 | Addu | Add Unsigned - Cộng giá trị không dấu trong | Addu $s0, $s1, $s2

thanh ghi thứ 2, lưu vào thanh ghi thứ nhất (Không bị tràn bit)

4 | Addiu | Add Immediate Unsigned - Công giá trị không | Addiu $s0O, $s1, -5

dấu trong thanh ghi thứ 2 với hằng số 16bit

có dấu, lưu vào thanh ghi thứ nhất (Không bị tràn bit)

5 Sub | Lấy giá trị của thanh ghi thứ 2 trừ cho giátr] | Sub $sO, $s1, $s2

thanh ghi thứ 3 sau đó lưu giá trị vào thanh

ghi thứ nhất

6 Subu | Sub unsigned - Gía trị không dấu trong thanh | Subu $s0, $s1, $s2

ghi thứ 2 trừ cho giá tri khong dau trong

thanh ghi thứ 3 sau đó lưu giá trị vào thanh

Trang 10

ghi thứ nhất

And And từng bit trong thanh ghi thứ 2 với thanh ghi thứ 3 sau đó lưu lại vào thanh ghi thứ nhất

And $s0, $s1, $s2

Andi And immediate - and từng bit trong thanh ghi thứ 2 với hằng số sau khi đổi ra mã nhịn phân theo thứ tự với nhau sau đó lưu lại vào

Or $s0, $s1, $s2

10 Nor Or từng bit trong thanh ghi thứ 2 với thanh

ghi thứ 3 theo thứ tự với nhau, sau đó not lại rồi lưu vào thanh ghi thứ nhất

Nor $sO, $s1, $s2

11 Lw Load word - Lấy giá trị ở địa chỉ bộ nhớ đã

được chỉ định để lưu vào thanh ghi

Lw $sO 4($s1)

12 Sw Store word - Lấy giá trị trong thanh ghi lưu

vào bộ nhớ với giá trị đã được chỉ định

Sw $s0 4($s1)

13 Slt Set less than - Nếu giá trị trong thanh ghi thứ

2 bé hơn giá trị trong thanh ghi thứ 3 thì giá trị trong thanh ghi thứ nhất bằng 1, ngược lại

thi bang 0

Slt $s0, $51, $s2

14 Slti Set less than immediate - Néu gia trị trong

thanh ghi thir 2 bé hon hang s6 thi gia tri

trong thanh ghi thứ nhất bằng 1, ngược lại

nếu lớn hơn thì bằng 0 Slti $s0, $s1, 5

Trang 11

15 Situ Set less than unsigned - néu gia trị không Sltu $s0, $s1, $s2

dấu trong thanh ghi thứ 2 bé hơn giá trị không dấu trong thanh ghi thứ 3 thì giá trị trong thanh ghi thứ nhất bằng 1, ngược lại

nếu lớn hơn thì bằng 0

16 | Sltiu | Setless than immediate unsigned - nếu giá Sltiu $sO, $s1, -5

trị không dấu trong thanh ghi thứ 2 bé hơn hằng số thì giá trị trong thanh ghi thứ nhất bằng 1, ngược lại nếu lớn hơn thì bằng 0

Iw $t0, var1 Lưu giá trị ở 23 trong bộ nhớ vào trong thanh ghi

Trang 12

array 1:.space 12

text start: la $tO, array]

Khai báo mảng array 1 có 12byte

Gan mảng array1 vào thanh ghi $tO Cho $t1 = 5

Lưu giá trị của $t1 vào ô nhớ địa chỉ là giá trị của

$tO Cho $t1 = 13 Lưu giá trị của $t1 vào ô nhớ địa chỉ là 4 cộng giá trị của $t0

Cho $t1 = -7 Lưu giá trị của $t1 vào ô nhớ địa chỉ là 8 công giá trị của $t0

Li $v0,5 syscall

Trang 13

1.3/ Bài tập

1.3.1/ Nhập vào một chuỗi, xuất ra ctra s6 I/O cua MARS theo timg yéu cau sau: a) Khai báo và xuất ra cửa sô I/O 2 chudi co gia trị như sau:

- Chuỗi 1: Chao ban! Ban la sinh vien nam thu may?

- Chuỗi 2: Hihi, minh la sinh vien nam thu l ^-^

(CC

BH

ỶỲ Gan cho string1: "Chao ban! Ban la

sinh vien nam thu may?\n"

Gan cho string 2:"Hihi, minh la sinh

vien nam thu 1 ^-^"

Hình 1.1: Sơ đồ giải thuật 1.3.1a Labl

b) Biểu diễn của 2 chuỗi trên dưới bộ nhớ là gì?

Trang 14

Bang 1.3: Biéu diễn thông tin trong bộ nhớ

al(Khoảng trống)n nis(Khoảng trống) iv(khoảng trống)h n(khoảng trống)ne t(khoang trống)ma m(khoảng trống)uh (khoảng trống)?ya hiH (khoảng xuống dòng) m(khoảng trống),i (khoảng trống)hni s(khoảng trống)al (khoảng trống)hni neiv

man(khoảng trống) uht(khoảng trống)

^(khoảng trống) 1(khoảng trống)

Trang 15

0x00005e2d ^-

©) Xuất ra lại đúng chuỗi đã nhập

Ví dụ:

Nhap: Truong Dai hoc Cong nghe Thong tin

Xuat: Truong Dai hoc Cong nghe Thong tin

Trang 16

đ) Nhập vào 2 số nguyên sau đó xuất tổng của 2 số nguyên nảy

Hình 1.2: Sơ đồ giải thuật 1.3.1d Labl

Chương 2 CẤU TRÚC ĐIÊU KHIỂN

1.1/ Lý thuyết

1.1.1/ Câu trúc if— else

Đầu tiên thực hiện việc so sánh điều kiện

+ So sanh bang + So sanh khéng bang + So sánh bé hơn, bé hơn hoặc bằng + So sánh lớn hơn, lớn hơn hoặc bằng

10

Trang 17

- Néu diéu kién đúng, thực hiện lệnh và có thể là đoạn lệnh ở bên trong, nếu sai thì tới điều kiện tiếp theo hoặc kết thúc chương trình

1.1.2/ Cấu trúc switch — case

- Kiếm tra điều kiện để đưa vào trường hợp đúng, có thê chuyên thành cấu trúc if, 1Í-else

Trang 18

Bang 2.4: Chuyén doan code

if i ==j) bne $30, $s1, else | -So sánh ¡ va j, nêu không băng thi

else add $s2,$t0,$t1 -Thực hiện g +h

Trang 20

Bảng 2.5: Chuyển đoạn code 2

slt $a0,$80,$s1 beq $s0,$s1, work beq $a0,$zero,exit add $s2,$s2,$s0 addi $s0,$s0, 1 jloop work:

add $s2,$s2,$s0 addi $s0,$s0, 1 exit:

-Khởi tạo giá trị Sum -Khởi tạo giả trị 1

-So sanhi<N -So sanhi=N thi nhay dén work -So sánh kết quả của ¡<N với 0 băng thi nhảy đến exit

-Sum = Sum +1 -i=itl -Nhay loop -Sum = Sum +1

Trang 22

- Ky tu nhap vao là: hoa, thường, SỐ Nhập vào loại nào thì xuất ra loại đó Nêu không phải 3 loại trên thì xuât “invalid type”

Bảng 2.6: Bài tập 1.3a

.data

stringl: ascnz "Nhap ki tu: "

string2: asciiz "\nKi tu truoc:

string3: ascuz "\nKi tu sau: "

string4: asciiz "\ninvalid type"

string5: asciiz "\nLoai so"

string6: asciiz "\nLoai chu"

Chuyên giá trị cho thanh ghi t0 Nếu giá trị của t0 lớn hơn 122

nhảy tới end

Nếu giá trị của t0 nhỏ hơn 97

nhảy tới workl Còn lớn hơn bằng

97 thì nhảy tới hàm chu

Nếu giá trị của t0 lớn hơn bằng 91

nhảy toi end Con nho hon 91 thi nhảy tới work2

Nếu giá trị của t0 nhỏ hơn 65

nhảy tới work3 Còn lớn hơn băng

65 thì nhảy tới hàm chuhoa

16

Trang 23

addi $v0, $zero, 4 #xuat str3

Nếu giá trị của t0 lớn hơn bằng 58

nhảy toi end Con nho hon 58 thi nhay to1 work4

Nếu giá trị của t0 nhỏ hơn 48

nhảy tới end Còn lớn hơn băng

48 nhảy tới hàm so

Trang 24

Xuất str4 ra màn hình

18

Trang 25

Xuât "Loai chu thuong”

Hình 2.5: Sơ đồ giải thuật 1.3a Lab2

19

Trang 27

Néu sl = s2 thi nhay toi bang

Nếu s1 > s2 thì nhảy tới lon, s1 <

s2 thi tiếp tục chương trình

Trang 29

Hình 2.6: Sơ đồ giải thuật 1.3b Lab2

23

Trang 30

Chuong 3 CON TRO VA TRUY XUAT BO NHO

1.1/ Ly thuyét

1.1.1/ Nhắc lại về bộ nhớ

-_ Dữ liệu được định nghĩa | byte(8§ bits),L half2 bytes),L word(4 bytes)

- | ki tw la | byte dé lưu trữ (acsii)

- | s6 nguyén la | word dé lưu trữ

- I lệnh la | word (32 bits) để lưu trữ

1.1.2/ Nhắc lại về khai báo biến,kiểu dữ liệu

<tênbiến> <kiểu dữliệu> <danh sách các giá trỊ>

VD:

stringl: ase1z “UIT” #tạo | chuỗi tên stringl với khoi tao “UIT”

varl: word5 #khai bao | s6 nguyén tén varl chiém 1 word lưu trữ, có giá trị khoi tao la 5

arrayl: space 10 #tạo 1 mang array! co 10 bytes lién tuc nhau, chưa khởi tạo giá tri

array2: byte ‘a’, ‘b’ #tao | mang array2 c6 2 phan tt, mdi phan tt chiém | byte, khoi tao gia tri 1a ‘a’, “bỉ

1.1.3/ Mang vao con tro

- _ Con trỏ thao tác trên địa chỉ của bộ nhở

- Mang thao tac trén chi s6 mang Vd: a[0] a[n]

24

Trang 31

1.2/ Thực hành

data arrayl: word 5, ố, 7, ð, l, 2, 3, 9, 10, 4

⁄ In ra cửa số I/O của MARS tất cả các phần tử của mảng arrayl và array2

JV Gan các giá trị cho mảng array3 sao cho array3[i] = array2[i] + array2[size2 - 1 - i]

⁄ Người sử dụng nhập vào mảng thứ mấy và chỉ số phần tử cần lấy trong mảng đó, chương trình xuất ra phần tử tương ứng

-Khai báo biên size3: word 8

25

Trang 32

string 1: asciiz "Mang 1: " #76 string2: asciiz "\nMang 2: " #85 str4: asciiz "\nNhap mang thu may:

" #95 str5: asciiz "\nNhap phan tu thu may: " #116

str6: asciiz "\nPhan tu do la: " #140

text

#in array | addi $v0,$zero,4 lui $1,0x00001001 ori $a0,$1,76 syscall

lui $1,0x00001001 addi $t1,$1,0 addi $t2,$1,40 workl:

Iw $a0,0($t1) addi $v0,$0, 1 syscall addi $t1,$t1,4

-Xuất "Mang |: "

-Khởi tạo con trỏ băng địa chỉ đầu tiên

-Chạy vòng lặp đề xuất ra từng phan tt trong array |

26

Trang 33

slt $t3,$t1,$t2 bne $t3,$0,work1

#in array2 addi $v0,$zero,4 lui $1,0x00001001 ori $a0,$1,85 syscall

Ib $a0,0($t1)

slt $t7,$t3,$t4 beq $t7,$0,work2 1

-Xuất "nMang 2: "

-Đưa địa chỉ đâu của array2 vào

$tl -Dua dia cudi cla array2 vao $t2 -Dua dia chi đầu của array3 vô $t3 -Đưa địa chỉ cuôi của atray3 vô

$4 -Gán cô định địa chỉ array2 vô $t8

-So sánh địa chỉ đầu cuối của array3 néu >= thì nhảy xuống work2.1 Ngược lại làm tiếp điều kiện bên dưới

-Gan array3 sao cho array3[i] = array2[i] + array2[size2 - 1 - i]

27

Trang 34

addi $t2,$t2,-1

Ib $t5,0($t2) add $t5,$t5,$a0

sb $t5,0($t3) addi $t3,$t3,1

work?2 1:

addi $t1,$t1,1 addi $v0,$0,1

-Chạy vòng lặp đề xuất ra từng phần tử trong array2

syscall slt $t6,$t1,$t8 bne $t6,$0,work2 Yéu cau 2: | #Nhap

nhập vao addi $v0,$zero,4

#nhap phan tu can lay -Gọi hệ thống cho nhập stt mảng

rôi chuyên vao $s1

28

Trang 35

addi $v0,$0,5 syscall addi $s2,$v0,0

#xuat phan tu addi $v0,$zero,4 lui $1,0x00001001 ori $a0,$1,140 syscall

addi $t0,$0, 1 beq $s1,$t0,elsel addi $t0,$t0,1 beq $s1,$t0,else2 addi $t0, $t0, 1 beq $s1,$t0, else3

-Xuat "\nNhap phan tu thu may: "

-Gọi hệ thông cho nhập phân tử

rôi chuyên vào $s2

-Xuat "\nPhan tu do la: “

-So sanh stt mang néu =1 thi nhay elsel, =2 thi nhay else2,=3 thi nhay else3

29

Trang 36

sll $t2,$s2,2 add $t9,$1,$t2

lw $a0,0($t9)

j done

else2:

addi $t2,$s2,44 add $t9,$1,$t2

Ib $a0,0($t9)

j done

else3:

addi $t2,$s2,64 add $t9,$1,$t2

Trang 37

Gan $t1 = Địa chỉ đầu tiên của mảng array 1 cha zai

$s1=$s1+4

Dung

Gán $t1 = Địa chỉ đâu tiên của array 2

$ = Địa chỉ đâu tiên của array 3

Gan $a0 = array 1[] có giá trị của địa chỉ $t1

Trang 38

cascuiz "\nGia tri lon .asc1z "\nG1a trị nho asc1z "\nTong cac asc1z "\nNhap phan tu .asc1iz "Phan tu do la:

Ngày đăng: 20/10/2024, 18:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w