Low--level programming language level programming languageGIỚI THIỆU CHUNG Ngôn ngữ lập trình cấp cao High High--level programming language level programming language Hợp ngữ Assembly la
Trang 1BÀI GIẢNG LÝ THUYẾT
VI XỬ LÝ
TP HỒ CHÍ MINH THÁNG 09
THÁNG 09 2009 2009
VI XỬ LÝ
Giáo Giáo viên: PHẠM QUANG TRÍ viên: PHẠM QUANG TRÍ
Trang 2KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 3
LẬP TRÌNH HỢP NGỮ
CHO 8051
Trang 3NgônNgôn ngữngữ lậplập trìnhtrình cấpcấp caocao
Trang 4(Low level programming language) level programming language)
GIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp cao
(High
(High level programming language) level programming language)
Hợp ngữ (Assembly language)
Hợp Hợp ngữ ngữ::
Trang 5Sử Sử dụng dụng các các từ từ và và phát phát biểu biểu gần gần giống giống với với ngôn ngôn ngữ
ngữ con con người người
Mỗi Mỗi câu câu lệnh lệnh tương tương ứng ứng với với nhiều nhiều chỉ chỉ lệnh lệnh trong trong ngôn
ngôn ngữ ngữ cấp cấp thấp thấp
So So với với ngôn ngôn ngữ ngữ cấp cấp thấp thấp:: chương chương trình trình viết viết dễ, dễ, nhanh
nhanh và và ít ít lệnh lệnh hơn hơn
So So với với ngôn ngôn ngữ ngữ cấp cấp thấp thấp:: câu câu lệnh lệnh dài, dài, chương chương trình
trình hoạt hoạt ñộng ñộng tốc tốc ñộ ñộ chậm chậm hơn, hơn, hiệu hiệu suất suất không
không cao cao và và chiếm chiếm nhiều nhiều bộ bộ nhớ nhớ
không không cao cao và và chiếm chiếm nhiều nhiều bộ bộ nhớ nhớ
(Low
(Low level programming language) level programming language)
Ngôn ngữ máy (Machine language)
Trang 6GIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp cao (High
(High level programming language) level programming language)
CPU thực thi chương trình
Các công ñoạn ñể thực thi một chương trình
Trang 7Ngôn ngữ lập trình cấp thấp
Hợp ngữ (Assembly language)
Ngôn ngữ lập trình cấp thấp (Low
(Low level programming language) level programming language)
CPU thực thi chương trình
Các công ñoạn ñể thực thi một chương trình
Trang 8Ngôn ngữ lập trình cấp thấp
GIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp cao (High
(High level programming language) level programming language)
Hợp ngữ (Assembly language)
Ngôn ngữ lập trình cấp thấp (Low
(Low level programming language) level programming language)
Ngôn ngữ máy (Machine language)
CPU thực thi chương trình
Các công ñoạn ñể thực thi một chương trình
Trang 9[[Label Label::]] Mnemonic Mnemonic [[Operand Operand][ ][,Operand ,Operand][ ][,Operand ,Operand]] [[Comment Comment]]
NhãnNhãn (Label)(Label):: BiểuBiểu thịthị ñịañịa chỉchỉ củacủa dòngdòng lệnhlệnh ((hoặchoặc dữdữ liệuliệu)) theotheo sau,sau,ñược
ñược dùngdùng trongtrong trườngtrường toántoán hạnghạng củacủa lệnhlệnh rẽrẽ nhánhnhánh
Ví Ví dụ dụ::
MAIN MAIN::
MOV A, A, # #20 20H H LOOP
LOOP::
LOOP LOOP::
ADD A, A, # #01 01H H CJNE A, A, # #35 35H, H, LOOP LOOP SJMP $
Lưu Lưu ý ý về về nhãn nhãn::
Do Do người người lập lập trình trình tự tự ñặt ñặt (không (không ñược ñược trùng trùng với với từ từ khoá, khoá, mã mã gợi gợi nhớ, nhớ, chỉ
chỉ dẫn, dẫn, toán toán tử tử hoặc hoặc ký ký hiệu hiệu tiền tiền ñịnh ñịnh nghĩa) nghĩa)
Bắt Bắt ñầu ñầu bằng bằng ký ký tự tự chữ, chữ, dấu dấu chấm chấm hỏi hỏi (?), (?), dấu dấu gạch gạch dưới dưới (_) (_)
Dài Dài tối tối ña ña 31 31 ký ký tự tự
Kết Kết thúc thúc bằng bằng dấu dấu hai hai chấm chấm ((::))
Ký Ký hiệu hiệu $ $ dùng dùng ñể ñể tham tham chiếu chiếu ñến ñến vị vị trí trí hiện hiện tại tại của của dòng dòng lệnh lệnh
Trang 10Khuông Khuông dạng dạng của của một một dòng dòng lệnh lệnh::
[[Label Label::]] Mnemonic Mnemonic [[Operand Operand][ ][,Operand ,Operand][ ][,Operand ,Operand]] [[Comment Comment]]
•• MãMã gợigợi nhớnhớ (Mnemonic)(Mnemonic):: BiểuBiểu diễndiễn cáccác lệnhlệnh hoặchoặc cáccác chỉchỉ dẫndẫn củacủachương
chương trìnhtrình dịchdịch hợphợp ngữngữ
Ví Ví dụ dụ::
ORG 0000 0000H H PAR EQU 100
KHUÔNG DẠNG CỦA CHƯƠNG TRÌNH
ACALL ACALL BBB BBB CJNE A, A, # #35 35H, H, LOOP LOOP JNB P P3 3 1 1,, TEST_ TEST_1 1
Trang 11[[Label Label::]] Mnemonic Mnemonic [[Operand Operand][ ][,Operand ,Operand][ ][,Operand ,Operand]] [[Comment Comment]]
•• ToánToán hạnghạng (Operand)(Operand):: ChứaChứa ñịañịa chỉchỉ hoặchoặc dữdữ liệuliệu màmà lệnhlệnh sẽsẽ sửsử dụngdụng Số
Số lượnglượng toántoán hạnghạng trongtrong mộtmột dòngdòng lệnhlệnh phụphụ thuộcthuộc vàovào từngtừng dòngdòng lệnhlệnh
Ví Ví dụ dụ::
RET – – không không toán toán hạng, hạng, INC A – – một một toán toán hạng, hạng, ADD A A,, R R0 0 – – hai hai toán toán hạng, hạng, CJNE A A,, # #12 12H H,, ABC ABC – – ba ba toán toán hạng hạng
Lưu Lưu ý ý về về toán toán hạng hạng::
Nếu Nếu lệnh lệnh có có nhiều nhiều toán toán hạng hạng thì thì các các toán toán hạng hạng này này cách cách nhau nhau bằng bằng dấu dấu phẩy
Trang 12Khuông Khuông dạng dạng của của một một dòng dòng lệnh lệnh::
[[Label Label::]] Mnemonic Mnemonic [[Operand Operand][ ][,Operand ,Operand][ ][,Operand ,Operand]] [[Comment Comment]]
•• ChúChú thíchthích (Comment)(Comment):: LàmLàm chocho rõrõ nghĩanghĩa chocho chươngchương trìnhtrình
Ví Ví dụ dụ::
SJMP AAA ;; Lenh Lenh nhay nhay khong khong dieu dieu kien kien den den AAA AAA ACALL
ACALL BBB BBB ;; Lenh Lenh goi goi chuong chuong trinh trinh con con BBB BBB
CJNE A, A, # #35 35H, H, LOOP LOOP ;; Lenh Lenh so so sanh sanh
KHUÔNG DẠNG CỦA CHƯƠNG TRÌNH
JNB P P3 3 1 1,, TEST_ TEST_1 1 ;; Lenh Lenh kiem kiem tra tra gia gia tri tri bit bit P P3 3 1 1
Lưu Lưu ý ý về về chú chú thích thích::
Bắt Bắt ñầu ñầu bằng bằng dấu dấu chấm chấm phẩy phẩy ((;;))
Các Các chú chú thích thích phải phải nằm nằm trên trên cùng cùng một một dòng dòng
Các Các chú chú thích thích nếu nếu nằm nằm trên trên nhiều nhiều dòng dòng thì thì mỗi mỗi dòng dòng cũng cũng phải phải bắt bắt ñầu ñầu bằng
bằng dấu dấu chấm chấm phẩy phẩy ((;;))
Trang 14Cơ Cơ số số cho cho các các hằng hằng số số::
•• SốSố nhịnhị phânphân (Binary)(Binary):: phảiphải kèmkèm theotheo kýký hiệuhiệu BB
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
•• SốSố thậpthập lụclục phânphân (Hexa(Hexa Decimal)Decimal):: phảiphải kèmkèm theotheo kýký hiệuhiệu HH
Ví Ví dụ dụ::
MOV A, A, # #9 9D DH H
Trang 15MOV A, #F9H ;Thiếu số 0 ;Thiếu số 0 → → gây lỗi khi biên dịch.
MOV A, # MOV A, #0 0F9H F9H ;Thêm số 0 ;Thêm số 0 → → ñúng.
MOV A, # MOV A, #0 0F9H F9H ;Thêm số 0 ;Thêm số 0 → → ñúng.
Trang 16Các Các chuỗi chuỗi ký ký tự tự::
•• ChuỗiChuỗi kýký tựtự ñượcñược ñặtñặt trongtrong dấudấu nháynháy ñơnñơn (‘(‘……‘)‘)
•• ChuỗiChuỗi cócó 11 kýký tựtự ((88 bit)bit) hoặchoặc 22 kýký tựtự ((1616 bit)bit) ñượcñược sửsử dụngdụng làmlàm toántoánhạng
Trang 17•• CộngCộng +
•• TrừTrừ
•• NhânNhân **
•• ChiaChia // (Phép(Phép chiachia lấylấy thươngthương số)số)
•• ModuloModulo MOD (Phép(Phép chiachia lấylấy sốsố dư)dư)
Ví Ví dụ dụ::
MOV A, A, # #10 10 + + 10 10H H ⇔ MOV A, A, # #1 1AH AH MOV A, A, # #10 10H H 10 10 ⇔ MOV A, A, # #06 06H H MOV A, A, # #20 20 ** 2 2 ⇔ MOV A, A, # #28 28H H MOV A, A, # #25 25 // 7 7 ⇔ MOV A, A, # #03 03H H MOV A, A, # #25 25 MOD MOD 7 7 ⇔ MOV A, A, # #04 04H H
Trang 18Các Các toán toán tử tử logic logic::
•• CácCác toántoán tửtử gồmgồm:: AND,AND, OR,OR, XORXOR vàvà NOTNOT
•• CácCác thaothao táctác ñượcñược thựcthực hiệnhiện trêntrên từngtừng bitbit củacủa toántoán hạnghạng
Ví Ví dụ dụ::
MOV MOV A, A, # # ‘‘9 9’’ AND AND 0 0FH FH ⇔ MOV A, A, # #09 09H H MOV
MOV A, A, # # ‘‘9 9’’ OR OR 0 0FH FH ⇔ MOV A, A, # #3 3FH FH MOV
MOV A, A, # # ‘‘9 9’’ XOR XOR 0 0FH FH ⇔ MOV A, A, # #36 36H H MOV
MOV A, A, # #NOT NOT 5 5CH CH ⇔ MOV A, A, # #0 0A A3 3H H
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
MOV MOV A, A, # #NOT NOT 5 5CH CH ⇔ MOV A, A, # #0 0A A3 3H H MOV
MOV A, A, # #NOT NOT 3 3 ⇔ MOV A, A, # #0 0FCH FCH
Trang 19•• DịchDịch phảiphải SHR (Thêm(Thêm bitbit 00 vàovào bênbên tráitrái sausau khikhi dịch)dịch)
•• DịchDịch tráitrái SHL (Thêm(Thêm bitbit 00 vàovào bênbên phảiphải sausau khikhi dịch)dịch)
•• LấyLấy bytebyte caocao HIGH
•• LấyLấy bytebyte thấpthấp LOW
•• ðượcðược ñánhñánh giágiá trướctrước ()
Ví Ví dụ dụ::
MOV MOV A, A, # #08 08H H SHL SHL 1 1 ⇔ MOV A, A, # #10 10H H MOV
MOV A, A, # #08 08H H SHR SHR 1 1 ⇔ MOV A, A, # #04 04H H MOV
MOV A, A, # #HIGH HIGH 1234 1234H H ⇔ MOV A, A, # #12 12H H MOV
MOV A, A, # #LOW LOW 1234 1234H H ⇔ MOV A, A, # #34 34H H
Trang 20Các Các toán toán tử tử quan quan hệ hệ::
•• KếtKết quảquả trảtrả vềvề làlà 0000HH (quan(quan hệhệ SAISAI)) hoặchoặc FFHFFH (quan(quan hệhệ ðÚNGðÚNG))
MOV A, A, # #5 5 NE NE 4 4 MOV
MOV A, A, # # ’X’ ’X’ LT LT ‘Z’ ‘Z’
MOV MOV A, A, # # ’X’ ’X’ >= >= ‘Z’ ‘Z’
MOV MOV A, A, # #100 100 GE GE 50 50 Các
Các lệnh lệnh trên trên ñều ñều trả trả về về kết kết quả quả ñúng ñúng nên nên sẽ sẽ tương tương ñương ñương với với lệnh lệnh
MOV A,#0FFH
Trang 21HIGH ‘A’ ‘A’ SHL SHL 8 8 Kết Kết quả quả là là 00 00H H NOT
NOT ‘A’ ‘A’ – – 1 1 Kết Kết quả quả là là BFH BFH
‘A’
‘A’ OR OR ‘A’ ‘A’ SHL SHL 8 8 Kết Kết quả quả là là 41 41H H
Trang 22Chỉ Chỉ dẫn dẫn ñiều ñiều khiển khiển trạng trạng thái thái::
•• ORG,ORG, END,END, USINGUSING
Chỉ Chỉ dẫn dẫn ñịnh ñịnh nghĩa nghĩa ký ký hiệu hiệu::
•• SEGMENT,SEGMENT, EQU,EQU, SET,SET, DATA,DATA, IDATA,IDATA, XDATA,XDATA, BIT,BIT, CODECODE
Chỉ Chỉ dẫn dẫn dành dành trước trước vùng vùng nhớ nhớ // khởi khởi ñộng ñộng vùng vùng nhớ nhớ::
•• DS,DS, DBIT,DBIT, DB,DB, DWDW
Chỉ Chỉ dẫn dẫn liên liên kết kết chương chương trình trình::
CÁC CHỈ DẪN TRONG LẬP TRÌNH
Chỉ Chỉ dẫn dẫn liên liên kết kết chương chương trình trình::
•• PUBLIC,PUBLIC, EXTRN,EXTRN, NAMENAME
Chỉ Chỉ dẫn dẫn lựa lựa chọn chọn phân phân ñoạn ñoạn::
•• PSEG,PSEG, CSEG,CSEG, DSEG,DSEG, ISEG,ISEG, BSEG,BSEG, XSEGXSEG
Trang 23•• ORGORG,, ENDEND,, USINGUSING
Chỉ Chỉ dẫn dẫn ñịnh ñịnh nghĩa nghĩa ký ký hiệu hiệu::
•• SEGMENT,SEGMENT, EQUEQU,, SET,SET, DATA,DATA, IDATA,IDATA, XDATA,XDATA, BITBIT,, CODECODE
Chỉ Chỉ dẫn dẫn dành dành trước trước vùng vùng nhớ nhớ // khởi khởi ñộng ñộng vùng vùng nhớ nhớ::
•• DS,DS, DBIT,DBIT, DBDB,, DWDW
Chỉ Chỉ dẫn dẫn liên liên kết kết chương chương trình trình::
Chỉ Chỉ dẫn dẫn liên liên kết kết chương chương trình trình::
•• PUBLIC,PUBLIC, EXTRN,EXTRN, NAMENAME
Chỉ Chỉ dẫn dẫn lựa lựa chọn chọn phân phân ñoạn ñoạn::
•• PSEG,PSEG, CSEG,CSEG, DSEG,DSEG, ISEG,ISEG, BSEG,BSEG, XSEGXSEG
Trang 24Chỉ Chỉ dẫn dẫn ORG ORG::
•• CúCú pháppháp:: ORGORG expressionexpression (expression(expression:: biểubiểu thức)thức)
•• ThiếtThiết lậplập mộtmột gốcgốc mớimới củacủa chươngchương trìnhtrình chocho cáccác phátphát biểubiểu theotheo sausau
•• LàLà phátphát biểubiểu kếtkết thúcthúc củacủa chươngchương trìnhtrình nguồnnguồn
•• MọiMọi phátphát biểubiểu theotheo sausau phátphát biểubiểu ENDEND ñềuñều khôngkhông hợphợp lệlệ
Trang 25•• CúCú pháppháp:: USINGUSING expressionexpression
•• ThôngThông báobáo chocho trìnhtrình dịchdịch vềvề dãydãy thanhthanh ghighi tíchtích cựccực hiệnhiện tạitại
•• ChoCho phépphép dùngdùng kýký hiệuhiệu tiềntiền ñịnhñịnh ARAR00 –– ARAR77 thaythay thếthế chocho kýký hiệuhiệu thanhthanhghi
Trường Trường hợp hợp không không dùng dùng USING USING::
Nếu Nếu dãy dãy thanh thanh ghi ghi tích tích cực cực là là Dãy Dãy 3 3,, ta ta dùng dùng lệnh lệnh:: PUSH 1 1FH FH Nếu
Nếu dãy dãy thanh thanh ghi ghi tích tích cực cực là là Dãy Dãy 1 1,, ta ta dùng dùng lệnh lệnh:: PUSH 0 0FH FH Trường
Trường hợp hợp dùng dùng USING USING::
Nếu Nếu dãy dãy thanh thanh ghi ghi tích tích cực cực là là Dãy Dãy 3 3,, ta ta dùng dùng lệnh lệnh::
USING USING 3 3 PUSH AR AR7 7 Nếu
Nếu dãy dãy thanh thanh ghi ghi tích tích cực cực là là Dãy Dãy 1 1,, ta ta dùng dùng lệnh lệnh::
USING USING 1 1 PUSH AR AR7 7
Trang 26Chỉ Chỉ dẫn dẫn EQU EQU::
•• CúCú pháppháp:: symbolsymbol EQUEQU expressionexpression (symbol(symbol:: kýký hiệu)hiệu)
•• GánGán giágiá trịtrị sốsố chocho têntên củacủa kýký hiệuhiệu ñượcñược ñịnhñịnh nghĩanghĩa
Ví Ví dụ dụ::
SPEED SPEED EQU EQU 100 ;; SPEED SPEED có có giá giá trị trị 100 100 LED EQU P P0 0 ;; LED LED có có giá giá trị trị 80 80H H (Port (Port 0 0)) TIME EQU 0 0D D8 8F F0 0H H ;; TIME TIME có có giá giá trị trị D D8 8F F0 0H H Với
Với ví ví dụ dụ như như trên trên thì thì::
CÁC CHỈ DẪN TRONG LẬP TRÌNH
Với Với ví ví dụ dụ như như trên trên thì thì::
MOV A, A, #SPEED #SPEED ⇔ MOV A, A, # #100 100 MOV LED, LED, # #12 12H H ⇔ MOV P P0 0,, # #12 12H H MOV TH TH0 0,, #HIGH(TIME) #HIGH(TIME) ⇔ MOV TH TH0 0,, # #0 0D D8 8H H MOV TL TL0 0,, #LOW(TIME) #LOW(TIME) ⇔ MOV TL TL0 0,, # #0 0F F0 0H H
Trang 27•• CúCú pháppháp:: symbolsymbol BITBIT expressionexpression
•• GánGán giágiá trịtrị sốsố (loại(loại bit)bit) chocho têntên củacủa kýký hiệuhiệu ñượcñược ñịnhñịnh nghĩanghĩa
Ví Ví dụ dụ::
FLAG FLAG BIT BIT 05 05H H ;; FLAG FLAG có có giá giá trị trị 05 05H H (Bit (Bit 5 5 của của ô ô nhớ nhớ 20 20H) H) KEY
KEY BIT BIT P P0 0 1 1 ;; KEY KEY có có giá giá trị trị 81 81H H (Bit (Bit 1 1 của của Port Port 0 0)) Với
Với ví ví dụ dụ như như trên trên thì thì::
SETB FLAG ⇔ SETB 05 05H H SETB FLAG ⇔ SETB 05 05H H JNB KEY, KEY, LOOP LOOP ⇔ JNB P P0 0 1 1,, LOOP LOOP
•• LuLu ýý:: ChỉChỉ dẫndẫn EQUEQU cócó thểthể thaythay thếthế chocho chỉchỉ dẫndẫn BIT,BIT, tuytuy nhiênnhiên nếunếu sửsửdụng
dụng chỉchỉ dẫndẫn BITBIT sẽsẽ chocho tata phươngphương tiệntiện kiểmkiểm tratra loạiloại (type)(type)
Ví Ví dụ dụ::
FLAG FLAG1 1 EQU EQU 06 06H H FLAG
FLAG2 2 BIT BIT 05 05H H
SETB FLAG FLAG1 1 SETB FLAG FLAG2 2 MOV FLAG FLAG1 1,, # #0 0 MOV FLAG FLAG2 2,, # #0 0 ;; Không Không hợp hợp lệ lệ
Trang 28Chỉ Chỉ dẫn dẫn DB DB::
•• CúCú pháppháp:: [[labellabel]] DBDB expressionexpression[[,, expressionexpression][][,, expressionexpression][][,, ……]]
•• KhởiKhởi ñộngñộng vùngvùng nhớnhớ mãmã cùngcùng vớivới cáccác giágiá trịtrị củacủa bytebyte
•• DùngDùng ñểñể ñặtñặt cáccác hằnghằng sốsố 88 bitbit vàovào bộbộ nhớnhớ chươngchương trìnhtrình
•• NếuNếu cócó mộtmột nhãnnhãn ñượcñược dùng,dùng, thìthì nhãnnhãn ñượcñược gángán ñịañịa chỉchỉ củacủa bytebyte ñầuñầutiên
SQUARES::
DB 0 0,, 1 1,, 4 4,, 9 9,, 16 16,, 25 25 MESSAGE
MESSAGE::
DB ‘Login ‘Login::’, ’, 0 0 Với
Với ví ví dụ dụ như như trên trên thì thì:: ðịa ðịa chỉ chỉ Nội Nội dung dung 100
100H H – – 00 00H H 101 101H H – – 01 01H H 102 102H H – – 04 04H H 103 103H H – – 09 09H H 104
104H H – – 10 10H H 105 105H H – – 19 19H H 106 106H H – – 4 4CH CH 107 107H H – – 6 6FH FH 108
108H H – – 67 67H H 109 109H H – – 69 69H H 10 10AH AH – – 6 6EH EH 10 10BH BH – – 3 3AH AH 10
10CH CH – – 00 00H H
Trang 29•• CúCú pháppháp:: [[labellabel]] DWDW expressionexpression[[,, expressionexpression][][,, expressionexpression][][,, ……]]
•• KhởiKhởi ñộngñộng vùngvùng nhớnhớ mãmã cùngcùng vớivới cáccác giágiá trịtrị củacủa từtừ (word)(word)
•• DùngDùng ñểñể ñặtñặt cáccác hằnghằng sốsố 1616 bitbit vàovào bộbộ nhớnhớ chươngchương trìnhtrình
•• NếuNếu cócó mộtmột nhãnnhãn ñượcñược dùng,dùng, thìthì nhãnnhãn ñượcñược gángán ñịañịa chỉchỉ củacủa bytebyte ñầuñầutiên
tiên
Ví Ví dụ dụ::
ORG 200 200H H ORG 200 200H H MESSAGE
MESSAGE ::
DW $ $,, ‘A’, ‘A’, 1234 1234H, H, 2 2,, ‘BC’ ‘BC’
Với Với ví ví dụ dụ như như trên trên thì thì:: ðịa ðịa chỉ chỉ Nội Nội dung dung 200
200H H – – 02 02H H 201 201H H – – 00 00H H 202 202H H – – 00 00H H 203 203H H – – 41 41H H 204
204H H – – 12 12H H 205 205H H – – 34 34H H 206 206H H – – 00 00H H 207 207H H – – 02 02H H 208
208H H – – 42 42H H 209 209H H – – 43 43H H
Trang 30Ý Ý nghĩa nghĩa của của việc việc lập lập trình trình có có cấu cấu trúc trúc::
•• GiảmGiảm ñộñộ phứcphức tạptạp củacủa việcviệc lậplập trìnhtrình bằngbằng hợphợp ngữngữ
•• CảiCải thiệnthiện tínhtính rõrõ ràngràng củacủa chươngchương trìnhtrình
•• DễDễ dàngdàng trongtrong việcviệc gỡgỡ rối,rối, sửasửa chữachữa vàvà thaythay ñổiñổi chươngchương trìnhtrình
•• GiúpGiúp chocho việcviệc lậplập trìnhtrình hợphợp ngữngữ ñạtñạt ñượcñược nhữngnhững thuậnthuận lợilợi rấtrất lớnlớn
Các Các cấu cấu trúc trúc thường thường dùng dùng::
•• CácCác phátphát biểubiểu (Statement)(Statement)
CẤU TRÚC CHƯƠNG TRÌNH
•• CácCác phátphát biểubiểu (Statement)(Statement)
•• CácCác vòngvòng lặplặp (Loop)(Loop)
•• CácCác lựalựa chọnchọn (Choice)(Choice)
Phương Phương pháp pháp thực thực hiện hiện::
•• LưuLưu ñồñồ (Flowchart)(Flowchart)
•• GiảGiả mãmã (Pseudo(Pseudo code)code)
•• HợpHợp ngữngữ (Assembly(Assembly language)language)
Trang 31•• KhốiKhối quyếtquyết ñịnhñịnh (so(so sánh,sánh, kiểmkiểm tra)tra)
•• ðườngðường ñiñi củacủa chươngchương trìnhtrình
•• HộpHộp xửxử lýlý
•• HộpHộp xửxử lýlý
•• KhốiKhối xuấtxuất // nhậpnhập
•• BắtBắt ñầuñầu // KếtKết thúcthúc chươngchương trìnhtrình
•• KếtKết nốinối quaqua trangtrang chươngchương trìnhtrình
•• XửXử lýlý tiềntiền ñịnhñịnh nghĩanghĩa (chương(chương trìnhtrình con)con)
Trang 32Ưu Ưu ñiểm ñiểm của của lập lập trình trình có có cấu cấu trúc trúc::
•• DễDễ dàngdàng vạchvạch rara chuỗichuỗi cáccác hoạthoạt ñộng,ñộng, thuậnthuận tiệntiện chocho việcviệc gỡgỡ rốirối
•• CácCác cấucấu trúctrúc ñãñã ñượcñược chuẩnchuẩn hóahóa
•• GiúpGiúp chocho việcviệc xâyxây dựngdựng cáccác chươngchương trìnhtrình concon ñượcñược thuậnthuận tiệntiện
•• MọiMọi chươngchương trìnhtrình ñềuñều cócó thểthể ñượcñược viếtviết bằngbằng cáchcách sửsử dụngdụng baba cấucấu trúctrúc
•• CácCác cấucấu trúctrúc giúpgiúp tata dễdễ dàngdàng mômô tảtả bằngbằng lưulưu ñồ,ñồ, giảngiản ñồñồ cúcú pháp,pháp, giảgiảmã,
mã, ……
CẤU TRÚC CHƯƠNG TRÌNH
•• TăngTăng năngnăng suấtsuất củacủa ngườingười viếtviết lậplập trìnhtrình dodo chươngchương trìnhtrình ñượcñược viếtviếtnhanh
nhanh hơnhơn
Khuyết Khuyết ñiểm ñiểm của của lập lập trình trình có có cấu cấu trúc trúc::
•• ChỉChỉ cócó mộtmột sốsố ngônngôn ngữngữ cấpcấp caocao (Pascal,(Pascal, C,C,……)) chấpchấp nhậnnhận trựctrực tiếptiếp cáccáccấu
cấu trúctrúc
•• ViệcViệc thựcthực thithi chươngchương trìnhtrình chậmchậm hơnhơn vàvà ñòiñòi hỏihỏi nhiềunhiều bộbộ nhớnhớ hơnhơn soso vớivớichương
chương trìnhtrình tươngtương ñươngñương nhưngnhưng khôngkhông cócó cấucấu trúctrúc
•• GiảiGiải quyếtquyết vấnvấn ñềñề gặpgặp khókhó khănkhăn nếunếu chỉchỉ sửsử dụngdụng baba cấucấu trúctrúc ñểñể lậplập trìnhtrình
•• CácCác cấucấu trúctrúc lồnglồng nhaunhau cũngcũng cócó khókhó khănkhăn kèmkèm theotheo
Trang 33CungCung cấpcấp chocho tata cơcơ chếchế cơcơ bảnbản ñểñể thựcthực hiệnhiện mộtmột côngcông việcviệc nàonào ñóñó
ThườngThường dùngdùng chocho việcviệc gángán mộtmột giágiá trịtrị chocho mộtmột biếnbiến hoặchoặc gọigọi mộtmộtchương
chương trìnhtrình concon
CóCó thểthể chỉchỉ làlà mộtmột phátphát biểubiểu hoặchoặc mộtmột nhómnhóm cáccác phátphát biểubiểu
Trang 34Giả Giả mã mã của của cấu cấu trúc trúc::