Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
509,94 KB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN KHOA KỸ THUẬT MÁY TÍNH BÁO CÁO MƠN HỌC THỰC HÀNH KIẾN TRÚC MÁY TÍNH CE119 GIẢNG VIÊN HƯỚNG DẪN: SINH VIÊN THỰC HIỆN: TP HỒ CHÍ MINH, THÁNG 12 NĂM 20xx download by : skknchat@gmail.com ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH BÁO CÁO MƠN HỌC THỰC HÀNH KIẾN TRÚC MÁY TÍNH CE119 GIẢNG VIÊN HƯỚNG DẪN: SINH VIÊN THỰC HIỆN: TP HỒ CHÍ MINH, THÁNG 12 NĂM 20xx ii download by : skknchat@gmail.com MỤC LỤC Chương LÀM QUEN VỚI LẬP TRÌNH HỢP NGỮ 1.1 Lý thuyết 1.1.1 Cách cài đặt Ubuntu, Vim Perl 1.1.2 Cách sử dụng Vim 1.1.3 Lí thuyết chương trình hợp ngữ 1.2 Thực hành .4 1.2.1 Mô việc thực thi lệnh 1.2.2 Ý nghĩa chương trình 1.3 Bài tập 1.3.1 Khai báo chuỗi xuất chuỗi khai báo 1.3.2 Biểu diễn chuỗi nhớ 1.3.3 Xuất chuỗi nhập 1.3.4 Tính tổng hai số nguyên nhập từ bàn phím Chương CÁC CẤU TRÚC ĐIỀU KHIỂN 11 2.1 Lí thuyết 11 2.1.1 Cấu trúc if, if-else 11 2.1.2 Cấu trúc switch/case 11 2.1.3 Cấu trúc vòng lặp 11 2.2 Thực hành 11 2.2.1 Cấu trúc rẽ nhánh 11 2.2.2 Cấu trúc vòng lặp 12 2.3 Bài tập 12 2.3.1 Phân biệt ký tự nhập vào xuất ký tự liền trước, liền sau 12 2.3.2 Tìm số lớn tính toán theo yêu cầu .1 Chương CON TRỎ VÀ TRUY XUẤT BỘ NHỚ i download by : skknchat@gmail.com 3.1 Lí thuyết 3.1.1 Kiến trúc ghi – ghi 3.1.2 Làm việc với mảng 3.1.3 Làm việc với trỏ 3.1.4 Tại nên sử dụng trỏ .2 3.2 Thực hành .2 3.2.1 Thao tác với trỏ 3.3 Bài tập 3.3.1 Nhập mảng số nguyên n phần tử thực yêu cầu sau 3.3.2 Nhập mảng số nguyên n phần tử .2 Chương THỦ TỤC (HÀM CON) 4.1 Lí thuyết 4.1.1 Thủ tục 4.1.2 Thủ tục với MIPS .3 4.1.3 Ví dụ 4.1.4 Lồng thủ tục 4.2 Thực hành .3 4.2.1 In cửa sổ I/O giá trị số int nhập vào cộng thêm .3 4.2.2 Tính giá trị biểu thức (a+b) – (c+d) (a-b) + (c-d) .3 4.2.3 Tính giá trị biểu thức (a+b) – (c+d) (e-f) 4.3 Bài tập 4.3.1 Tính giai thừa TÀI LIỆU THAM KHẢO ii download by : skknchat@gmail.com DANH MỤC HÌNH ẢNH Danh mục hình ảnh iii download by : skknchat@gmail.com DANH MỤC BẢNG Bảng iv download by : skknchat@gmail.com DANH MỤC TỪ VIẾT TẮT ABC : nghĩa ABC v download by : skknchat@gmail.com CHƯƠNG LÀM QUEN VỚI LẬP TRÌNH HỢP NGỮ 1.1 Lý thuyết 1.1.1 Cách cài đặt Ubuntu, Vim Perl Bước Cài ứng dụng Ubuntu Windows 10 + Start → Turn Windows features on or off → Windows Subsystem for Linux + Start → Store → Ubuntu → Get → Launch Bước Cài đặt Perl Vim Ubuntu + Sudo apt-get install perl + Sudo apt-get install vim + Sudo apt-get install vimtutor Bước Vimtutor để học cách sử dụng Vim 1.1.2 Cách sử dụng Vim Bài-1 - Sử dụng phím h, j, k, l để di chuyển trỏ qua trái, xuống, lên trên, qua phải Khi nhập không chắn, nhấn phím ESC tiến hành nhập lại Để Vim, nhấn phím ESC, nhập :q! nhấn phím ENTER Nhấn phím x để xố ký tự nằm trỏ Nhấn phím i để chèn thêm văn vào trước trỏ Nhấn phím a để thêm văn Sử dụng :wq để lưu thoát Bài-2 - Để xoá từ trỏ đến từ tiếp theo, sử dụng :dw Để xoá từ trỏ đến cuối hàng, sử dụng :d$ Để xoá hàng, sử dụng :dd Để lặp lại chuyển động, thêm vào trước số :2w Format để thay đổi câu lệnh: operator [number] motion Trong đó: + operator: lệnh cần thực + number: số lần lặp lại download by : skknchat@gmail.com + motion: di chuyển qua văn để thao tác (w – word, $ – đến cuối hàng) - Để di chuyển đầu hàng, sử dụng :0 (:zero) - Để hoàn tác hành động trước, sử dụng :u Để hoàn tác thay đổi hàng, sử dụng :U Để Bài-3 hồn tác bỏ, sử dụng tổ hợp phím Ctrl+R - Để trở văn vừa bị xoá: p, đặt văn bị xoá sau trỏ - Để thay ký tự chân trỏ: r Ấn ce để thay đổi từ trỏ đến cuối từ Ấn c$ để thay đổi đến cuối hàng Bài-4 ctrl + G : hiển thị vị trí file trạng thái file - + G: di chuyển đến cuối file + Number G: di chuyển đến hàng số điền + gg: di chuyển đến hàng Nhấn / để tìm cụm từ theo sau cụm từ - + + Tìm cụm từ lần nữa, nhấn n Tìm cụm từ giống hướng ngược lại, nhấn N Tìm cụm từ theo hướng lùi, nhấn ? thay cho / - Để trở từ nơi bạn nhấn: Ctrl + O (giữ Ctrl lúc nhấn o), lặp lại để trở Nhấn Ctrl + I để tiến tới Nhấn % lúc trỏ (, [, { để tìm ), ], } phù hợp lại (dễ debug hơn) - Thay cho cũ hàng, nhấn :s/old/new Thay mới cho tất cũ hàng, nhấn :s/old/new/g - Thay cụm từ hàng #, nhấn :#,#s/old/new/g Thay tất lần xuất file, nhấn :%s/old/new/g Để hỏi xác nhận sau lần thêm ‘c’, nhấn :%s/old/new/gc Bài-5 - :!command thi hành câu lệnh :w FILENAME: viết file Vim với tên FILENAME v montion :w FILENAME: lưu dòng chọn file FILENAME download by : skknchat@gmail.com Chương CON TRỎ VÀ TRUY XUẤT BỘ NHỚ 3.1 Lí thuyết 3.1.-1 Kiến trúc ghi – ghi Ví dụ: int a = 7; int b = 5; int c; - c = a + b; Ý tưởng: đưa giá trị biến a, b, c ô nhớ vào ghi tập ghi - (của CPU), tiến hành tính tốn đưa vào ghi, sau đưa kết vào nhớ Chương trình: data addrA: addrB: addrC: text main: lui lw lui lw add lui sw 3.1.-2 Làm việc với mảng Mảng với n phần tử chuỗi n phần tử liên tiếp nhớ Thao tác với mảng MIPS thao tác trực tiếp với byte/word nhớ + Để cấp phát chuỗi word byte nhớ, có giá trị khởi tạo sử dụng “.word” “.byte” “.data” + Để cấp phát chuỗi byte khơng có giá trị khởi tạo trước, sử dụng “.space” “.data” 23 download by : skknchat@gmail.com - Ví dụ: clear1(int array[], int size) { int i; for (i = 0; i < size; i++) array[i] = 0; } - Ý tưởng: $a0 địa array, $a1 kích thước array (size), tìm địa phần tử mảng (bằng cách cộng 0, 4, 8, 12, vào địa mảng $a0) lưu giá trị đó, lặp lại đến biến i ($t0) khơng nhỏ kích thước mảng ($a1) - Chương trình: loop: text add $8, $0, $0 sll add sw addi slt bne $9, $8, 0x00000002 $10, $4, $9 $0, 0x00000000($10) $8, $8, 0x00000001 $11, $8, $5 $11, $0, loop 3.1.-3 Làm việc với trỏ Con trỏ biến lưu địa biến khác Thao tác với trỏ MIPS - thao tác trực tiếp với địa nhớ Ví dụ: - clear2(int *array, int size) { int *p; for (p = &array[0]; p < &array[size]; p++) *p = 0; Ý tưởng: $a0 địa array, $a1 kích thước array (size), trỏ $t0 địa phần tử đầu tiên, $t2 địa phần tử cuối (qua tính tốn), sau lặp lại việc thay đổi giá trị trỏ ($t0=0) dời trỏ sang địa phần tử ($t0+=4) trỏ $t0 không nhỏ $t2 (địa phần tử cuối) 24 download by : skknchat@gmail.com - Chương trình: text add $8, $0, $4 sll $9, $5, 0x00000002 add $10,$4,$9 loop: sw $0, 0x00000000($8) addi $8, $8, 0x00000004 slt $11, $8, $10 bne $11, $0, loop 3.1.-4 Lý nên sử dụng trỏ Tốc độ nhanh (vì số câu lệnh vịng lặp (LOOP) sử dụng trỏ sử dụng mảng) Đúng với chất việc truy xuất nhớ 3.2 Thực hành 3.2.1 Thao tác với mảng Cho mảng với cấp phát liệu nhớ sau: array1: size1: data word word 10 array2: size2: byte word 16 array3: size3: space word Mảng array1 có 10 words, kích thước lưu size1; Mảng array2 có 16 bytes, kích thước lưu size2; Mảng array3 có bytes, kích thước lưu size3 Viết code phần “.text” thực riêng phần việc: In cửa sổ I/O MARS tất phần tử mảng array1 array2 Gán giá trị cho mảng array3 cho: array3[i] = array2[i] + array2[size2 – – i] Người sử dụng nhập vào mảng thứ số phần tử cần lấy mảng đó, chương trình xuất phần tử tương ứng25 download by : skknchat@gmail.com Trả lời: Yêucầu 1: xuất phần tử mảng array1 array2 cửa sổ I/O: Ý tưởng: truy xuất phần tử mảng theo số mảng, tức nghĩa - mảng để tính tốn địa phần tử xét (mảng array1 với word có độ lớn bytes, mảng array2 với phần tử có độ lớn cơng đoạn tính tốn đến số mảng khơng nhỏ kích thư - Ta có sơ đồ thuật tốn sau: Bắt đầu $t0 = $t1 = size1 $a1 = &array1 $a0 = &array1[$t0] $v0 = 1, Syscall Xuất phần tử mảng $t0 = $t0 + Đ $t0 < S $t1 Hình 3.1 – Sơ đồ thuật toán xuất phần tử mảng array1 array2 Yêu cầu 2: thực gán giá trị cho phần tử mảng array3 theo biểu thức- array3[i] = array2[i] + array2[size2 – – i] Ý tưởng: truy xuất phần tử mảng theo số mảng (tương tự u cầu 1), nhiên việc tính tốn địa của26phần tử array2[size2 – – i] có khác so với download by : skknchat@gmail.com phần tử array2[i] chỗ ta phải tính địa phần tử cuối mảng - array2 trước Ta có sơ đồ thuật toán sau: Bắt đầu $t0 = $t3 = size3 $a3 = &array3 $t2 = size2 – $a2 = &array2 $s1 = &array3[$t0] $s2 = &array2[$t0] $s3 = &array2[size2 – – $t0] $t4 = *($s2) $t5 = *($s3) $t6 = $t5 + $t4 *($s1) = $t6 $t0 = $t0 + Đ $t0 < $t3 S Kết thúc Hình 3.2 – Sơ đồ thuật tốn thực gán giá trị cho phần tử mảng array3 Yêu cầu 3: xuất phần tử tuỳ chọn tương ứng 27 download by : skknchat@gmail.com - Ý tưởng: số nguyên nhập vào truy xuất mảng array1, truy xuất mảng array2; thực việc truy xuất phần tử có số số nguyên nhập vào thứ hai tương tự cách tính yêu cầu - Ta có sơ đồ thuật tốn sau: Bắt đầu $v0 = 5, Syscall Nhập số nguyên $s0 (array1) (array2) $s0 = $v0 $v0 = 5, Syscall Nhập số nguyên $s1 = $v0 $s1 số phần tử mảng $s0 == $a0 = array2[$s1] $a0 = array1[$s1] $v0 = 1, Syscall Xuất số ngun Kết thúc Hình 3.3 – Sơ đồ thuật28tốn xuất phần tử tuỳ chọn download by : skknchat@gmail.com Chương trình: 3.2.2 Thao tác với trỏ Thực lại nội dung “Thao tác với mảng” với trỏ Trả-lời: Ý tưởng: truy xuất phần tử số mảng điều kiện dừng, biến chạy phải so sánh với kích thước mảng, cịn thao tác với trỏ biến trỏ - phải so sánh với biến trỏ khác chứa địa phần tử cuối Sơ đồ giải thuật: Bắt đầu $t0 = &arra $t1 = &array1[ $a0 = *($ $v0 = 1, Sy Xuất số ng $t0 = $t0 Đ S $t0 < $t1 $v0 = 5, Syscall Nhập số nguyên $v0 = 5, Syscall $s0 = $v0 $s1 = $v0 Nhập số nguyên $s0 == $a0 = array2[$s1] $a0 = array1[$s1] $v0 = 1, Syscall Xuất số nguyên 29 Kết thúc download by : skknchat@gmail.com Hình 3.4 – Sơ đồ giải thuật toán thao tác với trỏ - Chương trình: 3.3 Bài tập 3.3.1 Bài tập a Đề bài: Nhập mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử), xuất cửa sổ I/O MARS theo yêu cầu sau: Xuất giá trị lớn nhỏ mảng Tổng tất phần tử mảng Người sử dụng nhập vào số phần tử giá trị phần tử in cửa sổ b Sơ đồ giải thuật: c Chương trình: 3.3.2 Bài tập a Đề bài: Nhập mảng số nguyên n phần tử (nhập vào số phần tử giá trị phần tử), xuất cửa sổ I/O MARS theo yêu cầu sau: Xuất giá trị lớn nhỏ mảng Tổng tất phần tử mảng Người sử dụng nhập vào số phần tử giá trị phần tử in cửa sổ b Sơ đồ giải thuật: c Chương trình: 30 download by : skknchat@gmail.com CHƯƠNG THỦ TỤC (HÀM CON) 4.1 Lí thuyết 4.1.1.- Thủ tục Quy trình thực hiện: Thực thi thủ tục Lệnh A Quay chương trình Lệnh C Hình 4.1 – Quy trình thực lời gọi thủ tục 4.1.2 Thủ tục với MIPS Bước Chuẩn bị đối số Bước Lưu trạng thái Bước Nhảy tới thủ tục Bước Thực thi thủ tục Bước Chuẩn bị kết Bước Quay chương trình (tại lệnh kế tiếp) Quy ước: + Thanh ghi đối số: $a0 - $a3 + Thanh ghi kết quả: $v0, $v1 + Thanh ghi tạm: $t0 - $t9 + Thanh ghi lưu trữ: $s0 - $s7 + Thanh ghi địa trả về: $ra + Thanh ghi trỏ ngăn xếp: $sp Lưu ý: phải bảo toàn liệu ngăn xếp trước gọi thủ tục 31 download by : skknchat@gmail.com … 4.1.3 VÍ DỤ void main ( ) { int s = 0; s = sum(15,12); } int sum(int a, int b) { int t = a + b; return t; } add $s0, $0, $0 addi $a0, $0, 15 add $a1, $0, 12 jal sumPro add $s0, $0, $v0 j exit sumPro: add $v0, $a0, $a1 jr $ra exit: 4.1.4 LỒNG THỦ TỤC Bước Bước Bước Bước Bước Bước Chuẩn bị đối số Lưu trạng thái Nhảy tới thủ tục Thực thi thủ tục Chuẩn bị kết Quay chương trình (tại lệnh kế tiếp) Lưu ý: Trước gọi thủ tục khác phải lưu lại ghi $ra nhảy tới thủ tục (Nếu muốn chắn lưu lại ghi $sp) 32 download by : skknchat@gmail.com 4.2 Thực hành 4.2.1 IN RA CỬA SỔ I/O GIÁ TRỊ CỦA SỐ INT NHẬP VÀO CỘNG THÊM abc 4.2.2 TÍNH GIÁ TRỊ BIỂU THỨC (A+B) – (C+D) VÀ (A-B) + (C-D) abc 4.2.3 TÍNH GIÁ TRỊ BIỂU THỨC (A+B) – (C+D) VÀ (E-F) abc 4.3 Bài tập 4.3.1 TÍNH GIAI THỪA abc 33 download by : skknchat@gmail.com TÀI LIỆU THAM KHẢO [1] Làm quen cách sử dụng Vim với Vimtutor, http://notes.viphat.work/vimtutor 34 download by : skknchat@gmail.com ...ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN KHOA KỸ THUẬT MÁY TÍNH BÁO CÁO MƠN HỌC THỰC HÀNH KIẾN TRÚC MÁY TÍNH CE119 GIẢNG VIÊN HƯỚNG DẪN: SINH VIÊN THỰC... Chương LÀM QUEN VỚI LẬP TRÌNH HỢP NGỮ 1.1 Lý thuyết 1.1.1 Cách cài đặt Ubuntu, Vim Perl 1.1.2 Cách sử dụng Vim 1.1.3 Lí thuyết chương trình hợp ngữ ... skknchat@gmail.com DANH MỤC TỪ VIẾT TẮT ABC : nghĩa ABC v download by : skknchat@gmail.com CHƯƠNG LÀM QUEN VỚI LẬP TRÌNH HỢP NGỮ 1.1 Lý thuyết 1.1.1 Cách cài đặt Ubuntu, Vim Perl Bước Cài ứng dụng Ubuntu Windows