Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
617,48 KB
Nội dung
ĐẠI HỌC AN GIANG BỘ MÔN TIN HỌC TÀI LIỆU GIẢNG DẠY LẬP TRÌNH HỢP NGỮ 12/2014 A LẬP TRÌNH HỢP NGỮ MIPS I Giới thiệu: Hợp ngữ (Assembly) ngơn ngữ lập trình bậc thấp, gồm tập từ khóa từ gợi nhớ gần với ngơn ngữ máy (machine code) Mỗi kiến trúc vi xử lý có tập lệnh (instruction set) riêng, có hợp ngữ riêng dành cho kiến trúc Ở đây, ta tập trung nghiên cứu hợp ngữ dành cho kiến trúc MIPS Cấu trúc chương trình hợp ngữ MIPS: data # khai báo biến sau thị text # viết lệnh sau thị main: # điểm bắt đầu chương trình … Cách khai báo biến tên_biến: kiểu_lưu_trữ_giá_trị Các kiểu lưu trữ hỗ trợ: word, byte, ascii, asciiz, space Lưu ý:tên_biến (nhãn) phải theo sau dấu hai chấm (:) Ví dụ: var1: word # số ngun 4-byte có giá trị khởi tạo var2: byte ’a’,’b’ # mảng phần tử, khởi tạo a b var3: space 40 # cấp 40-byte nhớ, chưa khởi tạo char_array: byte 'A':10 # mảng 10 ký tự khởi tạo 'A', thay 'A' 65 int_array: word 0:30 # mảng 30 số nguyên khởi tạo Các ghi MIPS - Các ghi đa - Thanh ghi HI LO Thao tác nhân MIPS có kết chứa ghi HI LO Bit 0-31 thuộc LO 32-63 thuộc HI Thao tác chia MIPS có thương số chứa bit 031 thuộc LO số dư chứa bit 32-63 thuộc HI Thanh ghi dấu phẩy động MIPS sử dụng 32 ghi dấu phẩy động để biểu diễn độ xác đơn số thực Các ghi có tên : $f0 – $f31 Để biểu diễn độ xác kép (double precision) MIPS sử dụng ghép đơi ghi có độ xác đơn Tập lệnh hợp ngữ MIPS Các lệnh luận lý (logic): - Định dạng lệnh or ori ( or immediate): Lệnh or: or d, s, t # d ghi đích, s t ghi nguồn Lệnh or thực logic or bit hai ghi nguồn s t, kết lưu vào ghi đích d Lệnh or dùng để copy nội dung ghi nguồn vào ghi đích cách thực phép or với ghi $0 or d, s, $0 # chép nội dụng từ s vào d Lệnh ori : ori d, s, const d: ghi đích s: ghi nguồn const: số 16 bít (thể dạng số thập phân hay số hex) Số bổ sung thêm số bên trái để đủ 32 bit - II - - Lệnh ori thực phép logic or theo bít tốn hạng nguồn s const, kết lưu vào ghi đích d Ví dụ hai lệnh sau tương đương : ori $5,$4,0x10 # const số hex ori $5,$4,16 # const số thập phân Định dạng lệnh and andi (and immediate) : Lệnh and: and d, s, t # d ghi đích, s t ghi nguồn Lệnh and thực logic and bit hai ghi nguồn s t, kết lưu vào ghi đích d Lệnh andi: andi d, s, const d: ghi đích s: ghi nguồn const: số 16 bít (thể dạng số thập phân hay số hex) Số bổ sung thêm số bên trái để đủ 32 biết Lệnh andi thực phép logic and theo bít tốn hạng nguồn s const, kết lưu vào ghi đích d Ví dụ: andi $8,$0,0x0002 andi $8,$0,0x2 # bỏ số phía trước Định dạng lệnh xor xori (xor immediate) : Lệnh xor: xor d, s, t # d ghi đích, s t ghi nguồn Lệnh xor thực logic xor bit hai ghi nguồn s t, kết lưu vào ghi đích d Lệnh xori: xori d, s, const d: ghi đích s: ghi nguồn const: số 16 bít (thể dạng số thập phân hay số hex) Số bổ sung thêm số bên trái để đủ 32 biết - Lệnh xori thực phép logic xor theo bít tốn hạng nguồn s const, kết lưu vào ghi đích d Ví dụ chương trình đơn giản sử dụng lệnh này: text globl main main: ori $15, $0,0x0FA5 ori $8,$15,0x368F andi $9,$15,0x368F xori $10,$15,0x368F Định dạng lệnh nor: nor d, s, t # d ghi đích, s t ghi nguồn Lệnh nor thực logic nor bit hai ghi nguồn s t, kết lưu vào ghi đích d MIP khơng hỗ trợ lệnh nori (nor immediate) Lệnh nor dùng để đảo bit ghi thực với ghi $0: nor d, s, $0 # đảo bít s để lưu vào d Các lệnh dịch chuyển (shift instructions): - Lệnh dịch trái luận lý sll (shift left logical): sll d, s, shft dịch chuyển sang trái shft bit ghi nguồn s thêm bit vào bên phải Kết lưu vào ghi đích d Các ghi d, s ghi độ dài 32 bit 0) && ($s2 < 0)) {$s3++;} Các lệnh hợp ngữ tương ứng là: blez