Tải bản đầy đủ (.pdf) (69 trang)

Bài giảng lý thuyết vi xử lý - Chương 3: Lập trình hợp ngữ cho 8051(tiếp theo) ppt

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 (676.3 KB, 69 trang )

ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
BÀI GIẢNG LÝ THUYẾTBÀI GIẢNG LÝ THUYẾT
VI XỬ LÝVI XỬ LÝ
TP. HỒ CHÍ MINHTP. HỒ CHÍ MINH
THÁNG 09THÁNG 09 20092009
VI XỬ LÝVI XỬ LÝ
GiáoGiáo viên: PHẠM QUANG TRÍviên: PHẠM QUANG TRÍ
ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 3CHƯƠNG 3
LẬP TRÌNH HỢP NGỮLẬP TRÌNH HỢP NGỮ
CHO 8051CHO 8051
 NgônNgôn ngữngữ lậplập trìnhtrình cấpcấp thấpthấp
 NgônNgôn ngữngữ lậplập trìnhtrình cấpcấp caocao
Ngôn ngữ lập trình cấp thấpNgôn ngữ lập trình cấp thấp
(Low(Low

level programming language)level programming language)
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp caoNgôn ngữ lập trình cấp cao
(High(High level programming language)level programming language)
(Low(Low

level programming language)level programming language)
 NgônNgôn ngữngữ lậplập trìnhtrình cấpcấp thấpthấp::
 NgônNgôn ngữngữ máymáy::
 NgônNgôn ngữngữ nhịnhị phânphân tựtự nhiênnhiên màmà CPUCPU cócó thểthể


nhậnnhận biếtbiết vàvà thựcthực hiệnhiện
 MỗiMỗi câucâu lệnhlệnh ñượcñược biểubiểu diễndiễn bằngbằng chuỗichuỗi cáccác
concon sốsố 00 vàvà 11
 KhóKhó ñọcñọc hiểuhiểu vàvà khókhó sửsử dụngdụng ñốiñối vớivới concon
ngườingười

HợpHợp
ngữngữ
::
Ngôn ngữ lập trình cấp thấpNgôn ngữ lập trình cấp thấp
(Low(Low

level programming language)level programming language)
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp caoNgôn ngữ lập trình cấp cao
(High(High level programming language)level programming language)
Hợp ngữHợp ngữ
(Assembly language)(Assembly language)
HợpHợp
ngữngữ
::
 ThayThay thếthế cáccác mãmã nhịnhị phânphân bằngbằng cáccác mãmã gợigợi
nhớnhớ giúpgiúp dễdễ nhớnhớ vàvà dễdễ lậplập trìnhtrình hơnhơn soso vớivới
ngônngôn ngữngữ máymáy
 MỗiMỗi câucâu lệnhlệnh tươngtương ứngứng vớivới mộtmột chỉchỉ lệnhlệnh
màmà CPUCPU cócó thểthể thựcthực hiệnhiện ñượcñược
 ðượcðược thiếtthiết kếkế chocho cáccác khảkhả năngnăng vàvà tậptập lệnhlệnh
cụcụ thểthể củacủa mộtmột loạiloại CPUCPU nhấtnhất ñịnhñịnh
 SoSo vớivới ngônngôn ngữngữ cấpcấp caocao:: chươngchương trìnhtrình viếtviết

khókhó vàvà nhiềunhiều lệnhlệnh hơnhơn
 SoSo vớivới ngônngôn ngữngữ cấpcấp caocao:: câucâu lệnhlệnh ngắnngắn
gọn,gọn, chươngchương trìnhtrình hoạthoạt ñộngñộng tốctốc ñộñộ nhanhnhanh
hơn,hơn, hiệuhiệu suấtsuất tốttốt vàvà chiếmchiếm ítít bộbộ nhớnhớ
(Low(Low

level programming language)level programming language)
Ngôn ngữ máyNgôn ngữ máy
(Machine language)(Machine language)
 NgônNgôn ngữngữ lậplập trìnhtrình cấpcấp caocao::
 SửSử dụngdụng cáccác từtừ vàvà phátphát biểubiểu gầngần giốnggiống vớivới ngônngôn
ngữngữ concon ngườingười
 MỗiMỗi câucâu lệnhlệnh tươngtương ứngứng vớivới nhiềunhiều chỉchỉ lệnhlệnh trongtrong
ngônngôn ngữngữ cấpcấp thấpthấp
 SoSo vớivới ngônngôn ngữngữ cấpcấp thấpthấp:: chươngchương trìnhtrình viếtviết dễ,dễ,
nhanhnhanh vàvà ítít lệnhlệnh hơnhơn
 SoSo vớivới ngônngôn ngữngữ cấpcấp thấpthấp:: câucâu lệnhlệnh dài,dài, chươngchương
trìnhtrình hoạthoạt ñộngñộng tốctốc ñộñộ chậmchậm hơn,hơn, hiệuhiệu suấtsuất
khôngkhông
caocao
vàvà
chiếmchiếm
nhiềunhiều
bộbộ
nhớnhớ

Ngôn ngữ lập trình cấp thấpNgôn ngữ lập trình cấp thấp
(Low(Low

level programming language)level programming language)

LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp caoNgôn ngữ lập trình cấp cao
(High(High level programming language)level programming language)
Hợp ngữHợp ngữ
(Assembly language)(Assembly language)
khôngkhông
caocao
vàvà
chiếmchiếm
nhiềunhiều
bộbộ
nhớnhớ

(Low(Low

level programming language)level programming language)
Ngôn ngữ máyNgôn ngữ máy
(Machine language)(Machine language)
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp caoNgôn ngữ lập trình cấp cao
(High(High level programming language)level programming language)
CPU thực thi chương trìnhCPU thực thi chương trình
Các công ñoạn ñể thực thi một chương trìnhCác công ñoạn ñể thực thi một chương trình
Ngôn ngữ lập trình cấp thấpNgôn ngữ lập trình cấp thấp
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
Hợp ngữHợp ngữ
(Assembly language)(Assembly language)

Ngôn ngữ lập trình cấp thấpNgô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ìnhCPU thực thi chương trình
Các công ñoạn ñể thực thi một chương trìnhCác công ñoạn ñể thực thi một chương trình
Ngôn ngữ lập trình cấp thấpNgôn ngữ lập trình cấp thấp
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
Ngôn ngữ lập trình cấp caoNgôn ngữ lập trình cấp cao
(High(High level programming language)level programming language)
Hợp ngữHợp ngữ
(Assembly language)(Assembly language)
Ngôn ngữ lập trình cấp thấpNgôn ngữ lập trình cấp thấp
(Low(Low level programming language)level programming language)
Ngôn ngữ máyNgôn ngữ máy
(Machine language)(Machine language)
CPU thực thi chương trìnhCPU thực thi chương trình
Các công ñoạn ñể thực thi một chương trìnhCác công ñoạn ñể thực thi một chương trình
 KhuôngKhuông dạngdạng củacủa mộtmột dòngdòng lệnhlệnh::
[[LabelLabel::]] MnemonicMnemonic [[OperandOperand][][,Operand,Operand][][,Operand,Operand]] [[CommentComment]]
 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ụ::
MAINMAIN::
MOVMOV A,A, ##2020HH
LOOPLOOP
::
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
KHUÔNG DẠNG CỦA CHƯƠNG TRÌNHKHUÔNG DẠNG CỦA CHƯƠNG TRÌNH
LOOPLOOP
::

ADDADD A,A, ##0101HH
CJNECJNE A,A, ##3535H,H, LOOPLOOP
SJMPSJMP $$
 LưuLưu ýý vềvề nhãnnhãn::
 DoDo ngườingười lậplập trìnhtrình tựtự ñặtñặt (không(không ñượcñược trùngtrùng vớivới từtừ khoá,khoá, mãmã gợigợi nhớ,nhớ,
chỉchỉ dẫn,dẫn, toántoán tửtử hoặchoặc kýký hiệuhiệu tiềntiền ñịnhñịnh nghĩa)nghĩa)
 BắtBắt ñầuñầu bằngbằng kýký tựtự chữ,chữ, dấudấu chấmchấm hỏihỏi (?),(?), dấudấu gạchgạch dướidưới (_)(_)
 DàiDài tốitối ñaña 3131 kýký tựtự
 KếtKết thúcthúc bằngbằng dấudấu haihai chấmchấm ((::))
 KýKý hiệuhiệu $$ dùngdùng ñểñể thamtham chiếuchiếu ñếnñến vịvị trítrí hiệnhiện tạitại củacủa dòngdòng lệnhlệnh
 KhuôngKhuông dạngdạng củacủa mộtmột dòngdòng lệnhlệnh::
[[LabelLabel::]] MnemonicMnemonic [[OperandOperand][][,Operand,Operand][][,Operand,Operand]] [[CommentComment]]
•• 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ủa
chươngchương trìnhtrình dịchdịch hợphợp ngữngữ
 VíVí dụdụ::
ORGORG 00000000HH
PARPAR EQUEQU 100100
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
KHUÔNG DẠNG CỦA CHƯƠNG TRÌNHKHUÔNG DẠNG CỦA CHƯƠNG TRÌNH
ACALLACALL BBBBBB
CJNECJNE A,A, ##3535H,H, LOOPLOOP
JNBJNB PP33 11,, TEST_TEST_11
 KhuôngKhuông dạngdạng củacủa mộtmột dòngdòng lệnhlệnh::
[[LabelLabel::]] MnemonicMnemonic [[OperandOperand][][,Operand,Operand][][,Operand,Operand]] [[CommentComment]]
•• 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ụ::
RETRET –– khôngkhông toántoán hạng,hạng,
INCINC AA –– mộtmột toántoán hạng,hạng,
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051

KHUÔNG DẠNG CỦA CHƯƠNG TRÌNHKHUÔNG DẠNG CỦA CHƯƠNG TRÌNH
ADDADD AA,, RR00 –– haihai toántoán hạng,hạng,
CJNECJNE AA,, ##1212HH,, ABCABC –– baba toántoán hạnghạng
 LưuLưu ýý vềvề toántoán hạnghạng::
 NếuNếu lệnhlệnh cócó nhiềunhiều toántoán hạnghạng thìthì cáccác toántoán hạnghạng nàynày cáchcách nhaunhau bằngbằng dấudấu
phẩyphẩy (,)(,)
 TrongTrong cáccác lệnhlệnh cócó 22 toántoán hạnghạng thìthì toántoán hạnghạng ñầuñầu tiêntiên ñượcñược gọigọi làlà toántoán
hnghng ñíchñích ((DestinationDestination)),, toántoán hạnghạng thứthứ haihai ñượcñược gọigọi làlà toántoán hnghng
ngunngun ((SourceSource))
 KhuôngKhuông dạngdạng củacủa mộtmột dòngdòng lệnhlệnh::
[[LabelLabel::]] MnemonicMnemonic [[OperandOperand][][,Operand,Operand][][,Operand,Operand]] [[CommentComment]]
•• 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ụ::
SJMPSJMP AAAAAA ;; LenhLenh nhaynhay khongkhong dieudieu kienkien denden AAAAAA
ACALLACALL BBBBBB ;; LenhLenh goigoi chuongchuong trinhtrinh concon BBBBBB
CJNECJNE A,A, ##3535H,H, LOOPLOOP ;; LenhLenh soso sanhsanh
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
KHUÔNG DẠNG CỦA CHƯƠNG TRÌNHKHUÔNG DẠNG CỦA CHƯƠNG TRÌNH
JNBJNB PP33 11,, TEST_TEST_11 ;; LenhLenh kiemkiem tratra giagia tritri bitbit PP33 11
 LưuLưu ýý vềvề chúchú thíchthích::
 BắtBắt ñầuñầu bằngbằng dấudấu chấmchấm phẩyphẩy ((;;))
 CácCác chúchú thíchthích phảiphải nằmnằm trêntrên cùngcùng mộtmột dòngdòng
 CácCác chúchú thíchthích nếunếu nằmnằm trêntrên nhiềunhiều dòngdòng thìthì mỗimỗi dòngdòng cũngcũng phảiphải bắtbắt ñầuñầu
bằngbằng dấudấu chấmchấm phẩyphẩy ((;;))
 CáchCách biểubiểu diễndiễn cáccác giágiá trịtrị vàvà hằnghằng sốsố::
•• DùngDùng mộtmột cáchcách tườngtường minhminh::
 VíVí dụdụ::
MOVMOV 2020H,H, EE00HH
•• DùngDùng kýký hiệuhiệu tiềntiền ñịnhñịnh nghĩanghĩa::
 VíVí dụdụ::

MOVMOV 2020H,H, AA
SETBSETB
ACCACC

77
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
SETBSETB
ACCACC

77
•• DùngDùng mộtmột biểubiểu thứcthức::
 VíVí dụdụ::
MOVMOV A,A, ##2525 MODMOD 77
MOVMOV A,A, #HIGH(#HIGH(12341234H)H)
MOVMOV A,A, ##1010 ++ 1010HH
 CơCơ sốsố chocho cáccác hằnghằ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
 VíVí dụdụ::
MOVMOV A,A, ##1001110110011101BB
•• SốSố bátbát phânphân (Octal)(Octal):: phảiphải kèmkèm theotheo kýký hiệuhiệu OO hoặchoặc QQ
 VíVí dụdụ::
MOVMOV A,A, ##235235OO
MOVMOV
A,A,
##
235235
QQ
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC

MOVMOV
A,A,
##
235235
QQ
•• SốSố thậpthập phânphân (Decimal)(Decimal):: phảiphải kèmkèm theotheo kýký hiệuhiệu DD hoặchoặc khôngkhông cócó
 VíVí dụdụ::
MOVMOV A,A, ##157157DD
MOVMOV A,A, ##157157
•• 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ụ::
MOVMOV A,A, ##99DDHH
 CơCơ sốsố chocho cáccác hằnghằng sốsố::
•• LuLu ýý:: CácCác giágiá trịtrị tứctức thờithời nếunếu cócó thànhthành phầnphần chữchữ ((A,A, B,B, C,C, ……,, FF)) ñứngñứng
ñầuñầu thìthì cầncần phảiphải thêmthêm ss 00 vàovào trướctrước thànhthành phầnphần chữchữ vàvà sausau kýký hiệuhiệu “#”“#”
 VíVí dụdụ::
MOV A, #BHMOV A, #BH ;Thiếu số 0 ;Thiếu số 0 →→ gây lỗi khi biên dịch.gây lỗi khi biên dịch.
MOV A, #MOV A, #00BHBH ;Thêm số 0 ;Thêm số 0 →→ ñúng.ñúng.
MOV A, #F9HMOV A, #F9H ;Thiếu số 0 ;Thiếu số 0 →→ gây lỗi khi biên dịch.gây lỗi khi biên dịch.
MOV A, #MOV A, #
00
F9HF9H
;Thêm số 0 ;Thêm số 0
→→
ñúng.ñúng.
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
MOV A, #MOV A, #
00
F9HF9H

;Thêm số 0 ;Thêm số 0
→→
ñúng.ñúng.
 CácCác chuỗichuỗ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án
hạnghạng
•• CácCác kýký tựtự ñượcñược biếnbiến ñổiñổi thànhthành mãmã nhịnhị phânphân (chuẩn(chuẩn ASCII)ASCII) khikhi thựcthực hiệnhiện
 VíVí dụdụ::
CJNECJNE A,A, ## ’b’’b’,, LOOPLOOP ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ CJNECJNE A,A, ##6262HH,, LOOPLOOP
SUBBSUBB
A,A,
##
’B’’B’

⇔⇔
⇔⇔
⇔⇔

SUBBSUBB
A,A,
##
4242
HH
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC

SUBBSUBB
A,A,
##
’B’’B’

⇔⇔
⇔⇔
⇔⇔

SUBBSUBB
A,A,
##
4242
HH
MOVMOV A,A, ## ‘‘22’’ ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##3232HH
MOVMOV DPTR,DPTR, ## ‘AB’‘AB’ ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV DPTR,DPTR, ##41424142HH
MOVMOV A,A, ## ‘AB’‘AB’ ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ KhôngKhông hợphợp lệlệ
 CácCác toántoán tửtử sốsố họchọc::

•• CộngCộng ++
•• TrừTrừ
•• NhânNhân **
•• ChiaChia // (Phép(Phép chiachia lấylấy thươngthương số)số)
•• ModuloModulo MODMOD (Phép(Phép chiachia lấylấy sốsố dư)dư)
 VíVí dụdụ::
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
MOVMOV A,A, ##1010 ++ 1010HH ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##11AHAH
MOVMOV A,A, ##1010HH 1010 ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##0606HH
MOVMOV A,A, ##2020 ** 22 ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##2828HH
MOVMOV A,A, ##2525 // 77 ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##0303HH
MOVMOV A,A, ##2525 MODMOD 77 ⇔
⇔⇔

⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##0404HH
 CácCác toántoán tửtử logiclogic::
•• 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ụ::
MOVMOV A,A, ## ‘‘99’’ ANDAND 00FHFH ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##0909HH
MOVMOV A,A, ## ‘‘99’’ OROR 00FHFH ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##33FHFH
MOVMOV A,A, ## ‘‘99’’ XORXOR 00FHFH ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##3636HH
MOVMOV
A,A,
##
NOTNOT
55
CHCH

⇔⇔

⇔⇔
⇔⇔

MOVMOV
A,A,
##
00
AA
33
HH
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
MOVMOV
A,A,
##
NOTNOT
55
CHCH

⇔⇔
⇔⇔
⇔⇔

MOVMOV
A,A,
##
00
AA
33
HH

MOVMOV A,A, ##NOTNOT 33 ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##00FCHFCH
 CácCác toántoán tửtử ñặcñặc biệtbiệt::
•• DịchDịch phảiphải SHRSHR (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 SHLSHL (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 HIGHHIGH
•• LấyLấy bytebyte thấpthấp LOWLOW
•• ðượcðược ñánhñánh giágiá trướctrước ()()
 VíVí dụdụ::
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
MOVMOV A,A, ##0808HH SHLSHL 11 ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##1010HH
MOVMOV A,A, ##0808HH SHRSHR 11 ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##0404HH
MOVMOV A,A, ##HIGHHIGH 12341234HH ⇔
⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##1212HH
MOVMOV A,A, ##LOWLOW 12341234HH ⇔

⇔⇔
⇔⇔
⇔⇔
⇔ MOVMOV A,A, ##3434HH
 CácCác toántoán tửtử quanquan 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))
•• BằngBằng EQEQ ==
•• KhôngKhông bằngbằng NENE <><>
•• NhỏNhỏ hơnhơn LTLT <<
•• NhỏNhỏ hơnhơn hoặchoặc bằngbằng LELE <=<=
••
LớnLớn
hơnhơn
GTGT
>>
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC
••
LớnLớn
hơnhơn
GTGT
>>
•• LớnLớn hơnhơn hoặchoặc bằngbằng GEGE >=>=
 VíVí dụdụ::
MOVMOV A,A, ##55 == 55
MOVMOV A,A, ##55 NENE 44
MOVMOV A,A, ## ’X’’X’ LTLT ‘Z’‘Z’
MOVMOV A,A, ## ’X’’X’ >=>= ‘Z’‘Z’
MOVMOV A,A, ##100100 GEGE 5050
CácCác lệnhlệnh trêntrên ñềuñều trảtrả vềvề kếtkết quảquả ñúngñúng nênnên sẽsẽ tươngtương ñươngñương vớivới lệnhlệnh

MOVMOV A,#0FFHA,#0FFH
 MứcMức ưuưu tiêntiên củacủa cáccác toántoán tửtử::
•• ThứThứ tựtự ưuưu tiêntiên củacủa cáccác toántoán tửtử từtừ caocao xuốngxuống thấpthấp::
 (( ))
 HIGHHIGH LOWLOW
 ** // MODMOD SHLSHL SHRSHR
 ++
 EQEQ NENE LTLT LELE GTGT GEGE == <><> <=<= >=>=

NOTNOT
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨCCÁC QUI LUẬT CHO VIỆC ðÁNH GIÁ BIỂU THỨC

NOTNOT
 ANDAND
 OROR XORXOR
•• KhiKhi cáccác toántoán tửtử cócó cùngcùng mứcmức ưuưu tiêntiên thìthì chúngchúng ñượcñược ñánhñánh giágiá theotheo thứthứ
tựtự từtừ tráitrái sangsang phảiphải
 VíVí dụdụ::
HIGHHIGH (( ‘A’‘A’ SHLSHL 88)) KếtKết quảquả làlà 4141HH
HIGHHIGH ‘A’‘A’ SHLSHL 88 KếtKết quảquả làlà 0000HH
NOTNOT ‘A’‘A’ –– 11 KếtKết quảquả làlà BFHBFH
‘A’‘A’ OROR ‘A’‘A’ SHLSHL 88 KếtKết quảquả làlà 4141HH
 ChỉChỉ dẫndẫn ñiềuñiều khiểnkhiển trạngtrạng tháithái::
•• ORG,ORG, END,END, USINGUSING
 ChỉChỉ dẫndẫn ñịnhñịnh nghĩanghĩa kýký hiệuhiệu::
•• SEGMENT,SEGMENT, EQU,EQU, SET,SET, DATA,DATA, IDATA,IDATA, XDATA,XDATA, BIT,BIT, CODECODE
 ChỉChỉ dẫndẫn dànhdành trướctrước vùngvùng nhớnhớ // khởikhởi ñộngñộng vùngvùng nhớnhớ::
•• DS,DS, DBIT,DBIT, DB,DB, DWDW


ChỉChỉ
dẫndẫn
liênliên
kếtkết
chươngchương
trìnhtrình
::
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC CHỈ DẪN TRONG LẬP TRÌNHCÁC CHỈ DẪN TRONG LẬP TRÌNH

ChỉChỉ
dẫndẫn
liênliên
kếtkết
chươngchương
trìnhtrình
::
•• PUBLIC,PUBLIC, EXTRN,EXTRN, NAMENAME
 ChỉChỉ dẫndẫn lựalựa chọnchọn phânphân ñoạnñoạn::
•• PSEG,PSEG, CSEG,CSEG, DSEG,DSEG, ISEG,ISEG, BSEG,BSEG, XSEGXSEG
 ChỉChỉ dẫndẫn ñiềuñiều khiểnkhiển trạngtrạng tháithái::
•• ORGORG,, ENDEND,, USINGUSING
 ChỉChỉ dẫndẫn ñịnhñịnh nghĩanghĩa kýký hiệuhiệu::
•• SEGMENT,SEGMENT, EQUEQU,, SET,SET, DATA,DATA, IDATA,IDATA, XDATA,XDATA, BITBIT,, CODECODE
 ChỉChỉ dẫndẫn dànhdành trướctrước vùngvùng nhớnhớ // khởikhởi ñộngñộng vùngvùng nhớnhớ::
•• DS,DS, DBIT,DBIT, DBDB,, DWDW

ChỉChỉ
dẫndẫn
liênliên

kếtkết
chươngchương
trìnhtrình
::
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC CHỈ DẪN TRONG LẬP TRÌNHCÁC CHỈ DẪN TRONG LẬP TRÌNH

ChỉChỉ
dẫndẫn
liênliên
kếtkết
chươngchương
trìnhtrình
::
•• PUBLIC,PUBLIC, EXTRN,EXTRN, NAMENAME
 ChỉChỉ dẫndẫn lựalựa chọnchọn phânphân ñoạnñoạn::
•• PSEG,PSEG, CSEG,CSEG, DSEG,DSEG, ISEG,ISEG, BSEG,BSEG, XSEGXSEG
 ChỉChỉ dẫndẫn ORGORG::
•• 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
 VíVí dụdụ::
ORGORG 100100HH ;; ThiếtThiết lậplập (PC)(PC) == 100100HH chocho lệnhlệnh theotheo sausau
 ChỉChỉ dẫndẫn ENDEND::
••
CúCú
pháppháp
::
ENDEND
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC CHỈ DẪN TRONG LẬP TRÌNHCÁC CHỈ DẪN TRONG LẬP TRÌNH

••
CúCú
pháppháp
::
ENDEND
•• 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ệ
 ChỉChỉ dẫndẫn USINGUSING::
•• 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 thanhthanh
ghighi RR00 –– RR77
•• ChỉChỉ dẫndẫn nàynày khôngkhông cócó táctác dụngdụng chuyểnchuyển ñổiñổi cáccác dãydãy thanhthanh ghighi tíchtích cựccực
 VíVí dụdụ:: LưuLưu giágiá trịtrị trongtrong thanhthanh ghighi RR77 vàovào ngănngăn xếpxếp
TrườngTrường
hợphợp
khôngkhông
dùngdùng
USINGUSING
::
LẬP TRÌNH HỢP NGỮ CHO 8051 LẬP TRÌNH HỢP NGỮ CHO 8051
CÁC CHỈ DẪN TRONG LẬP TRÌNHCÁC CHỈ DẪN TRONG LẬP TRÌNH
TrườngTrường
hợphợp
khôngkhông
dùngdùng
USINGUSING
::
NếuNếu dãydãy thanhthanh ghighi tíchtích cựccực làlà DãyDãy 33,, tata dùngdùng lệnhlệnh:: PUSHPUSH 11FHFH
NếuNếu dãydãy thanhthanh ghighi tíchtích cựccực làlà DãyDãy 11,, tata dùngdùng lệnhlệnh:: PUSHPUSH 00FHFH

TrườngTrường hợphợp dùngdùng USINGUSING::
NếuNếu dãydãy thanhthanh ghighi tíchtích cựccực làlà DãyDãy 33,, tata dùngdùng lệnhlệnh::
USINGUSING 33
PUSHPUSH ARAR77
NếuNếu dãydãy thanhthanh ghighi tíchtích cựccực làlà DãyDãy 11,, tata dùngdùng lệnhlệnh::
USINGUSING 11
PUSHPUSH ARAR77

×