1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo môn học THỰC HÀNH KIẾN TRÚC máy TÍNH CE119 làm QUEN với lập TRÌNH hợp NGỮ

44 194 1

Đ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

Định dạng
Số trang 44
Dung lượng 509,94 KB

Cấu trúc

  • Chương 1. LÀM QUEN VỚI LẬP TRÌNH HỢP NGỮ (8)
    • 1.1 Lý thuyết (8)
      • 1.1.1. Cách cài đặt Ubuntu, Vim và Perl (8)
      • 1.1.2. Cách sử dụng Vim (8)
      • 1.1.3. Lí thuyết chương trình hợp ngữ (11)
    • 1.2. Thực hành (12)
      • 1.2.1. Mô phỏng việc thực thi các lệnh (12)
      • 1.2.2. Ý nghĩa của chương trình (13)
    • 1.3 Bài tập (13)
      • 1.3.1. Khai báo chuỗi và xuất các chuỗi được khai báo (14)
      • 1.3.2. Biểu diễn chuỗi trên dưới bộ nhớ (16)
      • 1.3.3. Xuất ra đúng chuỗi đã nhập (16)
      • 1.3.4. Tính tổng hai số nguyên được nhập từ bàn phím (17)
  • Chương 2. CÁC CẤU TRÚC ĐIỀU KHIỂN (20)
    • 2.1. Lí thuyết (20)
      • 2.1.1. Cấu trúc if, if-else (20)
      • 2.1.2. Cấu trúc switch/case (20)
      • 2.1.3. Cấu trúc vòng lặp (20)
    • 2.2. Thực hành (20)
      • 2.2.1. Cấu trúc rẽ nhánh (20)
      • 2.2.2. Cấu trúc vòng lặp (21)
    • 2.3. Bài tập (21)
      • 2.3.1. Phân biệt ký tự nhập vào và xuất ký tự liền trước, liền sau (21)
      • 2.3.2. Tìm số lớn hơn và tính toán theo yêu cầu (25)
  • Chương 3. CON TRỎ VÀ TRUY XUẤT BỘ NHỚ (31)
    • 3.1. Lí thuyết (31)
      • 3.1.1. Kiến trúc thanh ghi – thanh ghi (31)
      • 3.1.2. Làm việc với mảng (31)
      • 3.1.3. Làm việc với con trỏ (32)
      • 3.1.4. Tại sao nên sử dụng con trỏ (0)
    • 3.2. Thực hành (33)
      • 3.2.1. Thao tác với con trỏ (33)
    • 3.3. Bài tập (40)
      • 3.3.1. Nhập một mảng các số nguyên n phần tử và thực hiện các yêu cầu sau (0)
      • 3.3.2. Nhập một mảng các số nguyên n phần tử (0)
  • Chương 4. THỦ TỤC (HÀM CON) (41)
    • 4.1. Lí thuyết (41)
      • 4.1.1. Thủ tục (41)
      • 4.1.2. Thủ tục với MIPS (41)
      • 4.1.3. Ví dụ (43)
      • 4.1.4. Lồng thủ tục (43)
    • 4.2. Thực hành (44)
      • 4.2.1. In ra cửa sổ I/O giá trị của số int nhập vào cộng thêm 1 (44)
      • 4.2.2. Tính giá trị biểu thức (a+b) – (c+d) và (a-b) + (c-d) (44)
      • 4.2.3. Tính giá trị biểu thức (a+b) – (c+d) và (e-f) (44)
    • 4.3. Bài tập (44)
      • 4.3.1. Tính giai thừa (44)
  • TÀI LIỆU THAM KHẢO (45)

Nội dung

LÀM QUEN VỚI LẬP TRÌNH HỢP NGỮ

Lý thuyết

1.1.1 Cách cài đặt Ubuntu, Vim và Perl

Bước 1 Cài ứng dụng Ubuntu trên Windows 10

+ Start → Turn Windows features on or off → Windows Subsystem for Linux

+ Start → Store → Ubuntu → Get → Launch

Bước 2 Cài đặt Perl và Vim trên Ubuntu

+ Sudo apt-get install perl

+ Sudo apt-get install vim

+ Sudo apt-get install vimtutor

Bước 3 Vimtutor để học cách sử dụng Vim.

Sử dụng các phím h, j, k, l để điều hướng con trỏ trong Vim: h để di chuyển sang trái, j xuống dưới, k lên trên và l sang phải Nếu bạn không chắc chắn về thao tác, hãy nhấn phím ESC và nhập lại Để thoát khỏi Vim, nhấn phím ESC, sau đó gõ :q! và nhấn ENTER.

Nhấn phím x để xoá ký tự nằm dưới con trỏ.

Nhấn phím i để chèn thêm văn bản vào trước con trỏ.

Nhấn phím a để thêm văn bản.

Để lưu và thoát trong chế độ soạn thảo, sử dụng lệnh :wq Để xoá từ bắt đầu từ con trỏ đến từ tiếp theo, dùng lệnh :dw; để xoá từ con trỏ đến cuối hàng, sử dụng :d$ Nếu bạn muốn xoá toàn bộ một hàng, hãy dùng lệnh :dd Để lặp lại một chuyển động, thêm số vào trước lệnh, ví dụ :2w để lặp lại hai lần.

Format để thay đổi câu lệnh: operator [number] motion

+ operator: là lệnh cần thực hiện

+ number: là số lần lặp lại 6 download by : skknchat@gmail.com

Trong việc di chuyển qua văn bản, bạn có thể sử dụng các lệnh như w để di chuyển đến từ tiếp theo và $ để đến cuối hàng Để quay về đầu hàng, sử dụng :0 Nếu bạn muốn hoàn tác hành động trước đó, hãy dùng :u, trong khi :U sẽ hoàn tác những thay đổi trên một hàng Để khôi phục văn bản đã bị xóa, sử dụng Ctrl+R và để dán văn bản đã xóa sau con trỏ, chỉ cần ấn p Để thay thế ký tự tại vị trí con trỏ, sử dụng r; ấn ce để thay đổi từ con trỏ đến cuối từ và c$ để thay đổi đến cuối hàng Cuối cùng, nhấn Ctrl + G để hiển thị vị trí và trạng thái của 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 đầu tiên

Nhấn / để tìm một cụm từ theo sau một cụm từ

+ Tìm một cụm từ một lần nữa, nhấn n

Để tìm một cụm từ ngược lại, hãy nhấn N Nếu bạn muốn tìm cụm từ theo hướng lùi, hãy nhấn ? thay cho / Để trở về vị trí trước đó, giữ phím Ctrl và nhấn O, lặp lại để quay lại Để tiến tới, nhấn Ctrl + I.

Nhấn % trong lúc con trỏ đang ở (, [, { để tìm ra ), ], } phù hợp còn lại (dễ debug hơn) Thay thế mới cho cái cũ nhất trong một hàng, nhấn :s/old/new

Thay mới mới cho tất cả cái cũ trên một hàng, nhấn :s/old/new/g

Để thay thế những cụm từ giữa hai dấu #, bạn sử dụng lệnh :#,#s/old/new/g Để thay thế tất cả các lần xuất hiện trong một file, hãy dùng lệnh :%s/old/new/g Nếu bạn muốn được hỏi xác nhận sau mỗi lần thay thế, hãy thêm 'c' vào lệnh như sau :%s/old/new/gc.

:!command thi hành một câu lệnh

:w FILENAME: viết file Vim hiện tại với tên FILENAME v montion :w FILENAME: lưu những dòng được chọn trong file FILENAME

7 download by : skknchat@gmail.com

:r FILENAME: lấy lại đĩa FILENAME và đặt nó dưới vị trí con trỏ

Gõ o để mở một hàng dưới con trỏ và bắt đầu chế độ

Insert Gõ O để mở một hàng trên con trỏ Gõ a để chèn văn bản sau con trỏ

Gõ A để chèn văn bản sau hàng cuối cùng

Gõ e để di chuyển câu lệnh tới cuối từ y để sao chép văn bản, p để dán

Nhấn R in hoa để thay thế chế độ Replace cho đến khi phím được nhấn

Gõ “:set xxx” cài lựa chọn cho “xxx”

Bỏ trước “no” để một lựa chọn tắt: :set noic

Gõ :help hoặc nhấn F1 để mở cửa sổ trợ giúp Gõ :help cmd để tìm trợ giúp trên cmd

Gõ ctrl + W ctrl + W để nhảy đến một cửa sổ khác Gõ :q để đóng cửa sổ trợ giúp

Gõ : command, nhấn ctrl + D để nhìn những hoàn thành khả dụng, nhấn phím để sử dụng một hoàn thành

1.1.3 Lí thuyết chương trình hợp ngữ

Lưu dữ liệu theo byte, half, word.

Một ký tự được lưu trong 1 byte.

- Một số nguyên được lưu trong 1 word.

- Một lệnh được lưu trong 1 word.

+ Hệ thập phân: Viết bình thường (17)

- + Hệ thập lục phân: Thêm tiền tố 0x (0x11)

- Ký tự: Đặt trong cặp nháy đơn (‘d’)

Chuỗi: Đặt trong cặp nháy kép (“Integrated circuit”) hoặc (“d”)

- Có 32 thanh ghi đa dụng (từ 0->31) 8 download by : skknchat@gmail.com

Biểu diễn: Tiền tố $ theo sau là chỉ số hoặc tên ($2 hay $sp).

Thanh ghi Hi và Lo được dành riêng cho phép nhân và phép chia (mfhi , mflo).

- + $at dành cho Trình biên dịch hợp ngữ, $k0 và $k1 dành cho OS.

+ $gp, $sp, $fp, $ra dành cho các lệnh chuyên biệt, không nên sử dụng để lưu trữ tạm trong quá trình tính toán.

# Chú thích bằng ký tự #

.data # Khai báo dữ liệu ngay sau hàng này

# Khai báo dữ liệu text # Viết chương trình ngay sau hang này main: # Nhãn thể hiện bắt đầu chương trình

-[:]

+ var1: word 3# biến nguyên var1 có kích thước 1 word và giá trị là 3

+ arr1: byte ‘a’,’k’ # mảng arr1 có 2 phần tử, mỗi phần tử 1 byte

+ arr2: space 40# mảng arr2 có kích thước 40 byte liên tục

+ str1: ascciz “ahihi” # chuỗi str1 có kết thúc bởi null

Thực hành

1.2.1 Mô phỏng việc thực thi các lệnh

Bảng 1.1 – Chức năng của một số lệnh trong MIPS

STT LỆNH VÍ DỤ CHỨC NĂNG

1 add add $t1, $t2, $t3 Gán $t1 là tổng của giá trị tại $t2 và $t3

2 addi addi $t1, $t2, -100 Gán $t1 là tổng của giá trị tại $t2 và giá trị bất kỳ

3 addu addu $t1, $t2, $t3 Tương tự lệnh add, kết quả trả về là số không dấu

4 addiu addiu $t1, $t2, -100 Tương tự lệnh addi, kết quả trả về là số không dấu

5 sub sub $t1, $t2, $t3 Gán $t1 là kết quả phép trừ giữa giá trị tại $t2 và $t3

6 subu subu $t1, $t2, $t3 Tương tự lệnh sub, kết quả trả về là số không dấu

7 and and $t1, $t2, $t3 Gán $t1 là “and” của các giá trị luận lý tại $t2 và $t3

8 andi andi $t1, $t2, 100 Gán $t1 là “and” của giá trị luận lý tại $t2 & giá trị bất kỳ

9 or or $t1, $t2, $t3 Gán $t1 là “or” của các giá trị luận lý tại $t2 và $t3

10 nor nor $t1, $t2, $t3 Gán $t1 là “nor” của các giá trị luận lý tại $t2 và $t3 9

11 lw lw $t1, label Đưa giá trị của label vào thanh ghi $t1 ở kiểu word download by : skknchat@gmail.com

12 sw sw $t1, label Lưu giá trị kiểu word tại thanh ghi $t1 vào địa chỉ label

13 slt slt $t1, $t2, $t3 Nếu $t2 < $t3 thì $t1 = 1, nếu không thì $t1 = 0

14 slti slti $t1, $t2, - 100 Nếu $t2 < -100 thì $t1 = 1, nếu không thì $t1 = 0

15 sltu sltu $t1, $t2, $t3 Tương tự lệnh slt nhưng dùng quy tắc so sánh không dấu

16 sltiu sltiu $t1, $t2, -100 Tương tự lệnh slti nhưng dùng quy tắc so sánh không dấu

Gọi chức năng nhập xuất tuỳ thuộc theo giá trị của $v0 l

Bảng 1.2 – Ý nghĩa của các chương trình mẫu

$t1 = 5 li $t1, 5 var1 = $t1 sw $t1, var1 data array1[12], array1=&array1[0] array1: space 12

3 li $v0, 5 $v0 = 5 syscall Gọi syscall với chức năng đọc số nguyên

.data string1 = “Print this.\n\0” string1: asciiz “Print this.\n”

4 text $v0 = 4 main: li $v0, 4 $a0 = &string1 la $a0, string1 Gọi syscall với chức năng xuất chuỗi, syscall với $a0 chứa địa chỉ của chuỗi kết thúc bằng null

Bài tập

1.3.1 Khai báo chuỗi và xuất các chuỗi được khai báo a Đề bài:

Khai báo và xuất ra cửa sổ I/O 2 chuỗi có giá trị như sau:

10 download by : skknchat@gmail.com

Chuỗi 1: Chao ban! Ban la sinh vien nam thu may? b Sơ đồ giải thuật:-

Hình 1.1 – Sơ đồ giải thuật xuất chuỗi được khai báo c Chương trình:

data chuoi1: asciiz "Chao ban! Ban la sinh vien nam thu may?\n" chuoi2: asciiz "Hihi, minh la sinh vien nam thu 1 ^-^\n"

11 download by : skknchat@gmail.com

1.3.2 Biểu diễn chuỗi trên dưới bộ nhớ

Các chuỗi trên được mã hóa vào trong thanh ghi dưới dạng mã thập lục phân.

Hình 1.2 – Biểu diễn chuỗi dưới bộ nhớ

1.3.3 Xuất ra đúng chuỗi đã nhập a Đề bài:

Nhập chuỗi và xuất ra đúng chuỗi đã nhập Ví dụ:

Nhập: Truong Dai hoc Cong nghe thong tin - b Sơ đồ giải thuật:

Hình 1.3 – Sơ đồ giải thuật xuất đúng chuỗi đã nhập

12 download by : skknchat@gmail.com c Chương trình:

1.3.4 Tính tổng hai số nguyên được nhập từ bàn phím a Đề bài:

Nhập vào 2 số nguyên, sau đó xuất tổng của 2 số nguyên này. b Sơ đồ giải thuật:

(Lưu giá trị số nguyên thứ nhất)

(Lưu giá trị số nguyên thứ hai) (Tính tổng)

Hình 1.4 – Sơ đồ giải thuật tính tổng hai số nguyên nhập từ bàn phím

13 download by : skknchat@gmail.com c Chương trình:

0x00000005 addiu $2, $0, syscall add $5, $2,$0 addiu $2, $0, 0x00000005 syscall

14 download by : skknchat@gmail.com

CÁC CẤU TRÚC ĐIỀU KHIỂN

Lí thuyết

2.1.1 Cấu trúc if, if-else

- tiên thực hiện việc so sánh điều kiện Đầu+ So sánh bằng (a == b)

+ So sánh bé hơn, bé hơn hoặc bằng (a < b, a b, a >= b)

Nếu điề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ì không thực thi đoạn mã.

- Kiểm tra từng điều kiện để đưa vào trường hợp đúng tương ứng.

Có thể chuyển thành cấu trúc if, if-else.

Kiếm tra điều kiện, để quyết định có nhảy hay không, điều kiện không thỏa thì thoát.

Thực hành

Chuyển đoạn code trong bảng theo sau sang MIPS. if (i==j) f = g + h; else f = g – h;

(Với giá trị của i, j, f, g, h lần lượt chứa trong các thanh ghi $s0, $s1, $s2, $t0, $t1)

.text main: beq $16, $17, cong sub $18, $8, $9 j exit cong: add $18, $8, $9 exit:

15 download by : skknchat@gmail.com

Chuyển đoạn code trong bảng theo sau sang MIPS. int Sum = 0; for (int i = 1; i

Ngày đăng: 09/04/2022, 09:44

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w