Tải bản đầy đủ (.ppt) (63 trang)

slide bài giảng lập trình hợp ngữ đại học bách khoa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (144.85 KB, 63 trang )

LẬP TRÌNH HỢP NGỮ
Ngôn ngữ lập trình

Ngôn ngữ lập trình

Phương tiện để viết chương trình cho máy tính

Hàng trăm ngôn ngữ lập trình khác nhau

Những quy định về cú pháp (syntax) & ngữ nghĩa
(semantic)

Máy tính có thể hiểu được

Phân chia làm 3 nhóm chính

Ngôn ngữ máy - Machine languages

Ngôn ngữ duy nhất của máy tính - CPU

Hợp ngữ - Assembly languages

Ngôn ngữ cấp cao - High-level languages
Ngôn ngữ máy - Machine languages

Ngôn ngữ duy nhất được máy tính (CPU) hiểu
trực tiếp.

Được xác định bởi tập lệnh của CPU

Phụ thuộc vào máy tính cụ thể



Dạng nhị phân {0,1}*

Rất khó đọc hiểu

Khó có khả năng viết chương trình trực tiếp

Khó nhớ hàng chục ngàn lệnh dạng {0,1}*

Rất khó xác định & sửa lỗi

Không được sử dụng trong thực tế để viết
chương trình

Nền tảng xây dựng hợp ngữ
Hợp ngữ - Assembly Languages

Sử dụng các từ khóa tiếng Anh cho các lệnh hay
nhóm lệnh của mã máy.

Được dịch sang mã máy khi thực hiện

Chuyển đỗi nhanh chóng

Dễ đọc và dễ hiểu hơn

Vẫn tương đối khó sử dụng do

Các lệnh còn đơn giản nên phải dùng nhiều lệnh.


Chưa có những cấu trúc điều khiển thuận tiện

Khả năng tìm và sửa lỗi cũng chưa thuận tiện.

Nền tảng xây dựng các ngôn ngữ cấp cao
Ngôn ngữ cấp cao

Một câu lệnh diễn tả nhiều động thái

Có cấu trúc ngày càng giống ngôn ngữ tự
nhiên (tiếng Anh)

Được dịch sang assembly hay mã máy bằng
các chương trình dịch trước khi thực thi.

Source code & Executed code

Được phân làm nhiều lớp

Lập trình goto

Lập trình cấu trúc – Structured

Lập trình hướng đối tượng – Object Oriented

Các dạng khác
Học ngôn ngữ lập trình

Học ngữ pháp


Quy tắc ngữ pháp

Từ vựng

Cấu trúc câu

Ngữ nghĩa của các lệnh

Các “thành ngữ”

Học ngôn ngữ lập trình VS. Học ngôn ngữ tự nhiên

Quy tắc ngữ pháp đơn giản

Từ vựng ít, tự quy định

Cấu trúc câu đơn giản

Hạn chế và khó khăn của sử dụng ngôn ngữ lập trình.
Chương trình dịch

Dùng để dịch từ một ngôn ngữ lập trình này sang ngôn ngữ
lập trình khác

Mục tiêu cuối cùng là dịch sang mã máy để có được executed
code –> chương trình thực thi

Phân loại:

Intepreter – thông dịch


Compiler – biên dịch

Intepreter vs. Compiler

Công cụ phát triển – Integrated Development Environment (IDE)

Soạn thảo

Dịch và sửa lỗi chương trình

Chạy thử và sửa lỗi
Một số khái niệm khác

Lỗi và sửa lỗi

Syntax error – lỗi ngữ pháp

Semantic error- lỗi ngữ nghĩa

Runtime error - Lỗi thực thi

Debug – Tìm và sửa lỗi

Dữ liệu, kiểu dữ liệu

Các kiểu dữ liệu cơ bản

integer, long, character, byte, ….


Real (double, float)

Kiểu khác: string

Kiểu dữ liệu có cấu trúc: array, string, record,

Biến (Variable) & Hằng (Constant)

Giải thuật: khái niệm, công cụ biểu diễn

Flow chart – lưu đồ
Cấu trúc điều khiển cơ bản
If <condition> then Statement;
If <condition> then Statement 1
else Statement 2;
Case <Value> of
value 1 : Statement 1;
………
value n : Statement n;
else : Statement 0
end;
While <condition> do Statement;
Repeat Statement until <condition>;
For counter=start value to end value do Statement;
For counter=start value downto end value do Statement
Chu kỳ sống của phần mềm

Thu thập yêu cầu

Phân tích thiết kế


Phát triển chương trình - codeing

Xác định giải thuật

Viết code và dịch thử , hiệu chỉnh các lỗi syntax

Thử nghiệm - Testing

Chạy thử với các dữ liệu mẫu để kiểm tra lỗi semantic
và runtime

Vận hành và bảo trì

Phát triển theo yêu cầu
Một số ngôn ngữ lập trình

Lập trình goto

Assembly

Basic

Lập trình cấu trúc

Pascal, C

Foxpro

Lập trình hướng đối tượng


Java, C++, Object Pascal,…

Khác

Prolog, LISP, Visual basic (VB), VC++, J++, Delphi, ASP, PHP,

Visual studio .NET: VB.NET, ASP.NET, C++.NET, C#
Lập trình hợp ngữ

Một chương trình hợp ngữ bao gồm một loạt
các mệnh đề ( statement) được viết liên tiếp
nhau , mỗi mệnh đề được viết trên 1 dòng

Một mệnh đề có thể là :

một lệnh ( instruction) : được trình biên dịch
( Assembler =ASM) chuyển thành mã máy.

một chỉ dẫn của Assembler ( Assembler directive) :
ASM không chuyển thành mã máy
Trường Tên ( Name Field)

Trường tên được dùng cho nhãn lệnh , tên thủ
tục và tên biến . ASM sẽ chuyển tên thành địa
chỉ bộ nhớ .

Tên có thể dài từ 1 đến 31 ký tự . Trong tên
chứa các ký tự từ a-z , các số và các ký tự đặc
biệt sau : ? ,@ , _ , $ và dấu .


Không được phép có ký tự trống trong phần
tên. Nếu trong tên có ký tự thì nó phải là ký tự
đầu tiên.

Tên không được bắt đầu bằng một số.
ASM không phân biệt giữa ký tự viết thường và
viết hoa .
Phân biệt
Tên hợp lệ Tên không hợp lệ
COUNTER1 TWO WORDS
@CHARACTER 2ABC
SUM_OF_DIGITS A45.28
DONE? YOU&ME
.TEST ADD-REPEAT
Các kiểu số liệu trong chương trình hợp
ngữ

Các số

Các ký tự

Các biến ( variables)
Các số

Một số nhị phân là một dãy các bit 0 và 1 và 2
phải kết thúc bằng h hoặc H
Ví dụ: 10111b, 11111b

Một số thập phân là một dãy các chữ só thập

phân và kết thúc bởi d hoặc D ( có thể không
cần)
Ví dụ: 64223, -2183d

Một số hex phải bắt đầu bởi 1 chữ số thập phân
và phải kết thúc bởi h hoặc H
Ví dụ: 183Dh, 1AC0h, 0FFFFH
Các ký tự

Ký tự và một chuỗi các ký tự phải được đóng
giữa 2 dấu ngoặc đơn hoặc hai dấu ngoặc kép .
Ví dụ: ‘ A ’ và “ HELLO ” .

Các ký tự đều được chuyển thành mã ASCII bởi
ASM . Do đó trong một chương trình ASM sẽ
xem khai báo ‘A’ và 41h ( mã ASCII của A) là
giống nhau
Các biến ( variables)
Trong ASM biến đóng vai trò như trong ngôn ngữ
cấp cao. Mỗi biến có một loại dữ liệu và nó được
gán một địa chỉ bộ nhớ sau khi dịch chương trình
PSEUDO-OP STANDS FOR

DB define byte
DW define word ( doublebyte)
DD define doubeword ( 2 từ liên tiếp)
DQ define quadword ( 4 từ liên tiếp )
DT define tenbytes ( 10 bytes liên tiếp)
Chuỗi các ký tự ( character strings)


Một mảng các mã ASCII có thể được định nghĩa bằng một chuỗi
các ký tự
Ví dụ :
LETTERS DW 41h, 42h, 43h

LETTERS DW ‘ABC ’

Bên trong một chuỗi , ASM sẽ phân biệt chữ hoa và chữ thường .
Vì vậy chuỗi ‘abc’ sẽ được chuyển thành 3 bytes : 61h ,62h và
63h.

Trong ASM cũng có thể tổ hợp các ký tự và các số trong một định
nghĩa .
Ví dụ :
MSG DB ‘HELLO’, 0AH, 0DH, ‘$’

MSG DB 48H, 45H, 4CH, 4Ch, 4FH, 0AH, 0DH, 24H
Các hằng ( constants)

Trong một chương trình các hằng có thể được đặt tên nhờ chỉ
dẫn EQU (equates) .
Cú pháp của EQU là : NAME EQUconstant
Ví dụ : LF EQU0AH

Cũng có thể dùng EQU để định nghĩa một chuỗi:
Ví dụ: PROMPT EQU ‘TYPE YOUR NAME ’
Sau khi có khai báo này, thay cho
MSG DB ‘TYPE YOUR NAME ’

MSG DB PROMPT

Các lệnh cơ bản

MOV

XCHG

ADD

SUB

INC

DEC

NEG
Cấu trúc của một chương trình hợp ngữ

Một chương trình ngôn ngữ máy bao gồm :

Mã ( code)

Số liệu ( data)

Ngăn xếp (stack )

Mỗi một phần chiếm một đoạn bộ nhớ . Mỗi
một đoạn chương trình là được chuyển
thành một đoạn bộ nhớ bởi ASM .
Các kiểu bộ nhớ ( memory models)


Độ lớn của mã và số liệu trong một chương
trình được quy định bởi chỉ dẫn MODEL
nhằm xác định kiểu bộ nhớ dùng với
chương trình . Cú pháp của chỉ dẫn MODEL
như sau :
.MODEL memory_model
Đoạn số liệu

Đoạn số liệu của chương trình chứa các khai báo biến, khai báo
hằng Để bắt đầu đoạn số liệu chúng ta dùng chỉ dẫn DATA với
cú pháp như sau :
.DATA
;khai báo tên các biến, hằng và mảng
Ví dụ :
.DATA
WORD1 DW 2
WORD2 DW 5
MSG DB ‘THIS IS A MESSAGE ’
MASK EQU 10010010B
Đoạn ngăn xếp

Mục đích của việc khai báo đoạn ngăn xếp là
dành một vùng nhớ (vùng stack) để lưu trữ cho
stack.
Cú pháp của lệnh như sau : .STACK size

Nếu không khai báo size thì 1KB được dành cho
vùng stack .
.STACK 100h ; dành 256 bytes cho vùng stack

×