Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
222,5 KB
Nội dung
PHẦN II HỢP NGỮ Chương TỔNG QUAN VỀ HỢP NGỮ Nội dung • • • • Giới thiệu hợp ngữ Lập trình với hợp ngữ Ví dụ mẫu Bài tập I.Giới thiệu • Hợp ngữ - Assembly • Trình dịch hợp ngữ - Assembler • So sánh ngơn ngữ máy hợp ngữ Ngôn ngữ máy 5601:0100 5601:0102 5601:0105 B4.02 80.C2.30 50 Hợp ngữ MOV ADD PUSH AH, DL,30 AX Hợp ngữ • Ngơn ngữ lập trình cấp thấp, dùng dạng gợi nhớ tập lệnh mnemonic [operand1 [,operand2] • Các đặc điểm: – Thực thi nhanh – Kích thước nhỏ – Xử lý trực tiếp hệ thống – Có thể viết hệ điều hành, CPU – Khó viết Cú pháp lệnh hợp ngữ • Bộ ký tự – Chữ latinh: A Z, a z – Chữ số thập phân: – Các ký tự đặc biệt: ? @ _ $ : [ ] ( ) < > … – Các ký tự cách: SP, Tab • Từ vựng: – Từ khóa (keyword) – Tên (Symbol, name) Từ khóa • Tên dành riêng hợp ngữ – Tên ghi – Tên gợi nhớ – Tên toán tử –… Đặt tên • Tên hằng, tên biến, tên nhãn… người lập trình đặt • Bắt đầu tên khơng số • Tên khơng trùng với từ khóa • Tên tối đa 31 ký tự Cú pháp lệnh hợp ngữ [label:] mnemonic [operand1 [,operand2]] [; comment] - Từ gợi nhớ xác định hành động câu lệnh - Tra tập lệnh - Chú thích - Các toán hạng, ngăn cách dấu , - Nhãn thay địa câu lệnh - Người lập trình tự đặt Các dạng (t.t) • Thập phân: – Gồm dãy chữ số từ đến 9, thêm ký tự + , - để biểu thị dấu – kết thúc ký tự D khơng cần – Ví dụ: 9871d hay 9871 Các dạng (t.t) • Thập lục phân(hệ 16 hay hex): – Gồm dãy chữ số từ đến ký tự từ A-F (a-f), kết thúc ký tự H – Nếu ký tự bắt đầu khơng phải số phải thêm vào đầu – Ví dụ: 45h 5AF8H 0A28FH số hex 8bit số hex 16 bit bắt đầu A nên phải thêm vào đầu Các dạng (t.t) • Dạng chuỗi: – Gồm dãy ký tự nằm dấu ‘ hay “ – Ví dụ: “Hello Assembly” ‘Xin chao!’ Dữ liệu cho chương trình • Khai báo hằng: – Cú pháp: tên EQU giá trị biểu thức – Ví dụ: MAX EQU 100 loichao EQU ‘Hello!$’ mark EQU 01001110b Khai báo biến • Biến byte: db songuyen a db db 10 ? • Biến từ (word) dw • Biến từ gấp đơi (double word) dd Khai báo biến (t.t) • Biến mảng: tên db/dw tên db/dw mang db mang2 dw • Kiểu chuỗi str db pt1,pt2,pt3,… DUP() 5,3,0,2,1,7 100 DUP (0) ‘chuoi ki tu’ Kiểu mảng • Thực chất loạt byte hay từ nhớ liên tiếp truy xuất địa thơng qua tên biến • • Ví dụ: vùng nhớ B_ARRAY chiều dài byte b_array DB 10h,20h,30h thì: b_array tên gán cho byte b_array+1 tên byte thứ hai b_array+2 tên byte thứ ba Kiểu mảng (t.t) • Nếu B_ARRAY gán địa offset 0200h nội dung nhớ sau : SYMBOL b_array b_array+1 b_array+2 ADDRESS 200h 201h 202h CONTENTS 10h 20h 30h Mảng (t.t) • Ví dụ mảng W_ARRAY phần tử W_ARRAY DW 1000,40,29887,329 • • Giả sử mảng bắt đầu 0300h: SYMBOL ADDRESS CONTENTS W_ARRAY 300h 1000d W_ARRAY+2 302h 40d W_ARRAY+4 304h 29887d W_ARRAY+6 306h 329d Chương trình 16 bit dạng COM model tiny code org 100h : Int 20h end Dạng COM nạp địa 100h Gọi ngắt 20h để kết thúc chương trình COM Ví dụ: HelloC.ASM model tiny code org 100h batdau : Mov dx, offset loichao Mov ah, Int 21h Int 20h loichao db ‘Hello Assembly! $’ end batdau Gọi ngắt 21h/AH=9 Xuất chuỗi hình Chuỗi kết thúc $ Chương trình 16bit dạng EXE Khai báo kích thước stack sử dụng Khai báo đoạn liệu Khai báo đoạn chương trình model small stack data code : Mov Ah,4Ch Int 21h end Qui mô nhớ: small/ medium/ compact/ large/ huge Gọi ngắt 21h/AH=4C h để kết thúc chương trình EXE Các kiểu kích thước nhớ cho chương trình hợp ngữ Ví dụ: HelloE.ASM model small data loichao db ‘Hello Assembly! $’ code batdau : Mov ax,@data Mov ds,ax Mov dx, offset loichao Mov ah, Int 21h Mov ah,4ch Int 21h end batdau Trỏ ghi DS vào đoạn data Dịch thực thi • Bộ dịch hợp ngữ: – MASM – Microsoft – TASM – Borland (Turbo Assembler) – MASM32 – www.masm32.com – NASM – www.sourceforge.net/projects/nasm – Emu8086 ... máy hợp ngữ Ngôn ngữ máy 56 01: 010 0 56 01: 010 2 56 01: 010 5 B4.02 80.C2.30 50 Hợp ngữ MOV ADD PUSH AH, DL,30 AX Hợp ngữ • Ngơn ngữ lập trình cấp thấp, dùng dạng gợi nhớ tập lệnh mnemonic [operand1 [,operand2]... = Địa chuỗi cần xuất INT 21h • Trị trả về: khơng có Các dạng hợp ngữ • Nhị phân: – Gồm dãy chữ số 1, kết thúc ký tự B b – Ví dụ: 010 0 010 1B : 11 110 00 011 110 000b : 8bit 16 bit Các dạng (t.t) • Thập.. .Chương TỔNG QUAN VỀ HỢP NGỮ Nội dung • • • • Giới thiệu hợp ngữ Lập trình với hợp ngữ Ví dụ mẫu Bài tập I.Giới thiệu • Hợp ngữ - Assembly • Trình dịch hợp ngữ - Assembler • So sánh ngơn ngữ máy