kiến trúc máy tính trương văn cường 1 hướng dẫn sử dụng mars sinhvienzone com

11 100 1
kiến trúc máy tính trương văn cường 1  hướng dẫn sử dụng mars sinhvienzone com

Đ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

GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 MARS – chương trình mô hợp ngữ (assembly) MIPS Hướng dẫn sử dụng nhanh -o0o - Phần A: Cài đặt, chạy chương trình thao tác ghi Cài đặt Download chương trình tại: http://courses.missouristate.edu/kenvollmar/mars/download.htm Giao diện chương trình hình Hình Giao diện MARS Bắt đầu lập trình assembly chạy chương trình (run) Ví dụ: thực đoạn lệnh sau, biết lúc đầu ghi $t0 = 0x1111 addi $t1, $t0, 0x5555 add $t2, $t1, $t0 ori $t3, $t2, 10 Lưu ý: MARS, 0x5555 tức 5555 hệ 16, 10 viết bình thường hiểu hệ 10 Vào File  New  gõ đoạn code vào chương trình soạn thảo hình  save file Click Run  Assemble  giao diện hình CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT Hình Soạn thảo lệnh assembly Chay liên tục Chay bước Hình Giao diện chương trình chuẩn bị chay lệnh assembly CuuDuongThanCong.com https://fb.com/tailieudientucntt 2013 GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Việc chạy chương trình thực chạy từng lệnh chay toàn lần hình Trước chạy đoạn code ví dụ, giá trị ghi $t0 0, chỉnh sửa giá trị ghi thành 0x1111 hình Chạy bước quan sát thay đổi ghi Kết cuối hình Hình Chỉnh sửa giá trị ghi CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Hình Giao diên chương trình sau thực hiên xong đoạn code ví dụ Phần B: Phân biệt lệnh assembly MIPS (basic instruction) lệnh mở rộng, giả (extended/pseudo instruction)   Nhóm lệnh lệnh mà processor thật thực Nhóm lệnh mở rộng giả lệnh người lập trình sử dụng, chạy thật sự kết hợp lệnh nhóm lệnh Vào menu Help  Help, nhóm lệnh lệnh giả lập gồm lệnh liệt kê hình Trong MARS, chạy chương trình cần lưu ý có cho phép nhóm lệnh mở rộng/giả hay không, không cho phép tức simulator chạy lệnh Vào Setting  chọn tùy chọn “Permit extended (pseudo) instructions and formats” hình CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT Hình Danh sách nhóm lệnh nhóm lệnh mở rộng/giả MARS Hình Tùy chọn cho phép sử dụng nhóm lệnh mở rộng (giả) hay khơng CuuDuongThanCong.com https://fb.com/tailieudientucntt 2013 GV Biên soạn: TTNNguyet-Khoa KTMT-UIT Ví dụ: Thực đoạn lệnh sau (với ghi $t0 ban đầu chứa giá trị 0x00000000) not $t1 $t2 subi $t1, $t1, Xét ví dụ với hai trường hợp, cho phép nhóm lệnh giả sử dụng lệnh bản: Cho phép nhóm lệnh mở rộng/giả: Chay đoạn code ví dụ kết hình 9, ta thấy:  lệnh „not‟ lệnh giả, thật thực lệnh „nor‟  lệnh „subi‟ thật thực hai lệnh „addi‟ „sub‟ Hình Hai lệnh „not‟ „subi‟ trước thực thi với nhóm lệnh giả cho phép Khơng cho phép nhóm lệnh mở rộng/giả, tức sử dụng lệnh bản: Chay đoạn code ví dụ bị lỗi hình 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt 2013 GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Hình 10 Lỗi không đươc phép sử dụng lệnh giả Phần C: Làm việc với liệu nhớ Lệnh lw/sw Ví dụ: Thực lệnh sau giả sử ghi $t1 lúc đầu chứa giá trị 0x10010000, ghi $t0 chứa giá trị 0x0000000a sw $t0, 12($t1) Từng bước thực hiện: Gõ lệnh vào edit  run Assemble  chỉnh sửa giá trị ghi $t1 = 0x10010000 $t0 = 0x0000000a trước run Vùng nhớ làm việc hiển thị vị trí khoanh tròn hình 11, hiển thị giống bảng ma trận gồm hàng cột Mỗi ô bảng từ (word) – 4bytes Địa word cột tính cách lấy „Value‟ cột cộng với „Address‟ tương ứng Ví dụ hình 11, từ nhớ hàng 2, cột „Value (+8)‟ (khoanh đỏ) có địa 0x10010028 giá trị chứa 0x00000000 Chú ý, nhớ máy tính chia làm nhiều phân vùng (.data, text, extern, heap, … ) phân vùng thực chức khác nhau, chọn data hình 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Run quan sát từ nhớ có địa 0x1001000c Như hình 12, nội dung nhớ chuyển từ sang 0x0000000a lệnh ‘sw $t0, 12($t1)’ thực lưu giá trị ghi $t0 vào word có địa 0x1001000c (1001000c(16) = 12(10) + 10010000(16)), mà giá trị $t0 0x0000000a, nên sau thực lệnh này, giá trị từ nhớ 0x1001000c chuyển thành 0x0000000a Tương tự, thử quan sát thay đổi nhớ lệnh „lw‟ Hình 11 Vùng nhớ làm việc CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Hình 12 Kết sau thực lệnh sw, word địa 0x1001000c thay đổi thành 0x0000000a Vùng nhớ lưu trữ mã máy (machine/binary code) chương trình assembly Sau chương trình assembly biên dịch, tất lệnh mã máy đưa vào vùng nhớ text (mặc định MARS 0x400000) Mỗi lệnh lưu word, 0x400000, hình 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Đia lệnh: Lệnh lưu địa 0x00400000, lệnh 0x00400004 … Mã máy lệnh Mã máy lệnh Mã máy lệnh Mã máy lệnh Hình 13 Phần D Xuất nhập gọi hệ thống (system calls) System calls sử dụng để đọc vào in giá trị chuỗi từ cửa sổ input/output, thị kết thúc chương trình Ví dụ sau in cửa sổ giá trị chứa ghi $t2 li $v0, #đưa mã mong muốn chức vào ghi $v0, #trong trường hợp mã 1, tức muốn in số #nguyên cửa sổ move $a0, $t2 #đưa giá trị cần in vào ghi $a0 #trong trường giá trị cần in chứa #trong ghi $t2 syscall #Gọi hệ điều hành để thực thao tác in cửa #sổ số nguyên chứa ghi $a0 Khi $v0 chứa giá trị lệnh syscall thực hiện, chương trình in số nguyên ghi $a0 cửa sổ, hình 14 (ví dụ $t2 = 5) CuuDuongThanCong.com https://fb.com/tailieudientucntt GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2013 Giá trị in hiển thị – cửa sổ I/O MARS Hình 14 Ví dụ in số cửa sổ hiển thị Lưu ý: Trong ví dụ trên, ghi $v0 chứa hiểu in số nguyên cửa sổ Tương tự, thao tác in khác (in số thực dang float hay double, in chuỗi, v.v.) với mã tương ứng trình bày hình 15: Hình 16 Các lệnh hệ thống mã tương ứng CuuDuongThanCong.com https://fb.com/tailieudientucntt ... lưu giá trị ghi $t0 vào word có địa 0x10 010 00c (10 010 00c (16 ) = 12 (10 ) + 10 010 000 (16 )), mà giá trị $t0 0x0000000a, nên sau thực lệnh này, giá trị từ nhớ 0x10 010 00c chuyển thành 0x0000000a Tương... sau giả sử ghi $t1 lúc đầu chứa giá trị 0x10 010 000, ghi $t0 chứa giá trị 0x0000000a sw $t0, 12 ($t1) Từng bước thực hiện: Gõ lệnh vào edit  run Assemble  chỉnh sửa giá trị ghi $t1 = 0x10 010 000... tức sử dụng lệnh bản: Chay đoạn code ví dụ bị lỗi hình 10 CuuDuongThanCong .com https://fb .com/ tailieudientucntt 2 013 GV Biên soạn: TTNNguyet-Khoa KTMT-UIT 2 013 Hình 10 Lỗi khơng đươc phép sử dụng

Ngày đăng: 28/01/2020, 23:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan