Hệ thống máyvi tính (Microcomputer) cơ bản bao gồm các thành phần sau:
+ Đơn vị hệ thống (System Unit)
+ Bànphím, chuột.
+ Mànhiển thị (Display Screen)
+ Cácổ đĩa (Disk Drives)
-Đơn vị hệ thống th-ờng đ-ợc coilà Máytính (Computer). Nó chứa các bản mạchcủa
hệ thống máytính.
- Bàn phím, chuột, màn hiển thị th-ờng đ-ợc gọi là thiết bị vào, ra (I/O Devices).
Chúng thực hiện các chức năng nhập và xuất của hệ thống.
-Mạchtích hợp (Intergrated Circuit"IC") đ-ợc sử dụng để lắp ráp thành các mạch điện
tử của máy tính. Mỗi chip IC có thể chứa hàng ngàn transistors. Các IC th-ờng đ-ợc
gọi là các mạchđiện tử số bởi vì chúng xử lý các mức tín hiệu điện rời rạc (Hiệu điện
thế cao, thấp). Chúng ta sử dụng ký hiệu "0" và "1" để biểu diễn các trạng thái thấp và
caocủa hiệu điện thế. Các ký hiệu trên th-ờng đ-ợc biết nh- là các chữ số nhị phân
(Binary Digit hoặc Bit).Cácthông tin đ-ợc máy tính xử lý đều biểu thị d-ới dạng các
dãy số 0 và 1 và đ-ợc gọi là dãy Bit(Bit String).
50 trang |
Chia sẻ: banmai | Lượt xem: 1935 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Kiến trúc may tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
o Byte cao cña AX (AH).
+ LÖnh XCHG: §•îc sö dông ®Ó tr¸o ®æi gi¸ trÞ gi÷a 2 thanh ghi, gi÷a
thanh ghi vµ bé nhí.
Có ph¸p lÖnh:
XCHG Destination, Source
Tr¸o ®æi §Ých ®Õn , Nguån
VÝ dô:
XCHG AX,BX
This document is created with the unregistered version of Document2PDF Pilot.
§æi vÞ trÝ c¸c gi¸ trÞ cña AX vµ BX lÉn nhau, AX sÏ l•u tr÷
gi¸ trÞ cña BX vµ ng•îc l¹i.
XCHG AX,Word01
Tr¸o ®æi gi¸ trÞ cña AX vµ gi¸ trÞ t¹i vÞ trÝ bé nhí Word01.
+ §iÒu cÊm trong khi sö dông 2 lÖnh trªn:
V× c¸c lý do vÒ kü thuËt, cã mét sè c¸c quy ®Þnh mµ ng•êi lËp
tr×nh ph¶i tu©n theo. VÝ dô minh ho¹:
Mov Word01,Word02 ; Kh«ng hîp lÖ
Ph¸t biÓu lÖnh trªn lµ kh«ng hîp lÖ, kh«ng ®•îc phÐp di chuyÓn
d÷ liÖu trùc tiÕp tõ vÞ trÝ bé nhí nµy sang vÞ trÝ bé nhí kh¸c. §Ó cã thÓ
lµm ®•îc viÖc trªn ta ph¶i thay ®æi c©u lÖnh nh• sau:
Mov AX,Word02
Mov Word02,AX
C¸c kÕt hîp hîp lÖ gi÷a c¸c to¸n h¹ng trong 2 lÖnh trªn:
Destination Operand
Source Operand General Register Segment Register Memory Location Constant
General Reg Yes Yes Yes No
Segment Reg Yes No Yes No
Mem Location Yes Yes No No
Constant Yes No Yes No
Destination Operand
Source Operand General Register Memory Location
General Register Yes Yes
Memory Location Yes No
- LÖnh ADD, SUB, INC vµ DEC
+ LÖnh ADD vµ lÖnh SUB ®•îc sö dông ®Ó thùc hiÖn c¸c phÐp tÝnh
céng, trõ gi¸ trÞ gi÷a 2 thanh ghi, Gi÷a thanh ghi vµ bé nhí hoÆc ®Ó céng (trõ)
mét sè vµo (ra) mét thanh ghi hoÆc bé nhí.
Có ph¸p lÖnh:
ADD Destination, Source
SUB Destination, Source
VÝ dô:
ADD Word01,AX
Céng gi¸ trÞ cã trong AX vµo Word01. KÕt qu¶ l•u trong Word01.
SUB AX,DX
Gi¸ trÞ cña thanh ghi DX sÏ bÞ trõ ®i gi¸ trÞ cña thanh ghi AX, KÕt
qu¶ ®•îc l•u trong thanh ghi AX, Gi¸ trÞ cña thanh ghi DX ®•îc gi÷
nguyªn.
ADD BL,5
Céng 5 vµo gi¸ trÞ ®· cã s½n trong thanh ghi BL.
+ Quy t¾c hîp lÖ:
Destination Operand
Source Operand General Register Memory Location
General Register Yes Yes
Memory Location Yes No
This document is created with the unregistered version of Document2PDF Pilot.
Constant Yes Yes
Céng hoÆc trõ trùc tiÕp gi÷a 2 vÞ trÝ cña bé nhí lµ kh«ng hîp lÖ.
VÝ dô:
ADD Byte01,Byte02 ;Kh«ng hîp lÖ
Gi¶i ph¸p
Mov AL,Byte02
Add Byte01,AL
+ LÖnh INC vµ lÖnh DEC ®•îc sö dông ®Ó céng thªm 1 hoÆc bít ®i 1 tõ
thanh ghi hoÆc t¹i mét vÞ trÝ « nhí nµo ®ã.
Có ph¸p lÖnh:
INC Destination
DEC Destination
VÝ dô:
Inc Word01
Céng thªm mét vµo Word01.
Dec Byte01
Trõ Byte01 ®i 1.
- LÖnh NEG:
LÖnh NEG ®•îc sö dông ®Ó thay ®æi dÊu cña gi¸ trÞ.
Có ph¸p lÖnh:
NEG Destination
VÝ dô:
Neg BX
ChuyÓn ®æi gi¸ trÞ cña BX thµnh sè ©m.
- TÝnh t•¬ng thÝch gi÷a c¸c to¸n h¹ng.
C¸c to¸n hang trong mét c©u lÖnh 2 to¸n h¹ng ph¶i cïng mét kiÓu, c¶
hai ®Òu ph¶i lµ kiÓu Byte hoÆc kiÓu Word
VÝ dô:
Mov AX,Byte01
kh«ng hîp lÖ.
Tuy nhiªn ch•¬ng tr×nh cã thÓ chÊp nhËn kiÓu sau:
Mov AL, 'A' ;hoÆc
Mov AX, 'A'
5- M« t¶ lÖnh víi ng«n ng÷
Ph¸t biÓu DÞch lÖnh M« t¶
B = A Mov AX,A Di chuyÓn A vµo thanh ghi AX
Mov AX,5 Di chuyÓn 5 vµo thanh ghi AX
Sub AX,A AX chøa gi¸ trÞ 5 - A
Mov A,AX Di chuyÓn gi¸ trÞ trªn vµo A
Neg A A = -A
Add A,5 A = 5 - A
Mov AX,B AX nhËn gi¸ trÞ B
Sub AX,A AX nhËn gi¸ trÞ B - A
Sub AX,A AX nhËn gi¸ trÞ B - 2*A
Mov A,AX Di chuyÓn kÕt qu¶ vµo A
6- CÊu tróc ch•¬ng tr×nh.
This document is created with the unregistered version of Document2PDF Pilot.
Chóng ta biÕt r»ng, mét ch•¬ng tr×nh ng«n ng÷ m¸y tÝnh bao gåm M· ch•¬ng
tr×nh, d÷ liÖu vµ ng¨n xÕp. Mçi mét thµnh phÇn ®Òu chiÕm mét phÇn trong mét ®o¹n nµo
®ã cua bé nhí m¸y tÝnh. Ch•¬ng tr×nh cña ng«n ng÷ assembly còng ®•îc tæ chøc t•¬ng
tù. M· ch•¬ng tr×nh, d÷ liÖu vµ ng¨n xÕp ch•¬ng tr×nh cã cÊu tróc nh• mét ®o¹n ch•¬ng
tr×nh. Mçi mét thµnh phÇn ®Òu ®•îc biªn dÞch vµ n¹p vµo tõng ®o¹n cña bé nhí.
- Tæ chøc m« h×nh bé nhí:
KÝch th•íc cña m· ch•¬ng tr×nh vµ d÷ liÖu ch•¬ng tr×nh cã thÓ ®•îc x¸c
®Þnh quan m« h×nh tæ chøc bé nhí th«ng qua viÖc sö dông tõ kho¸
".MODEL".
Có ph¸p:
.Model Memory_model
C¸c c¸ch tæ chøc m« h×nh bé nhí th•êng dïng lµ:
Small, Medium,Compact vµ Large theo nh• m« t¶ trong b¶ng sau:
Model M« t¶
Small M· ch•¬ng tr×nh (Code) n»m trong mét ®o¹n (Segment), D÷ liÖu (Data) n»m trong
mét ®o¹n kh¸c
Medium M· ch•¬ng tr×nh (Code) n»m trong nhiÒu ®o¹n, D÷ liÖu (Data) n»m trong mét ®o¹n
kh¸c.
Compact M· ch•¬ng tr×nh (Code) n»m trong mét ®o¹n (Segment), D÷ liÖu (Data) n»m trong
nhiÒu ®o¹n kh¸c.
Large M· ch•¬ng tr×nh (Code) n»m trong nhiÒu ®o¹n (Segment), D÷ liÖu (Data) n»m
trong nhiÒu ®o¹n kh¸c. Nh•ng kh«ng cã m¶ng nµo lín h¬n 64 KB.
Huge M· ch•¬ng tr×nh (Code) n»m trong nhiÒu ®o¹n (Segment), D÷ liÖu (Data) n»m
trong nhiÒu ®o¹n kh¸c. Nh•ng cã m¶ng cã thÓ lín h¬n 64 KB.
- §o¹n d÷ liÖu (Data Segment):
§o¹n d÷ liÖu cña ch•¬ng tr×nh chøa tÊt c¶ c¸c khai b¸o biÕn ch•¬ng
tr×nh. §Ó khai b¸o ®o¹n d÷ liÖu trong ch•¬ng tr×nh, ta dung tõ kho¸ ".DATA".
VÝ dô minh ho¹:
.DATA
Word01 DW 2
Word02 DW 5
MSG DB 'The First Message'
Mask EQU 10010010b
- §o¹n ng¨n xÕp (Stack Segment)
Môc ®Ých cña viÖc khai b¸o Stack Segment trong ch•¬ng tr×nh lµ ®Ó tæ
chøc mét khèi bé nhí. Có ph¸p khai b¸o nh• sau:
.STACK Size
Size lµ kÝch th•íc cña Stack tÝnh theo Byte.
VÝ dô:
.STACK 100h
Giíi h¹n 100h byte cho vïng stack.
- §o¹n m· (Code Segment).
§o¹n nµy chøa c¸c lÖnh cña ch•¬ng tr×nh (Program Instructions).
Có ph¸p khai b¸o:
.CODE Name
Chó ý: Kh«ng cÇn ph¶i khai b¸o tªn trong Model Small.
Trong ®o¹n nµy, c¸c lÖnh cã thÓ ®•îc tæ chøc thµnh c¸c ®o¹n nhá gäi lµ
Procedure. C¸ch ®Þnh nghÜa Procedure nh• sau
This document is created with the unregistered version of Document2PDF Pilot.
Name PROC ; B¾t ®Çu Procedure
; M· ch•¬ng tr×nh
Name ENDP ; KÕt thóc Procedure
VÝ dô vÒ khai b¸o ®Þnh nghÜa Code Segment
.CODE
MAIN PROC ; B¾t ®Çu Procedure
; LÖnh chÝnh cña Procedure
MAIN ENDP ; KÕt thóc Procedure
; Procedure kh¸c
7- GhÐp nèi ch•¬ng tr×nh
VÝ dô sau m« t¶ c¸ch tæ chøc mét ch•¬ng tr×nh:
.Model Small
.Stack 100h
.Data
; Khai b¸o d÷ liÖu
.Code
Main Proc
; C¸c c©u lÖnh
Main Endp
; C¸c procedure kh¸c
End Main
Dßng cuèi cïng cña ch•¬ng tr×nh ph¶i cã tõ kho¸ END theo sau tªn cña
Procedure.
8- ViÕt ch•¬ng tr×nh vµ ch¹y ch•¬ng tr×nh.
- C¸c c©u lÖnh vµo ra.
Ta ®· biÕt, CPU muèn liªn l¹c ®•îc víi c¸c thiÕt bÞ ngo¹i vi th«ng qua
c¸c thanh ghi vµo ra ®•îc gäi lµ c¸c cæng vµo ra. Cã hai lÖnh IN vµ OUT cho
phÐp ta truy xuÊt trùc tiÕp c¸c cæng. C¸c c©u lÖnh nµy ®•îc sö dông cÇn thiÕt
khi cÇn truy xuÊt c¸c cæng mét c¸ch nhanh chãng nh• c¸c ch•¬ng tr×nh
Game. Tuy nhiªn, hÇu hÕt c¸c ch•¬ng tr×nh øng dông kh«ng sö dông c¸c lÖnh
vµo ra bëi v× c¸c cæng vµo ra khac biÖt nhau gi÷a c¸c hÖ thèng m¸y tÝnh, tèt
nhÊt lµ sö dông c¸c ch•¬ng tr×nh con cña nhµ s¶n xuÊt.
Cã 2 kiÓu tr×nh phôc vô c¸c c«ng t¸c vµo ra, ®ã lµ BIOS vµ DOS.
Ch•¬ng tr×nh BIOS ®•îc chøa trong BIOS ROM vµ cã thÓ liªn l¹c trùc tiÕp víi
c¸c cæng vµo ra. C¸c tiÓu tr×nh DOS cã thÓ thùc hiÖn ®•îc rÊt nhiÒu c¸c c«ng
viÖc phøc t¹p vÝ dô nh• in chuçi ký tù, mÆc dï c¸c c«ng viÖc ®Òu th«ng qua
c¸c tiÓu tr×nh cña BIOS.
- LÖnh INT
LÖnh INT (interrupt) ®•îc sö dông ®Ó gi¶i quyÕt c¸c c«ng viÖc liªn quan
®Õn c¸c tiÓu tr×nh DOS vµ BIOS
Có ph¸p:
INT Interrupt_Number
Interrupt_Numberlµ sè hiÖu ®Ó x¸c ®Þnh ng¾t. VÝ dô Int 16h liªn quan
®Õn tiÓu tr×nh ®iÒu khiÓn bµn phÝm.
+ Int 21h: §•îc sö dông cho rÊt nhiÒu chøc n¨ng cña DOS. Mét chøc
n¨ng ®Æc biÖt lµ thay ®æi c¸c sè hiÖu chøc n¨ng cña thanh ghi AH. C¸c
chøc n¨ng nh• sau:
This document is created with the unregistered version of Document2PDF Pilot.
Sè hiÖu chøc n¨ng TiÓu tr×nh
1 NhËp 1 phÝm
2 XuÊt mét ký tù ®¬n
3 XuÊt chuçi ký tù
Chøc n¨ng Int21h nhËp mét gi¸ trÞ vµo mét thanh ghi nµo ®ã vµ tr¶ kÕt
qu¶ ra thanh ghi kh¸c. D•íi ®©y lµ m« t¶ c¸c chøc n¨ng:
Chøc n¨ng 01
NhËp mét phÝm
Input AH = 1
Output AL = m· ASCII nÕu mét phÝm ®•îc nhÊn
= 0 NÕu kh«ng cã phÝm ®•îc nhÊn.
§Ó gi¶i quyÕt vÊn ®Ò, viÕt c¸c lÖnh nh• sau:
Mov AH,1 ; NhËp chøc n¨ng phÝm
Int 21h ; NhËp m· ASCII vµo AL
Bé xö lý sÏ chê cho ®Õn khi ng•êi dïng nhÊn mét phÝm. NÕu mét
phÝm ®•îc nhÊn, thanh ghi AL sÏ nhËn ®•îc m· ASCII cña phÝm ®ã.
Ký tù ®ã sÏ hiÖn lªn mµn h×nh. NÕu cã bÊt kú mét phÝm nµo kh¸c ®•îc
nhÊn, vÝ dô nh• c¸c phÝm mòi tªn, Fx hoÆc t•¬ng tù, thanh ghi AL sÏ
nhËn gi¸ trÞ 0. C¸c lÖnh tiÕp theo int21h sÏ ®•îc thùc hiÖn tiÕp.
Chøc n¨ng 1 cña int 21h kh«ng cã dÊu hiÖu ®Ó ng•êi dïng cã thÓ
nhËp d÷ liÖu, vËy ta cã thÓ sö dông Chøc n¨ng 2 nh• sau:
Input AH =2
DH = m· ASCII hiÖn ký tù hoÆc ký tù ®iÒu khiÓn
Output AL = m· ASCII hiÖn ký tù hoÆc ký tù ®iÒu khiÓn
VÝ dô:
Mov AH,2
Mov DL, "?"
Int 21h
HiÖn dÊu ? lªn mµn h×nh vµ hiÖn dÊu nh¾c lÖnh ®Ó chê ng•êi dïng nhËp
phÝm kh¸c.
Chøc n¨ng 2 cßn cã thÓ ®•îc sö dông cho c¸c chøc n¨ng ®iÒu khiÓn.
NÕu thanhghi DL nhËn m· ASCII cña c¸c ký tù ®iÒu khiÓn, Int 21h sÏ
hiÓn thÞ ký tù ®iÒu khiÓn ®ã. Mét sè c¸c ký tù ®iÒu khiÓn tiªu biÓu nh•
sau:
M· ASCII (Hex) Ký hiÖu Chøc n¨ng
7 Bel Ph¸t tiÕng beep tõ loa PC.
8 BS PhÝm lïi.
9 HT PhÝm Tab.
A LF Xuèng hµng.
D CR §Çu dßng míi.
Trong khi xö lý, thanh ghi AL sÏ l•u gi÷ m· ASCII cña ký tù ®iÒu khiÓn.
- Ch•¬ng tr×nh ®Çu tiªn:
Mét ch•¬ng tr×nh hoµn chØnh víi c¸c chó thÝch ®Ó gi¶i thÝch tõng
c©u lÖnh, chó ý r»ng c¸c lêi gi¶i thÝch trong ch•¬ng tr×nh thËt sÏ kh«ng
sö dông ®•îc tiÕng ViÖt.
Tªn ch•¬ng tr×nh Prg01.asm
This document is created with the unregistered version of Document2PDF Pilot.
Title Prg01: Echo Program
.Model Small
.Stack 100h
.Code
Main Proc
;HiÓn thÞ dÊu nh¾c lÖnh
Mov AH,2 ;Chøc n¨ng hiÓn thÞ ký tù
Mov DL,'?' ;Ký tù lµ dÊu '?'
Int 21h ;Gäi dÞch vô 21h hiÓn thÞ ký tù
;NhËp ký tù
Mov AH,1 ;Chøc n¨ng ®äc ký tù
Int 21h ;Gäi dÞch vô 21h ®Ó nhËp ký tù vµo AL
Mov BL,AL ;Ghi ký tù vµo BL
;Xuèng hµng míi
Mov AH,2 ;Chøc n¨ng hiÓn thÞ ký tù
Mov DL,0DH ;Con trá trë vÒ ®Çu dßng
Int 21h ;Xö lý viÖc ®•a con trá vÒ ®Çu dßng
Mov DL,0AH ;Xuèng dßng míi
Int 21h ;Xö lý xuèng dßng míi
;HiÓn thÞ ký tù
Mov DL,BL ;LÊy ký tù l•u trong BL
Int 21h ;HiÓn thÞ ký tù trong thanh ghi DL
;Quay trë l¹i nÒn DOS
Mov AH,4CH ;Gäi hµm tho¸t vÒ DOS
Int 21h ;Tho¸t vÒ DOS
Main Endp ;KÕt thóc Procedure
End Main ;KÕt thóc ch•¬ng tr×nh
- T¹o ch•¬ng tr×nh vµ ch¹y ch•¬ng tr×nh:
Cã 4 b•íc ®Ó t¹o vµ ch¹y ch•¬ng tr×nh
a- Sö dông mét ch•¬ng tr×nh so¹n th¶o text ®Ó t¹o ch•¬ng tr×nh nguån.
b- Sö dông ch•¬ng tr×nh dÞch ®Ó t¹o ra 1 file m· m¸y (Object File).
c- Sö dông ch•¬ng tr×nh Link ®Ó liªn kÕt c¸c ch•¬ng tr×nh liªn kÕt t¹o ra
file ch¹y (Run File).
d- Ch¹y ch•¬ng tr×nh.
B•íc 01: T¹o ch•¬ng tr×nh nguån.
Sö dông ch•¬ng tr×nh so¹n th¶o text ®Ó t¹o mét file cã tªn Prg01 cã
néi dung nh• trªn. File cã ®u«i lµ *.asm.
B•íc 02: DÞch ch•¬ng tr×nh
Sö dông ch•¬ng tr×nh Masm ®Ó dÞch ch•¬ng tr×nh nguån thµnh
mét file ®èi t•îng cã tªn lµ PRG01.OBJ. C©u lÖnh cã thÓ lµ nh• sau:
C:\>Masm PRG01;
Ch•¬ng tr×nh sÏ kiÓm tra lçi cña ch•¬ng tr×nh nguån. NÕu cã lçi,
ch•¬ng tr×nh sÏ b¸o lçi cho ng•êi dïng biÕt. Ch•¬ng tr×nh sÏ dÞch file
PRG01.ASM thµnh file ®èi t•îng cã tªn lµ PRG01.OBJ. Nªn cã dÊu ;
®»ng sau c©u lÖnh.. Th«ng th•êng, tªn cña file míi sÏ lÊy mÆc ®Þnh lµ
tªn file cò víi ®u«i lµ OBJ.
File danh s¸ch nguån:
File sanh s¸ch nguån (*.LST) lµ mét file text hiÓn thÞ c¸c dßng
This document is created with the unregistered version of Document2PDF Pilot.
lÖnh vµ c¸c lÖnh m· m¸y t•¬ng ®•¬ng vµ mét sè th«ng tin kh¸c vÒ
ch•¬ng tr×nh. File nµy rÊt h÷u dông cho c«ng viÖc gì rèi ch•¬ng tr×nh.
File tham kh¶o chÐo (Cross-Reference File):
File cã phÇn më réng (*.CRF) liÖt kª tªn hiÓn thÞ trong ch•¬ng
tr×nh, h÷u dông khi x¸c ®Þnh c¸c biÕn (Variable), c¸c nh·n (Label) trong
mét ch•¬ng tr×nh lín.
B•íc 03: Liªn kÕt ch•¬ng tr×nh:
File OBJ lµ file chøa m· m¸y nh•ng kh«ng thÓ xö lý ®•îc bëi v×
nã kh«ng ph¶i lµ ®Þnh d¹ng cña file ch¹y.
Ch•¬ng tr×nh Link sÏ liªn kÕt c¸c file Obj thµnh file cã thÓ xö lý
®•îc (.exe file). File d¹ng nµy cã thÓ ®•îc n¹p vµo bé nhí vµ cã thÓ
ch¹y.
C¸ch liªn kÕt ch•¬ng tr×nh
C:\>Link PRG01
B•íc 04: Ch¹y ch•¬ng tr×nh.
Khi liªn kÕt xong, ta sÏ cã file PRG01.EXE. Ta cã thÓ ch¹y file nµy
trùc tiÕp tõ dÊu nh¾c lÖnh cña DOS.
- Mét ch•¬ng tr×nh kh¸c.
Ch•¬ng tr×nh nµy ®•îc viÕt víi môc ®Ých hiÓn thÞ mét chuçi ký tù.
§Ó thùc hiÖn ch•¬ng tr×nh nµy ta cÇn biÕt thªm mét sè vÊn ®Ò kh¸c.
+ Hµm 9 cña ng¾t 21h HiÓn thÞ chuçi ký tù.
Input DX=§Þa chØ ®é dêi cña chuçi.
Chuçi ph¶i ®•îc kÕt thóc b»ng ký tù '$'
+ Mét chuçi cã thÓ khëi t¹o trong bé nhí nh• sau:
MSG DB 'Hello!$'
+ LÖnh LEA (Load Affective Address).
Có ph¸p:
Lea Destination,Source
LÖnh nµy copy ®Þa chØ ®é dêi (Offset) vµo thanh ghi c«ng dông
chung.
VÝ dô:
Lea DX,MSG
N¹p ®Þa chØ ®é dêi cña biÕn MSG vµo thanh ghi DX
Tuy nhiªn ®Ó DOS cã thÓ gi¶i quyÕt ®•îc c¸c vÊn ®Ò khi ta ch¹y vµ
dÞch ch•¬ng tr×nh, ch•¬ng tr×nh cÇn ph¶i thªm 2 c©u lÖnh sau:
Mov AX,@Data
Mov DS,AX.
@Data lµ tªn cña ®o¹n d÷ liÖu ®•îc ®Þnh nghÜa bëi th• viÖn .DTA.
Ch•¬ng tr×nh dÞch sÏ dÞch tªn @Data thµnh sè hiÖu ®o¹n (Segment). 2
lÖnh trªn rÊt cÇn thiÕt bëi v× sè hiÖu cña Segment cã thÓ kh«ng di chuyÓn
trùc tiÕp ®Õn thanh ghi Segment.
Khi thanh ghi DS ®•îc khëi t¹o, ta cã thÓ in dßng ch÷ "Hello!"
b»ng c¸ch ®Æt ®Þa chØ vµo thanh ghi DX vµ gäi ng¾t 21h cña DOS.
Lea DX,MSG ;LÊy th«ng tin
Mov AH,9 ;Hµm hiÖn chuçi ký tù
Int 21h ; Gäi ng¾t 21h cña DOS ®Ó thùc
hiÖn.
Toµn bé ch•¬ng tr×nh nh• sau:
Ch•¬ng tr×nh PRG02.Asm
This document is created with the unregistered version of Document2PDF Pilot.
Title PRG02 Print String Program
.Model Small
.Stack 100h
.Data
MSG DB 'Hello!$' ;Khai b¸o biÕn MSG
.Code
Main Proc
; Khëi t¹o thanh ghi DS
Mov AX,@Data
Mov DS,AX ; Khëi t¹o thanh ghi DS
;HiÖn th«ng ®iÖp
Lea DX,MSG ;N¹p th«ng ®iÖp
Mov AH,9 ;Chøc n¨ng hiÖn chuçi ký
tù
Int 21h ;Gäi ng¾t DOS 21h
;Trë vÒ DOS
Mov AH,4CH
Int 21h
Main Endp
End Main
Ch•¬ng tr×nh thªm: §æi ký tù th•êng thµnh ký tù in hoa.
III- KÕt luËn.
Chóng t«i ®· giíi thiÖu cho c¸c b¹n mét sè c¸ch sö dông lÖnh ®óng có ph¸p vµ ®óng
quy t¾c còng nh• c¸ch thøc ®Ó c¸c b¹n cã thÓ t¹o ®•îc mét ch•¬ng tr×nhcã thÓ ch¹y ®éc
lËp trªn nÒn hÖ ®iÒu hµnh. Khi viÕt mét ch•¬ng tr×nh ®Çy ®ñ, c¸c b¹n cÇn chó ý mét sè vÊn
®Ò nh• sau.
Mét sè khai b¸o c¬ b¶n:
Khai b¸o bé nhí qua tõ kho¸ Model
.Small
.Medium
.Compact
.Large
.Huge
C¸c kiÓu d÷ liÖu c¬ b¶n
DB, DW, DD, DQ, DT
C¸c c©u lÖnh c¬ b¶n:
MOV, XCHG, ADD, SUB, INC, DEC, NEG, INT, LEA.
C¸ch sö dông Ng¾t 21h (Int 21h) cña DOS.
Function 1: §äc ký tù tõ bµn phÝm
Function 2:HiÖn ký tù
Function 9: HiÖn chuçi ký tù
C¸c b•íc ®Ó t¹o mét ch•¬ng tr×nh ch¹y ®éc lËp cã ®u«i lµ *.EXE
Sö dông ch•¬ng tr×nh MASM ®Ó t¹o ch•¬ng tr×nh ch¹y.
a- Sö dông mét ch•¬ng tr×nh so¹n th¶o text ®Ó t¹o ch•¬ng tr×nh nguån.
b- Sö dông ch•¬ng tr×nh dÞch ®Ó t¹o ra 1 file m· m¸y (Object File).
This document is created with the unregistered version of Document2PDF Pilot.
c- Sö dông ch•¬ng tr×nh Link ®Ó liªn kÕt c¸c ch•¬ng tr×nh liªn kÕt t¹o ra
file ch¹y (Run File).
d- Ch¹y ch•¬ng tr×nh. Gâ tªn File t¹i dÊu nh¾c DOS.
Mét sè ch•¬ng tr×nh mÉu: PRG01.ASM, PRG02.ASM.
This document is created with the unregistered version of Document2PDF Pilot.
Chýõng 4: Tr¹ng th¸i bé xö lý vµ c¸c lo¹i cê.
I- Giíi thiÖu c¸c cê:
Mét ®Æc ®iÓm ®Æc biÖt ph©n biÖt gi÷a computer vµ c¸c laäi m¸y mãc kh¸c lµ kh¶ n¨ng
quyÕt ®Þnh c«ng viÖc. C¸c m¹ch ®iÖn trong CPU cã thÓ thùc hiÖn ®•îc c¸c quyÕt ®Þnh ®¬n
gi¶n dùa vµo tr¹ng th¸i hiÖn t¹i cña bé xö lý. C¸c tr¹ng th¸i ®•îc biÓu hiÖn bëi c¸c cê trong
thanh ghi cê cña CPU.
H×nh minh ho¹ sau cho ta thÊy cÊu tróc cña thanh ghi cê (Flag Register):
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
T¹i c¸c Bit 0, 2, 4, 7, 11 lµ c¸c cê tr¹ng th¸i.
T¹i c¸c Bit 8,9,10 lµ c¸c cê ®iÒu khiÓn.
C¸c b¶ng sau sÏ m« t¶ c¸c lo¹i cê vµ c¸c ®Æc ®iÓm cña chóng:
C¸c cê tr¹ng th¸i:
Bit Tªn cê Ký hiÖu M« t¶
0 Carry Flag CF M« t¶ tr¹ng th¸i d÷ liÖu ®•îc nhí ®Ó dµnh thªm vµo bit
sau
2 Parity Flag PF Cê tr¹ng th¸i ®Ó kiÓm tra ch½n lÎ c¸c bits
4 Auxilary Carry Flag AF §•îc sö dông ®Ó m« t¶ tr¹ng th¸i nhí vµ tr¹ng th¸i m•în
6 Zero Flag ZF M« t¶ tr¹ng th¸i dÊu cña ch÷ sè +/-
11 Overflow Flag OF M« t¶ tr¹ng th¸i giíi h¹n cña sè.
C¸c cê ®iÒu khiÓn:
Bit Tªn cê Ký hiÖu M« t¶
8 Trap Flag TF Cê bÉy
9 Interrupt Flag IF Cê ®iÒu khiÓn ng¾t
10 Direction Flag DF Cê dÉn h•íng
II- M« t¶ tr¹ng th¸i cña bé xö lý.
1- Tr¹ng th¸i trµn (Overflow)
§iÒu c¬ b¶n cña tr¹ng th¸i trµn sè liªn quan ®Õn thùc tÕ r»ng giíi h¹n cña c¸c
sè cã thÓ hiÓn thÞ trong giíi h¹n cña Computer.
Nh• ®· gi¶i thÝch ë c¸c phÇn tr•íc, giíi h¹n cña mét sè nguyªn cã dÊu cã thÓ
biÓu diÔn ®•îc b»ng Word 16 bits lµ -32768 32767. Víi sè nguyªn kh«ng dÊu lµ 0
65535. NÕu kÕt qu¶ tÝnh to¸n v•ît qu¸ giíi h¹n trªn, tr¹ng th¸i trµn sÏ x¶y ra vµ kÕt
qu¶ sÏ bÞ c¾t bít ®Ó cã thÓ biÓu diÔn ®•îc trong thanh ghi, do ®ã kÕt qu¶ sÏ lµ sai. §Ó
cã thÓ hiÓu râ h¬n, ta cã thÓ tham kh¶o vÝ dô sau:
Sè cã dÊu hoÆc kh«ng dÊu lµ tïy thao quy ®Þnh. Khi ta thùc hiÖn mét phÐp
tÝnh sè häc, cã thÓ lµ phÐp céng (+), cã thÓ cã 4 tr•êng hîp x¶y ra.
+ Kh«ng trµn sè.
+ Trµn sè v× dÊu (+/-).
+ Trµn sè kh«ng dÊu.
+ Trµn sè c¶ tr•êng hîp cã dÊu vµ kh«ng dÊu.
VÝ dô sau lµ vÝ dô trµn sè kh«ng dÊu. Gi¶ ®Þnh thanh ghi AX chøa gi¸ trÞ
FFFFh, Thanh ghi BX chøa gi¸ trÞ 0001h, Sö dông lÖnh ADD ®Ó céng 2 gi¸
trÞ trªn.
This document is created with the unregistered version of Document2PDF Pilot.
ADD AX,BX
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KÕt qu¶ ®óng cña phÐp tÝnh trªn lµ:
FFFFh + 0001h = 100000h 65536 (V•ît qu¸ giíi h¹n cña sè nguyªn
dïng cho Word 16 bit). KÕt qu¶ ®•îc l•u trong thanh ghi AX lµ 0000h (Sè 1
lµ sè nhí vµ ®•îc ghi trong cê Carry). VËy ta sÏ nhËn ®•îc kÕt qu¶ sai.
Tuy nhiªn kÕt qu¶ sÏ lµ ®óng trong tr•êng hîp sè cã dÊu. Gi¶i thÝch nh• sau:
Ta cã FFFFh = -1
0001h = 1
FFFFh + 0001h = 0
VËy kÕt qu¶ l•u trong AX lµ 0000h sÏ lµ ®óng Trµn cã dÊu kh«ng x¶y ra.
Mét vÝ dô kh¸c vÒ trµn sè cã dÊu:
AX vµ BX cïng chøa gi¸ trÞ 7FFFh.
ADD AX,BX
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
KÕt qu¶ lµ FFFEh
Ta cã 7FFFh = 32767
VËy 7FFFh + 7FFFh = 32767 + 32767 = 65534. KÕt qu¶ nµy ngoµi
giíi h¹n cña sè cã dÊu. KÕt qu¶ ®•îc diÔn gi¶i theo sè cã dÊu lµ FFFEh
= -2 T×nh tr¹ng trµn cã dÊu x¶y ra.
- C¸ch thøc bé xö lý biÓu hiÖn tr¹ng th¸i trµn.:
Bé xö lý sÏ thiÕt lËp cê OF = 1 víi trµn sè kh«ng dÊu, CF = 1 víi
trµn sè cã dÊu. §iÒu nµy sÏ gióp ch•¬ng t×nh ho¹t ®éng chÝnh x¸c. nÕu
kh«ng cã ho¹t déng gÝ x¶y ra ngay lóc ®ã, c¸c c©u lÖnh kh¸c phÝa sau sÏ
lµm cho cê trµn sÏ ®•îc t¾t OF = 0.
§Ó x¸c ®Þnh tr¹ng th¸i trµn sè, bé xö lý kh«ng dÞch kÕt qu¶ lµ sè
cã dÊu hoÆc kh«ng dÊu. Hµnh ®éng lµ sÏ sö dông c¶ 2 c¸ch th«ng dÞch
cho mçi phÐp to¸n vµ bËt c¸c cê CF vµ OF cho tr¹ng th¸i trµn sè kh«ng
dÊu vµ trµn sè cã dÊu. NÕu TÝnh to¸n lµ sè cã dÊu, chØ cã OF ®•îc ®Ó ý
vµ CF sÏ bÞ lê ®i, Ng•îc l¹i, CF sÏ ®•îc ®Ó ý vµ OF sÏ bÞ lê ®i.
- C¸ch thøc bé xö lý x¸c ®Þnh tr¹ng th¸i trµn.
Cã thÓ cã nhiÒu lÖnh lµm x¶y ra tr¹ng th¸i trµn sè nh•ng ®Ó ®¬n
gi¶n vÊn ®Ò, ta chØ giíi h¹n ë c¸c lÖnh céng vµ trõ.
+ Trµn sè kh«ng dÊu: Trong phÐp to¸n céng, Trµn sè kh«ng dÊu
x¶y ra khi cã sè nhí trªn Bit MSB (Most Significant Bit). §iÒu ®ã cã
nghÜa lµ kÕt qu¶ ®óng lín h¬n sè kh«ng cã dÊu. vÝ dô nh• FFFFh cho 1
Word vµ FFh cho 1 Byte. Trong phÐp trõ, Trµn sè kh«ng dÊu x¶y ra khi
ph¶i m•în thªm mét sè h¹ng tõ MSB vµ kÕt qu¶ sÏ ph¶i nhá h¬n 0.
+ Trµn sè cã dÊu:
PhÐp céng c¸c sè cïng dÊu, tr¹ng th¸i trµn sè x¶y ra khi kÕt
qu¶ cã dÊu kh¸c. §iÒu nµy x¶y ra nh• trong vÝ dô céng hai sè
7FFFh lµ hai sè d•¬ng vµ ®•îc kÕt qu¶ lµ sè ©m FFFEh.
PhÐp trõ c¸c sè kh¸c dÊu còng gièng nh• phÐp céng c¸c sè
cïng dÊu. VÝ dô A - ( - B) = A + B vµ -A-(+B) = (-A) + (- B).
Trµn sè cã dÊu x¶y ra nÕu kÕt qu¶ cã dÊu kh¸c víi mong muèn.
This document is created with the unregistered version of Document2PDF Pilot.
Trong phÐp céng víi c¸c sè kh¸c dÊu, hiÖn t•îng trµn sè
kh«ng x¶y ra v× kÕt qu¶ bao giê còng nhá h¬n. t•¬ng tù nh• víi
phÐp trõ hai sè cïng dÊu.
2- C¸ch thøc ¶nh h•ëng cña c¸c lÖnh ®Õn c¸c cê
Mçi khi bé xö lý thùc thi c¸c lÖnh, c¸c cê ®•îc thiÕt lËp ®Ó ph¶n ¸nh kÕt qu¶.
Tuy nhiªn, mét vµi lÖnh kh«ng cã chót ¶nh h•ëng nµo tíi c¸c cê, chØ ¶nh h•ëng ®Õn
mét sè cê hoÆc ®Ó mÆc chóng. Bëi v× c¸c c©u lÖnh nh¶y dùa vµo c¸ch thøc thiÕt lËp
cê. §iÒu nµy rÊt quan träng ®Ó cã thÓ x¸c ®Þnh mçi lÖnh lµm viÖc víi cê. Quay l¹i
mét sè lÖnh c¬ b¶n, chóng cã thÓ ¶nh h•ëng ®Õn c¸c cê theo b¶ng sau:
LÖnh C¸c cê cã ¶nh h•ëng
MOV, XCHG Kh«ng cã cê nµo
ADD, SUB TÊt c¶ c¸c cê
INC, DEC TÊt c¶ c¸c cê ngo¹i trõ CF
NEG TÊt c¶ c¸c cê (CF = 1 ngo¹i trõ kÕt qu¶ lµ 0. OF = 1 nÕu Word lµ 8000h hoÆc
Byte lµ 80h)
Chóng ta nghiªn cøu mét vÝ dô ®Ó râ h¬n c¸c ¶nh h•ëng nµy:
AX chøa FFFFh, BX chøa FFFFh
LÖnh ADD AX,BX
FFFFh
FFFFh
1FFFEh
KÕt qu¶ l•u trong AX lµ FFFEh = 1111 1111 1111 1110
SF = 1 V× MSB lµ 1.
PF = 0 V× cã 7 bit trong Byte thÊp cña kÕt qu¶.
ZF = 0 KÕt qu¶ kh¸c 0.
CF = 1 V× cã mét sè nhí ngoµi MSB tron phÐp céng.
OF = 0 dÊu cña kÕt qu¶ cïng dÊu víi sè sÏ ®•¬c céng thªm
3- C¸c lÖnh ®iÒu khiÓn ho¹t ®éng.
§Ó cã kh¸i niÖm vÒ c¸c lÖnh nh¶y, kh¶o s¸t ch•¬ng tr×nh minh ho¹ sau:
1 Title PRG03: Display Character
2 .Model Small
3 .Stack 100h
4 .Code
5 Main Proc
6 Mov AH,2 ; Chøc n¨ng hiÖn ký tù
7 Mov CX,256 ;Sè ký tù sÏ hiÓn thÞ
8 Mov DL,0 ; DL chøa m· ASCII rçng (Null)
9 Prn_Loop ; Nh·n dµnh cho lÖnh nh¶y
10 Int 21h ; HiÖn ký tù
11 Inc DL ;LÊy ký tù tiÕp theo
12 Dec CX ;Gi¶m vßng ®Õm (Counter)
13 Jnz Prn_loop ;TiÕp tôc xö lý tõ nh·n cho tíi khi nµo
CX=0
14 ;Tho¸t ra nÒn DOS
15 Mov AH,4CH
16 Int 21h
17 Main Endp
This document is created with the unregistered version of Document2PDF Pilot.
18 End Main
Cã 256 ký tù trong bé ký tù IBM, m· tõ 32 127 lµ c¸c m· chuÈn ASCII
cã thÓ hiÓn thÞ. C¸c m¸ cßn l¹i ®•îc hiÓn thÞ d•íi d¹ng ®å ho¹ (??????…).
§Ó hiÓn thÞ c¸c ký tù, ta sö dông mét vßng lÆp (Dßng 9 dßng 13).
Tr•íc khi b¾t ®Çu vßng lÆp, thanh ghi AH ®•îc khëi t¹o lµ 2 (chøc n¨ng hiÓn
thÞ mét ký tù ®¬n cña Ng¾t 21h) vµ thanh ghi DL thiÕt lËp gi¸ trÞ 0 (m· ASCII
®Çu tiªn). Thanh ghi CX ®•îc sö dông ®Ó lµm bé ®Õm vßng lÆp. Nã ®•îc khëi
t¹o lµ 256 tr•íc khi vµo vßng lÆp vµ sÏ gi¶m dÇn khi mçi ký tù ®· ®•îc hiÓn
thÞ.
C©u lÖnh ®iÒu khiÓn vßng lÆp ë ®©y lµ c©u lÖnh JNZ (Jump If Not Zero).
NÕu gi¸ trÞ cña CX sau khi bÞ gi¶m ®i (DEC) ch•a lµ 0 th× lÖnh JNZ sÏ chuyÓn
®iÒu khiÓn ®Õn nh·n Prn_Loop. NÕu CX = 0 ch•¬ng tr×nh sÏ xö lý tiÕp c¸c
lÖnh cßn l¹i tõ 14 trë ®i.
4- C¸c lÖnh nh¶y cã ®iÒu kiÖn.
Ta cã lÖnh JNZ lµ mét lÖnh nh¶y cã ®iÒu kiÖn.
Có ph¸p cña c¸c lÖnh nh¶y cã ®iÒu kiÖn nh• sau:
Jxxx Destination_label
Jxxx lµ mét sè lÖnh nh¶y b¾t ®Çu b»ng "J".
Destination_Label Lµ nh·n mµ lÖnh cÇn ®iÒu khiÓn. NÕu ®iÒu kiÖn ®Ó nh¶y lµ
True (§óng), LÖnh tiÕp theo cÇn ®•îc thùc hiÖn lµ nh·n ®· ®•îc khai b¸o.
Ng•îc l¹i lÖnh kÕ tiÕp cña lÖnh nh¶y sÏ ®•îc thùc hiÖn.
- C¸ch thøc CPU thùc hiÖn lÖnh nh¶y cã ®iÒu kiÖn:
§Ó thùc hiÖn lÖnh nh¶y, CPU t×m trong thanh ghi cê. NÕu ®iÒu kiÖn cña
lÖnh nh¶y lµ ®óng, CPU sÏ ®iÒu chØnh thanh ghi con trá lÖnh (IP) trá ®Õn nh·n
lÖnh. NÕu ®iÒu kiÖn cña lÖnh nh¶y lµ sai (False), CPU sÏ kh«ng ®iÒu chØnh
thanh ghi IP vµ dßng lÖnh kÕ tiÕp sÏ ®•îc thùc thi.
5- So s¸nh víi c¸c ng«n ng÷ lËp tr×nh bËc cao
Ta ®É biÕt, c¸c c©u lÖnh Jump cã thÓ ®•îc sö dông ®Ó thùc hiÖn lÖnh ph©n
nh¸nh vµ lÖnh lÆp. Tuy nhiªn chóng t•¬ng ®èi phøc t¹p nhÊt lµ ®èi víi nh÷ng ng•êi
dïng míi trong viÖc viÕt m· lÖnh.
Ta cã thÓ so s¸nh víi mét sè cÊu tróc cña ng«n ng÷ bËc cao h¬n ®Ó cã thÓ hiÓu
râ vÒ c¸ch thùc thi chóng.
a- CÊu tróc ph©n nh¸nh:
- If - Then
CÊu tróc If - Then cã thÓ ®•îc m« t¶ nh• sau:
If ®iÒu kiÖn ®óng
Then xö lý c©u lÖnh ®óng theo ®iÒu kiÖn
EndIf
§iÒu kiÖn lµ mét ph¸t biÓu cã thÓ ®óng hoÆc sai. Trong tr•êng hîp ®óng, C©u
lÖnh bªn trong sÏ ®•îc thùc thi. Ng•îc l¹i, c©u lÖn bªn trong sÏ kh«ng ®•îc thùc
hiÖn.
VÝ dô:
§Æt vµo thanh ghi AX mét sè, m« t¶ nh• sau:
If AX < 0
Then thay thÕ AX b»ng - AX
EndIf
M· nh• sau
;If AX < 0
This document is created with the unregistered version of Document2PDF Pilot.
Cmp AX,0 ;So sanh AX va 0?
JNL EndIf ;Khong, thoat
;Then
Neg AX ; Dung, thay doi dau
End_If
§iÒu kiÖn AX<0 ®•îc kiÓm tra bëi lÖnh CMP AX,0 Dïng lÖnh nh¶y JNL
(jump If Not Less) ®Ó nh¶y ®Õn nh·n End_If nÕu AX kh«ng nhá h¬n kh«ng.
- If - Then - Else
If ®iÒu kiÖn ®óng
Then xö lý c©u lÖnh theo ®iÒu kiÖn ®óng
Else
Then xö lý c©u lÖnh theo ®iÒu kiÖn sai
EndIf
VÝ dô:
Thanh ghi AL vµ BL chøa m· ASCII hai ký tù nhau, hiÓn thÞ ký tù cã sè
m· nhá h¬n.
If AL <= BL
Then HiÓn thÞ ký tù trong AL
Else
HiÓn thÞ ký tù trong BL
EndIf
M· lÖnh cã thÓ nh• sau
Mov AH,2 ; ChuÈn bÞ hiÓn thÞ
; if AL <= BL
Cmp AL,BL ; AL <= BL
JNBE Else_ ; Khong, hien thi BL
;then
Mov DL,AL ;Chuyen ky tu de hien thi
JMP Display ; Nhay den Display
Else_:
Mov DL,BL ;Chan bi de hien thi BL
Display:
Int 21h ;Hien thi
- Case:
Case Phatbieu
Giatri1: Lenh1
Giatri2: Lenh2
GiatriN: LenhN
End_case
Trong cÊu tróc nµy, Phatbieu ®•îc kiÓm tra NÕu gi¸ trÞ lµ thµnh viªn cña
giatri1, lenh1 ®•îc thùc hiÖn…
VÝ dô:
AX chøa 1 sè ©m, n¹p -1 vµo BX, NÕu AX chøa 0, n¹p 0 vµo BX, NÕu
AX chøa sè d•¬ng, N¹p 1 vµo BX
Case AX
<0 N¹p -1 vµo BX
=0 N¹p 0 vµo BX
>0 N¹p 1 vµo BX
This document is created with the unregistered version of Document2PDF Pilot.
End_Case
M· ch•¬ng tr×nh nh• sau:
;Case AX
CMP AX,0 ;Kiem tra AX
JL So_am ;AX<0
JE Bang_0 ;AX=0
JG So_duong ;AX>0
So_am:
Mov BX,-1
JMP End_case
Bang_0:
Mov BX,0
JMP End_case
So_duong:
Mov BX,1
End_case
- And
§iÒu kiÖn vµ ®•îc coi lµ ®óng nÕu c¶ hai thµnh phÇn so s¸nh ®Òu ®óng
VÝ dô:
§äc ký tù, hiÓn thÞ khi chóng lµ Ký tù in hoa:
§äc ký tù vµo thanh ghi AL
If ('A' <= Kytu) And (Kytu<= 'Z')
Then Hien ky tu
Endif
M· ch•¬ng tr×nh nh• sau:
; Doc Ky tu
Mov AH,1 ; Chuan bi doc ky tu
Int 21h ; Doc ky tu vao AL
; If ('A' <= Kytu) And (Kytu<= 'Z')
Cmp AL,'A' ; Ky tu >= A
JNGE End_if ; Khong, thoat
Cmp AL,'Z' ; Ky tu <= Z
JNLE End_if ; Khong, thoat
; Hien thi ky tu
Mov DL,AL ; Nhap ky tu
Mov AH,2 ; Chuan bi hien thi
Int 21h ; Hien thi
End_if
- OR
C©u lÖnh Or ®óng khi mét trong hai diÒu kiÖn thµnh phµn ®óng, sai khi c¶ hai
diÒu kiÖn thµnh phÇn sai.
VÝ dô:
§äc ký tù. NÕu lµ 'y' hoÆc 'Y' th× hiÖn chóng, nÕu kh«ng ph¶i th× tho¸t khái
chuong tr×nh.
§äc ký tù vµo AL
If (Kytu= 'y') OR (Kytu= 'Y')
Then hiÓn thÞ
Else
Ng•ng ch•¬ng tr×nh
This document is created with the unregistered version of Document2PDF Pilot.
End_if
M· ch•¬ng tr×nh
; Doc ky tu
Mov AH,1 ; Chuan bi doc
Int 21h ; Ky tu trong AL
;If (Kytu= 'y') OR (Kytu= 'Y')
Cmp AL, 'y' ; Ky tu la y?
JE Then ; Dung, hien thi y
Cmp AL, 'Y' ; Ky tu la Y
JE Then ; Dung, hien thi Y
Jmp Else_
Then:
Mov AH,2 ; Chuan bi hien thi
Mov DL,AH ; Nhan ky tu
Int 21h ; Hien thi
JMP End_if ; Thoat
Else_:
Mov AH,4Ch
Int 21h ; Thoat ra DOS
End_if
6- C¸c lÖnh lÆp.
C¸c c©u lÖnh lÆp m« t¶ c¸c lÖnh cã thÓ ®•îc thùc thi nhiÒu lÇn tuú thuéc vµo
®iÒu kiÖn ®Ó kÕt thóc vßng lÆp.
LÖnh lÆp FOR
M« t¶
For §iÒu kiÖn lÆp Do
C¸c c©u lÖnh
End_for
LÖnh Loop cã thÓ ®•îc sö dông cho lÖnh lÆp
Loop Nh·n
Sè ®Õm cho lÖnh lÆp ®•îc ®Æt trong thanh ghi CX, C¸c xö lý cña lÖnh Loop sÏ
lµm cho gi¸ trÞ trong thanh ghi CX gi¶m mét c¸ch tù ®éng cho ®Õn khi gi¸ trÞ nµy
b»ng 0.
Sö dông lÖnh Loop, c©u lÖnh lÆp For ®•îc phat biÓu nh• sau:
;Khëi t¹o thanh ghi CX
Top:
C¸c LÖnh
Loop Top
VÝ dô:
HiÓn thÞ mét hµng 80 h×nh sao *.
M« t¶:
For 80lan Do
Hienthi '*'
End_for
M· ch•¬ng tr×nh
Mov CX,80 ; So l•¬ng dau *
Mov AH,2 ;Chuc n¨ng hien thi
Mov DL,'*' ; Ky tu se hien thi
This document is created with the unregistered version of Document2PDF Pilot.
Top:
Int 21h ; Hien thi *
Loop Top
B¹n ph¶i chó ý ®Õn ®iÒu nµy. Khi sö dông lÖnh Loop, it nh©t mét lÇn lÖnh lÆp
®•îc thùc hiÖn. Thùc sù nÕu CX chøa 0 khi lÖnh Loop cã hiÖu lùc, lÖnh Loop sÏ lµm
cho thanh ghi CX gi¶m tíi FFFFh, vµ lÖnh Loop l¹i tiÕp tôc xö lý FFFFh = 65535.
§Ó tr¸nh ®iÒu nµy, lÖnh JCXZ (Jump if CX=0) cã thÓ ®•îc sö dông
Có ph¸p lÖnh nh• sau:
JCXZ Nh·n
Ta cã thÓ ph¸t biÓu lÖnh nh• sau:
………………………..
JCXZ Skip
Top:
LÖnh
Loop Top
Skip:
- While.
LÖnh Loop tuú thuéc vµo ®iÒu kiÖn
Ph¸t biÓu
While dieukien Do
C¸c c©u lÖnh
End_while
VÝ dô:
ViÕt mét vµi m· lÖnh ®Ó ®Õm sè ký tù trong mét hµng
M« t¶:
Khëi t¹o vßng ®Õm Count
§äc ký tù
While Kytu Enter do
Count=Count+1
Doc ky tu
End_while
M· ch•¬ng tr×nh
Mov DX,0 ; Khoi tao DX=0
Mov AH,1 ; Doc ky tu
Int 21h ; Ky tu trong AL
While_:
Cmp AL,0Dh ; Enter?
JE End_while ; Dung, thoat
Inc DX ; Tang DX
Int 21h ; Doc ky tu
Jmp While_
- Repeat.
M« t¶:
Repeat
C¸c lÖnh
Until §iÒu kiÖn
VÝ dô:
§äc c¸c ký tù cho tíi khi gÆp kho¶ng tr¾ng:
M« t¶:
This document is created with the unregistered version of Document2PDF Pilot.
Repeat
Doc ky tu
Until Ky tu la khoang trang
M· ch•¬ng tr×nh:
Mov AX,1 ; Chuan bi doc
Repeat:
Int 21h ;Ky tu trong AL
; Until
Cmp AL, ; AL = Space
JNE Repeat
This document is created with the unregistered version of Document2PDF Pilot.
Chýõng 5: C¸c lÖnh Logic.
I- Giíi thiÖu
Kh¶ n¨ng thao t¸c víi tõng bit d÷ liÖu lµ mét lîi thÓ cña ng«n ng÷ Assembly. Chóng
ta cã thÓ thay ®æi tõng bit ®äc lËp b»ng c¸ch sö dông c¸c lÖnh logic. Gi¸ trÞ nhÞ ph©n la 0 vµ
1 t•¬ng øng víi c¸c diÒu kiÖn §óng (True) hoÆc Sai (False)
VÝ dô minh ho¹ c¸c lÖnh Logic.
1 0 1 0 1 0 1 0
And
1 1 1 1 0 0 0 0
= 1 0 1 0 0 0 0 0
1 0 1 0 1 0 1 0
OR
1 1 1 1 0 0 0 0
= 1 1 1 1 1 0 1 0
1 0 1 0 1 0 1 0
Xor
1 1 1 1 0 0 0 0
= 0 1 0 1 1 0 1 0
1 0 1 0 1 0 1 0
Not
= 0 1 0 1 0 1 0 1
II- C¸c lÖnh Logic c¬ b¶n.
1- LÖnh And, Or, Xor, Not:
C¸c lÖnh nµy thùc hiÖn c¸c thao t¸c theo tªn Logic cña chóng.
Có ph¸p lÖnh:
AND Dich, Nguon
OR Dich, Nguon
XOR Dich, Nguon
KÕt qu¶ ®•îc l•u trong Dich. Dich phai la thanh ghi hoÆc « nhí. Nguon cã thÓ
lµ Thanh ghi, Bé nhí hoÆc h»ng sè. Tuy nhiªn viÖc di chuyÓn gi÷a « nhí vµ « nhí lµ
kh«ng ®•îc.
- ¶nh h•ëng ®Õn C¸c cê:
SF, ZF, PF Ph¶n ¸nh kÕt qu¶
AF Kh«ng x¸c ®Þnh
CF, OF Gi¸ trÞ 0.
Mét chøc n¨ng cña c¸c lÖnh And, Or, Xor lµ cã thÓ lµm thay ®æi tõng bit
cña Dich. §Ó lµm ®iÒu ®ã, ta ph¶i x©y dùng chøc n¨ng bit nguån nh• lµ mét mÆt n¹
(Mask). C¸c bit Mask ®•îc chän ®Ó x¸c ®Þnh c¸c bit t¹i Diak ®•îc thay ®æi ®óng vÞ
This document is created with the unregistered version of Document2PDF Pilot.
trÝ khi lÖnh ®•îc xö lý.
§Ó chän Bit Mask, ta ph¶i chän c¸c ®Æc tÝnh cña And, Or hoÆc Xor.
b And 1 = b b or 0 = b b Xor 0 = b
b And 0 = 0 b or 1 = 1 b Xor 1 = ~b (Bï 2 cña b)
Tõ ®ã ta cã:
+ LÖnh And cho phÐp ta xo¸ c¸c bit cña DichNh•ng cã thÓ ®Ó nguyªn mét sè
bit kh¸c. Mask bit b»ng 0 xo¸ bit t¹i vÞ trÝ t•¬ng tù , Mask bit b»ng 1 sÏ ®Ó nguyªn
c¸c bit t¹i vÞ trÝ t•¬ng tù.
+ LÖnh OR sö dông ®Ó thiÕt lËp c¸c bit ®Ých vµ gi÷ nguyªn c¸c bit cßn l¹i.
Mask bit lµ 1 lµm thay ®æi bit ®Ých, Mask bit b»ng 0 gi÷ nguyªn c¸c bit ®Ých t¹i vÞ trÝ
t•¬ng øng.
+ LÖnh XOR cho phÐp ta lËp m· bï 2 dèi víi c¸c bit ®Ých vµ ®Ó nguyªn
c¸c bit kh¸c. Mask bit b»ng 0 sÏ gi÷ nguyªn c¸c bit ®Ých t¹i vÞ trÝ t•¬ng øng.
VÝ dô:
+ Xo¸ bÝt dÊu cña thanh ghi AL, gi÷ nguyªn c¸c Bit kh¸c
Sö dông lÖnh AND víi 01111111=7Fh lµ Mask
And AL,7Fh
+ Thay ®æi bit dÇu tiªn vµ cuèi cïng cña thanh ghi AL
Sö dông lÖnh OR víi 10000001=81h lµ Mask
Or AL,81h
+ Thay ®æi bit dÊu cña DX
Sö dông lÖnh XOR víi 8000h lµ Mask
XOR DX,8000h
§Ó tr¸nh gâ sai, nªn ®æi tõ nhÞ ph©n sang Hex nhÊt lµ c¸c Mask 16 bits.
- ChuyÓn ®æi ký tù ASCII thµnh sè:
Chóng ta biÕt r»ng khi ch•¬ng tr×nh ®äc ký tù tõ bµn phÝm, AL sÏ nhËn ký tù
m· ASCII.vÝ dô, khi ta nhÊn phÝm sè 5, AL sÏ nhËn m· 35h chø kh«ng ph¶i sè 5. §Ó
nhËn sè 5 trong AL, ta ph¶i lµm nh• sau
Sub AL,30h
Mét c¸ch kh¸c ta sö dông lÖnh And ®Ó xo¸ bá 4 bit cao cña AL.
And AL,0Fh
Lý do lµ M· cña 0 tíi 9 lµ 30 39h, ph•¬ng ph¸p nµy chuyÓn ®æi c¸c m· ký tù ASCII
sang gi¸ trÞ sè.
B»ng c¸ch sö dông lÖnh And thay cho lªnh Sub, chóng ta nhÊn m¹nh viÖc thay
®æi ®Æc ®iÓm bit cña AL vµ ®iÒu ®ã gióp cho ch•¬ng tr×nh dÔ ®äc h¬n.
- ChuyÓn ký tù th•êng thµnh ký tù in hoa:
M· ASCII cña 'a' 'z' lµ 61h 7Ah, 'A' 'Z' lµ 41h 5Ah. NÕu DL chøa m· ký tù
th•êng, ta cã thÓ ®æi chóng thµnh ký tù in hoa nh• sau.
Sub DL,20h
Tuy nhiªn, nÕu ta so s¸nh m· nhÞ ph©n cña c¸c ký tù t•¬ng øng gi÷a ch÷
th•êng vµ ch÷ in ta sÏ cã
Ký tù M· Ký tù m·
A 01100001 a 01000001
B 01100010 b 01000010
Z 01111010 Z 01011010
So s¸nh trªn cho ta thÊy, khi chuyÓn ®æi kiÓu ký tù ta chØ cÇn xo¸ bit sè 5.
ViÖc chuyÓn ®æi rÊt dÔ dµng khi ta sö dông lÖnh Andvíi Mask lµ 11011111b=0DFh.
This document is created with the unregistered version of Document2PDF Pilot.
Ta cã
And DL,0DFh
- Xo¸ thanh ghi
Ta ®· biÕt cã hai c¸ch ®Ó xo¸ thanh ghi nh• sau
Thanh ghi AX
Mov AX,0 (1)hoÆc
Sub AX,AX (2)
Theo lÖnh XOR 1 Xor 1=0 vµ 0 Xor 0=0 vËy ta cã c¸ch thø 3
Xor AX,AX (3)
M· m¸y cña ph•¬ng ph¸p 1 lµ 3 byte, ph•¬ng ph¸p 2 vµ 3 lµ 2 Byte, vËy ®Ó
xo¸ gi¸ trÞ mét thanh ghi ta nªn sö dông ph•¬ng ph¸p 2 hoÆc 3. Tuy nhiªn ®Ó xo¸
bé nhí, ta ph¶i sö dông ph•¬ng ph¸p 1.
2- LÖnh Not
LÖnh not thùc hiÖn thao t¸c m· bï ®èi víi ®Ých. ®Þnh d¹ng nh• sau
Not Dich
LÖnh kh«ng ¶nh h•ëng ®Õn c¸c thanh ghi tr¹ng th¸i.
VÝ dô:
Not AX
3- LÖnh Test:
LÖnh Test sö dông phÐp to¸n And ®èi víi ®Ých vµ nguån nh•ng kh«ng lµm
thay ®æi gi¸ trÞ cña ®Ých. Môc ®Ých cña lªnh Test lµ thiÕt lËp tr¹ng th¸i cho c¸c cê:
Có ph¸p:
Test Dich, nguon
¶nh h•ëng ®Õn c¸c cê tr¹ng th¸i:
SF, ZF, PF Ph¶n ¸nh kÕt qu¶
AF Kh«ng ®inh nghÜa
CF, OF Gi¸ trÞ 0
KiÓm tra c¸c bits
LÖnh Test cã thÓ ®•îc sö dông ®Ó kiÓm tra tõng bit trong mét to¸n h¹ng.
Mask ph¶i chøa 1 t¹i vÞ trÝ cÇn kiÓm tra. Lý do 1 And b=b vµ 0 and b=0
Test Dich, Mask
VÝ dô:
Nh¶y tíi nh·n Below nÕu AL chøa sè ch½n
Byte chøa sè ch½n nÕu bit 0 cã gi¸ trÞ 0 Mask 00000001b=1
Test AL,1 ;AL Ch½n?
JZ Below ; Dung, nhay den Below.
This document is created with the unregistered version of Document2PDF Pilot.
Chýõng 6: C¸c lÖnh dÞch chuyÓn vµ quay.
I- Giíi thiÖu
C¸c lÖnh dÞch chuyÓn (Shift) vµ quay (Rotate)sÏ dÞch chuyÓn ®Ých 1 hoÆc nhiÒu vÞ trÝ
sang tr¸i hoÆc ph¶i tuú thuéc lÖnh. Víi c¸c lÖnh Shift, bit cuèi cïng sÏ bÞ mÊt. Víi c¸c lÖnh
Rotate, bit cuèi cïng sÏ dÞch chuyÓn sang ®Çu bªn kia.
C¸c lÖnh nµy cho phÐp ta thùc hiÖn c¸c phÐp to¸n nh©n, chia hoÆc b×nh ph•¬ng mét
gi¸ trÞ. Vµ chóng ta cã thÓ sö dông chóng ®Ó tiÕn hµnh c¸c thao t¸c vµo ra sè nhÞ ph©n hoÆc
Hexa.
II- C¸c lÖnh c¬ b¶n.
1- C¸c lÖnh dÞch (Shift).
a- SHL (Shift Left "" DÞch sang tr¸i)
LÖnh cho phÐp ta dÞch mét hoÆc nhiÒu bit sang bªn tr¸i
Có ph¸p:
SHL Dich,1
Gi¸ trÞ 0 sÏ ®•îc g¸n vµo bit 0, gi¸ trÞ t¹o bit cao nhÊt cña Dich sÏ ®•îc
l•u trong cê CF. NÕu muèn dÞch nhiÒu bit, ta ®•a gi¸ trÞ sè lÇn dÞch chuyÓn
vµo CL
SHL Dich,CL
¶nh h•ëng ®Õn cê
SF, PF, ZF Ph¶n ¸nh kÕt qu¶
AF Kh«ng ®Þnh nghÜa.
CF Bit cuèi cïng bÞ ®Èy ra
OF 1 lµ kÕt qu¶ thay ®æi dÊu cña bit cuèi cïng
VÝ dô:
DH chøa gi¸ trÞ 8Dh, CL chøa gi¸ trÞ 3 . VËy gi¸ trÞ cña DH vµ CF
lµ bao nhiªu khi ta sö dông c©u lÖnh
SHL DH,CL
Tr¶ lêi:
Gi¸ trÞ tÝnh theo nhÞ ph©n cña DH lµ 10001010b Sau khi dÞch tr¸i 3 lÇn,
gi¸ trÞ cña DH sÏ lµ 01010000b=50h vµ gi¸ trÞ cña CF sÏ lµ 0.
b- Nh©n b»ng lÖnh SHL
Gi¶ sö ta cã sè 235 nÕu ta dÞch tr¸i 1 lÇn (Thªm 0 vµo sè trªn vµo bªn
ph¶i) ta sÏ ®•îc 2350 = 235 x 10
Còng t•¬ng tù nh• vËy, DÞch tr¸i sè nhÞ ph©n gièng nh• nh©n cho 2. VÝ
dô: AL chøa sè 5=00000101b dÞch tr¸i ta sÏ cã 00001010=10, dÞch tr¸i tiÕp ta
cã 00010100=20
c- SHL (Shift Right "DÞch sang ph¶i"):
T•ng tù nh• lÖnh dich tr¸i, lÖnh dich ph¶i còng cã c¸c thao t¸c t•¬ng tù,
Sù kh¸c nhau lµ chiÒu dÞch cña c¸c bit.
2- C¸c lÖnh quay (Rotate).
a- ROL(Rotate left "Quay tr¸i")
LÖnh thao t¸c dÞch bit sang tr¸i. Bit ®Çu tiªn sÏ mang gi¸ trÞ bit cuèi
cïng, CF sÏ chøa gi¸ trÞ cña bit ®•îc ®Èy ra.
Có ph¸p lÖnh:
ROL Dich,1 Vµ
This document is created with the unregistered version of Document2PDF Pilot.
ROL Dich,CL
b- ROR(Rotate Right "Quay ph¶i")
T•¬ng tù nh• lÖnh quay tr¸i, chØ cã ®iÒu c¸c bit dÞch chuyÓn qua bªn
ph¶i, bit cuèi cïng sÏ mang gi¸ trÞ cña bit ®Çu tiªn. Cê CF sÏ mang gi¸ trÞ cña
bit bÞ ®Èy ra.
Có ph¸p lÖnh
ROR Dich,1 Vµ
ROR Dich,CL
Trong c¸c lÖnh ROL vµ ROR, CF ph¶n ¸nh bit bin ®Èy ra, Kh¶o s¸t vÝ dô sau
®©y:
VÝ dô:
Sö dông lÖnh ROL ®Ó ®Õm sè l•îng bit mang gi¸ trÞ 1 cua rthanh ghi
BX mµ kh«ng thay ®æi gi¸ trÞ thah ghi BX. Gi¶i ®¸p n»m trong thah ghi AX.
Xor AX, AX ; AX vÒ 0
Mov CX,16 ; Bé ®Õm lÆp
Top:
ROL BX,1 ; CF= bit bÞ ®Èy ra
JNC Next ; 0 Bit
INC AX ; 1 bit, t¨ng sè l•îng
Next:
Loop Top ; LÆp cho tíi khi kÕt thóc.
Trong vÝ dô nµy ta sö dông JNC (Jump If No Carry) sÏ thùc thi khi CF=0.
c- RCL
LÖnh RCL dÞch chuyÓn c¸c bit cña Dich sang tr¸i, Bit cao nhÊt chuyÓn
vµo cê CF vµ gi¸ trÞ trong CL sÏ ®•îc chuyÓn vµo bit thÊp nhÊt. Còng gièng
lÖnh ROL nh•ng CF lµ mét thµnh phÇn.
Có ph¸p:
RCL Dich,1 vµ
RCL Dich,CL
d- RCR
Gièng lªnh RCL nh•ng bit dÞch chuyÓn sang bªn ph¶i.
Có ph¸p:
RCR Dich,1
RCL Dich,CL
This document is created with the unregistered version of Document2PDF Pilot.
Chýõng 7: C¸c chÕ ®é lµm viÖc víi m¶ng vµ ®¸nh ®Þa chØ
I- Giíi thiÖu
Trong nhiÒu øng dông, viÖc nhãm c¸c gi¸ trÞ thµnh tõng tËp hîp lµ rÊt cÇn thiÕt. VÝ dô
chóng ta cÇn ph¶i ®äc mét t©ph hîp c¸c kÕt qu¶ vµ tÝnh to¸n ra gi¸ trÞ trung b×nh cña
chóng, ®Ó lµm viÖc nµy ta th•êng ph¶i l•u gi÷ c¸c kÕt qu¶ thµnh mét d·y ®•îc s¾p xÕp theo
gi¸ trÞ t¨ng dÇn. Trong c¸c ng«n ng÷ lËp tr×nh, cã mét cÊu tróc d÷ liÖu ®•îc gäi lµ m¶ng.
Ta cã c¸c lo¹i m¶ng mét chiÒu, m¶ng hai chiÒu vµ m¶ng ®a chiÒu. Sau ®©y ta sÏ lÇn l•ît
kh¶o s¸t c¸c lo¹i m¶ng trªn ®Ó cã thÓ hiÓu ®•îc c¸ch tæ chøc nhãm gi¸ trÞ trong bé nhí vµ
c¸ch thøc sö dông ng«n ng÷ lËp tr×nh ®Ó thao t¸c víi chóng
II- C¸c lÖnh øng dông.
1- M¶ng 1 chiÒu (1 Dimensional Array).
M¶ng 1 chiÒu lµ mét danh s¸ch c¸c thµnh phÇn ®•îc s¾p xÕp theo thø tù, tÊt c¶
c¸c thµnh phÇn ®Òu cã cïng mét kiÓu d÷ liÖu. NÕu A lµ mét m¶ng, c¸c thµnh phÇn
th•êng ®•îc m« t¶ lµ A[1], A[2], A[3], A[4]…VÝ dô vÒ khai b¸o mét m¶ng
MSG DB 'abcde'
§Þa chØ cña biÕn m¶ng ®•îc gäi lµ ®Þa chØ c¬ së cña m¶ng. NÕu ®Þa chØ ®é dêi
(Offset) ®•îc g¸n cho lµ W (Word) lµ 0200h, trong bé nhí, m¶ng ®•îc s¾p xÕp nh•
sau:
§Þa chØ Offset Ký hiÖu ®Þa chØ Gi¸ trÞ thËp ph©n
0200h W 10
0202h W+2h 20
0204h W+4h 30
0206h W+6h 40
0208h W+8h 50
020Ah W+2A 60
2- To¸n h¹ng DUP
Chóng ta cã thÓ ®Þnh nghÜa nhiÒu m¶ng m¸ c¸c thµnh phÇn chia sÎ gi¸ trÞ khëi
t¹o b»ng c¸ch sö dông to¸n h¹ng DUP (Duplicator). §Þnh d¹ng cña chóng nh• sau
Repeat_Count DUP(Value)
VÝ dô:
Gamma DW 100 DUP(0)
Tæ chøc mét m¶ng gåm 100 Words, Mëi t¹o b»ng 0, t•¬ng tù
Delta DB 212 DUP(?)
Tæ chøc mét m¶ng 212 Words, kh«ng cã gi¸ trÞ khëi t¹o.
3- ChÕ ®é ®¸nh ®Þa chØ
C¸ch thøc mét to¸n h¹ng ®•îc x¸c ®Þnh lµ nhê vµo chÕ ®é ®¸nh ®Þa chØ
(Addressing Modes). ChÕ ®é ®¸nh ®Þa chØ mµ chóng ta kh¶o s¸t tõ tr•íc tíi giê lµ
+ ChÕ ®é thanh ghi (C¸c to¸n h¹ng lµ thanh ghi)
+ ChÕ ®é tøc th× (C¸c to¸n h¹ng lµ h»ng sè)
+ ChÕ ®é Trùc tiÕp (C¸c to¸n h¹ng lµ biÕn)
VÝ dô:
Mov AX,0 (Thanh ghi, h»ng sè)
Add Alpha,AX (BiÕn, thanh ghi).
Cã 4 chÕ ®é ®¸nh ®Þa chØ trong hÖ thèng 8086:
1- Thanh ghi gi¸n tiÕp (Register Indirect)
This document is created with the unregistered version of Document2PDF Pilot.
2- C¬ së (Based)
3- Index
4- Base Index
C¸c chÕ ®é trªn ®•îc sö dông ®Ó ®¸nh ®Þa chØ bé nhí mét c¸ch gi¸n tiÕp.
4- ChÕ ®é dïng thanh ghi gi¸n tiÕp
Trong chÕ ®é nµy, ®Þa chØ ®é dêi cña to¸n h¹ng ®•îc chøa trong thanh ghi. Ta
cã thÓ nãi c¸c thanh ghi hµnh ®éng nh• mét con trá trá ®Õn bé nhí. §Þnh d¹ng nh•
sau:
[Thanh ghi]
C¸c thanh ghi BX, SI, DI hoÆc BP. Víi thanh ghi BX, SI, DI, sè hiÖu ®o¹n
(Segment number) cña to¸n h¹ng ®•îc chøa trong DS. Víi BP, SS , trùc tiÕp chøa sè
hiÖu ®o¹n.
VÝ dô:
SI chøa 0100hvµ Word t¹i 0100h chøa gi¸ trÞ 1234h:
Mov AX,[SI]
+ CPU sÏ kiÓm tra SI vµ lÊy ®Þa chØ Offset 100h,
+ Sö dông ®Þa chØ DS:0100h ®Ó lÊy gi¸ trÞ 1234h
+ ChuyÓn gi¸ trÞ 1234h sang thanh ghi AX
So s¸nh víi:
Mov AX,SI
+ §¬n thuÇn lµ chuyÓn gi¸ trÞ ®Þa chØ 0100h tõ SI vµo AX
5- ChÕ ®é c¬ së vµ chÕ ®é chØ sè ®Þa chØ.
Trong c¸c chÕ ®é nµy, ®Þa chØ Offset cña to¸n h¹ng ®•îc t×m thÊy b»ng c¸ch
thªm vµo mét sè ®•îc gäi lµ Displacement ®Õn néi dung cña thanh ghi. Displacement
cã thÓ lµ::
+ ®Þa chØ Offset cña biÕn
+ H»ng sè (D•¬ng hoÆc ©m)
+ ®Þa chØ Offset cña biÕn trõ ®i hoÆc céng thªm mét h»ng sè.
NÕu A lµ biÕn, ta cã:
A (®Þa chØ Offset cña biÕn)
-2 (H»ng sè)
A + 4 (§Þac chØ Offset cña biÕn céng víi h»ng sè)
Có ph¸p cña to¸n h¹ng:
[Thanh ghi + Displacement]
[Displacement + Thanh ghi]
[Thanh ghi] + Displacement
Displacement + [Thanh ghi]
Displacement[Thanh ghi]
C¸c thanh ghi ph¶i lµ BX, BP, SI hoÆc DI. Trong tr•¬ng fhîp c¸c thanh ghi
BX, SI hoÆc DI ®•îc sö dông, DS chøa sè hiÖu segment cña ®Þa chØ to¸n h¹ng. NÕu
sö dông BP, SS chøa sè hiÖu Segment. ChÕ ®é ®¸nh ®Þa chØ ®•îc gäi lµ c¬ së (Based)
nÕu BX hoÆc BP ®•îc sö dông, ChØ sè (Index) nÕu SI hoÆc DI ®•îc sö dông.
VÝ dô:
W lµ m¶ng Word, BX chøa 4.
Mov AX,W[BX]
Displacement lµ ®Þa chØ Offset cña biÕn W. C©u lÖnh chuyÓn thµnh phÇn
t¹i ®Þa chØ W + 4 vµo thanh ghi AX. §©y lµ thanh phÇn thø 3 cña m¶ng. C©u
This document is created with the unregistered version of Document2PDF Pilot.
lÖnh trªn cã thÓ ®•îc viÕt theo c¸c ®Þnh d¹ng kh¸c nh• sau:
Mov AX,[W+BX]
Mov AX,[BX+W]
Mov AX,W+[BX]
Mov AX,[BX] - W
Mét vÝ dô kh¸c:
SI chøa ®Þa chØ m¶ng W.
Mov AX,[SI + 2]
Displacement lµ 2. C©u lÖnh di chuyÓn néi dung cña W+2 lµ thµnh phÇn
thø 2 cña m¶ng vµo AX. C©u lÖnh cã thÓ ®•îc viÕt theo c¸c ®Þnh d¹ng sau:
Mov AX,[2+SI]
Mov AX,2+[SI]
Mov AX,2[SI]
Mov AX,[SI]+2
6- ChÕ ®é ®¸nh ®Þa chØ c¬ së chØ sè.
Trong chÕ ®ä nµy, ®Þa chØ Offset cña to¸n h¹ng lµ tæng cña:
+ Néi dung thanh ghi BX, BP.
+ Néi dung thanh ghi SI, DI.
+ §Þa chØ Offset cña biÕn
+ H»ng sè (©m hoÆc d•¬ng).
NÕu BX ®•îc sö dông, DS chøa sè hiÖu Segment cña ®Þa chØ to¸n h¹ng. NÕu
BP ®•îc sö dông, SS chøa sè hiÖu Segment. To¸n h¹ng cã thÓ ®•îc biÓu diÔn theo
nhiÒu d¹ng nh• sau:
+ Vatiable[Base_register][Index_register]
+ [Base_register + Index_register + Variable + Constant]
+ Variable[Base_register+Index_register+Constant]
+ Constant[Base_register+Index_register+Variable]
Thø tù trong dÊu [] cã thÓ thay ®æi.
This document is created with the unregistered version of Document2PDF Pilot.
Chýõng 8: Ng¾t BIOS
I- Giíi thiÖu
Trong c¸c phÇn tr•íc, chóng ta ®· ®Ò cËp ®Õn viÖc sö dông lÖnh Int ®Ó gäi c¸c tiÓu
tr×nh. Trong ch•¬ng nµy, chóng ta ®i vµo nghiªn cøu nhiÒu lo¹i ng¾t kh¸c nhau ®Ó tiÕp cËn
tèt h¬n vãi c©u lÖnh Int.
1- DÞch vô ng¾t
a- Ng¾t cøng (hardware Interrupts)
Ng¾t cøng cho phÐp thiÕt bÞ ng•ng c¸c thao t¸c cña CPU. VÝ dô nh• Khi
bµn phÝm ®•îc bÊm, CPU nhËn ®•îc tÝn hiÖu ®äc m· phÝm vµo bé ®Öm bµn
phÝm.
+ Mét thiÕt bÞ phÇn cøng cÇn dÞch vô ®Ó göi tÝn hiÖu yªu cÇu ng¾t
(Interrupt Request) tíi bé xö lý.
+ CPU ng•ng c«ng viÖc ®ang thùc hiÖn, xö lý yªu cÇu vµ chuyÓn ®iÒu
khiÓn cho tiÓu tr×nh ng¾t (Interrupt Routine).
+ DÞch vô ng¾t phôc vô thiÕt bÞ phÇn cøng b»ng c¸ch thùc hiÖn mét sè
thao t¸c vµo ra.
+ §iÒu khiÓn ®•îc tr¶ vÒ t¸c vô gèc t¹i thêi ®iÓm nã bÞ ng¾t (CPU xö lý
tiÕp ch•¬ng tr×nh bÞ ng•ng lóc ®Çu).
TÝn hiÖu ng¾t cã thÓ ®Õn bÊt cø thêi ®iÓm nµo, CPU kiÓm tra tÝn hiÖu yªu
cÇu ng¾t ngay khi xö lý xong mét lÖnh. Trong qu¸ tr×nh kiÓm tra ph¸t hiÖn tÝn
hiÖu ng¾t, CPU ®¸p tr¶ b»ng c¸ch ®•a ra tÝn hiÖu NhËn biÕt (Interrupt
Acknowledge Signal). ThiÕt bÞ ng¾t ®¸p tr¶ b»ng c¸ch göi mét sè 8 bit trªn
BUS d÷ liÖu (Interrupt Number). Mçi thiÕt bÞ sö dông mét sè hiÖu ng¾t ®•îc
x¸c ®Þnh bëi chÝnh chóng. ViÖc göi vµ nhËn tÝn hiÖu ®•îc gäi lµ B¾t tay (Hand
Shaking). §iÒu nµy rÊt cÇn thiÕt ®Ó x¸c ®Þnh thiÕt bÞ yªu cÇu ng¾t
b- Ng¾t mÒm (Software Interrupt)
Ng¾t mÒm ®•îc sö dông bëi c¸c ch•¬ng tr×nh ®Ó yªu cÇu dÞch vô hÖ
thèng. Mét ng¾t mÒm x¶y ra khi mét ch•¬ng tr×nh gäi tiÓu tr×nh ng¾t sö dông
lÖnh INT. §Þnh d¹ng cña lÖnh INT nh• sau:
INT Interrupt_Number
CPU xö lý ng¾t mÒm t•¬ng tù nh• xö lý víi ng¾t cøng
c- Lo¹i trõ xö lý (Processor Exception):
Lo¹i ng¾t thø ba mµ ta ®Ò cËp ®Õn lµ Lo¹i trõ xö lý (Processor Exception).
Ng¾t nµy x¶y ra khi ®iÒu kiÖn t¨ng nhanh trong CPU nh• Trµn phÐp chia (Chia
cho 0), ®iÒu nµy yªu cÇu ®iÒu khiÓn ®Æc biÖt. Mçi ®iÒu kiÖn ®¸p øng mét lo¹i
ng¾t duy nhÊt. VÝ dô Trµn phÐp chia lµ 0, do ®ã khi viÖc trµn x¶y ra trong lÖnh
chia, CPU tù ®éng xö lý ng¾t 0 ®Ó ®iÒu khiÓn viÖc trµn sè.
2- B¶ng Vector ng¾t:
C¸c sè hiÖu ng¾t trong 8086 lµ c¸c gi¸ trÞ Byte kh«ng dÊu, do ®ã cso tíi 256
lo¹i ng¾t. Kh«ng ph¶i sè hiÖu ng¾t nµo cóng ®•îc ®¸p øng bëi tiÓu tr×nh ng¾t. C¸c
nhµ s¶n xuÊt m¸y tÝnh cung cÊp c¸c dÞch vô ng¾t cøng trong ROM, chóng lµ c¸c tiÓu
tr×nh ng¾t BIOS. C¸c tiÓu tr×nh ng¾t hÖ thèng bËc cao nh• Int 21h lµ 1 thµnh phÇn cña
hÖ ®iÒu hµnh DOS ®•îc n¹p vµo bé nhí ngay khi m¸y tÝnh khëi ®éng. Mét vµi sè
hiÖu ng¾t ®•îc dµnh riªng bëi hÖ thèng cña IBM dµnh cho c«ng viÖc dau nµy. C¸c
ng¾t cßn l¹i dµnh cho ng•êi dïng.
This document is created with the unregistered version of Document2PDF Pilot.
Ng¾t 0 1Fh C¸c ng¾t BIOS
Ng¾t2 0 3Fh C¸c ng¾t DOS
Ng¾t 40 7Fh C¸c ng¾t ®Ó dµnh
Ng¾t 80 F0h C¸c ng¾t ROM Basic
Ng¾t F1h FFh Kh«ng sö dông
CPU kh«ng t¹o ra ®Þa chØ ng¾t trùc tiÕp tõ sè hiÖu ng¾t , v× vËy c¸c tiÓu tr×nh
ng¾t ph¶i ®•îc l•u tr÷ t¹i mét vÞ trÝ cè ®Þnh trong c¸c hÖ thèng m¸y tÝnh. C¸c tiÓu
tr×nh ng¾t ®•îc l•u trong mét ®Þa chØ bé nhí ®· ®•îc ®Æt tr•íc vµ ®•îc gäi lµ B¶ng
Vector ng¾t (Interrupt Vector).
C¸c Vector ng¾t ®•îc l•u trong b¶ng Vector ng¾t, nã chiÕm vÞ trÝ t¹i 1 KB ®Çu
tiªn cña bé nhí. Mçi Vector ng¾t ®•îc ®¸nh ®Þa chØ Segment:Offset vµ cã ®é dµi 4
bytes. 4 Byte ®Çu tiªn cña bé nhí lµ Vector ng¾t 0.
§Ó x¸c ®Þnh ®•îc Vector nµo cho tiÓu tr×nh ng¾t, chóng ta chØ viÖc nh©n sè
hiÖu ng¾t víi 4. §iÒu nµy x¸c ®Þnh vÞ trÝ cña bé nhí chøa Offset cña tiÓu tr×nh ng¾t.
§Þa chØ Segment cña tiÓu tr×nh n»m trong Word kÕ tiÕp.
VÝ dô:
Ng¾t 9 (Keyboard)
§Þa chØ Offset ®•îc l•u trong 9 x 4 = 36 = 00024h
§Þa chØ Segment lµ: 24h + 2 = 26h
BIOS khëi t¹o c¸c Vector ng¾t khi m¸y tÝnh ®•îc bËt. C¸c ng¾t DOS
®•îc khëi t¹o khi DOS ®•îc n¹p.
II- C¸c ng¾t BIOS.
1- Ng¾t lo¹i 0h 7h
C¸c ng¾t tõ 0 ®Õn 7 ®•îc dµnh riªng cho Intel. Tõ 0 ®Õn 4 ®· ®•îc ®Þnh s½n.
IBM sö dông 6 vµ 7.
a- Ng¾t 0 - Divide Overflow: X¶y ra khi sö dông c¸c lÖnh DIV hoÆc IDIV g©y
ra trµn sè. TiÓu tr×nh ng¾t 0 hiÓn thÞ th«ng b¸o "Divide Overflow" vµ tr¶
ch•¬ng tr×nh vÒ DOS
b- Ng¾t 1- Single Step: Ng¾t 1 x¶y ra khi cê TF ®•îc bËt.
c- Ng¾t 2- Nonmaskable Interrupt: Ng¾t 2 lµ ng¨t cøng vµ nã kh«ng thÓ che
b»ng c¸ch xo¸ cê IF, IBM sö dông ng¾t nµy ®Ó b¸o hiÖu lçi Parity cho bé nhí
(Bad Chip).
d- Ng¾t 3- Breakpoint: LÖnh "Int 3" lµ lÖnh mét Byte (CCh) trong khi c¸c lÖnh
kh¸c lµ lÖnh 2 Bytes. Ta cã thÓ ®Æt lÖnh Int 3 bÊt k× n¬i nµo trong ch•¬ng tr×nh
®Ó thay thÕ Opcode. Ch•¬ng tr×nh Debug sÏ sö dông lÖnh nµy ®Ó thay thÕ lÖnh
G (Go).
e- Ng¾t 4- Overflow: t¹o ng¾t bëi lÖnh INTO (Ng¾t nÕu bÞ trµn) khi OF ®•îc
thiÕt lËp.
f- Ng¾t 5- Print Screen: ChuyÓn th«ng tin tõ mµn h×nh ra m¸y in. LÖnh Int 5
sÏ ®•îc thùc thi khi nhÊn PrintScreen trªn bµn phÝm.
2- Ng¾t lo¹i 8h Eh
a- Ng¾t 8- Timer: M¹ch Timer cña hÖ thèng IBM t¹o ra mét ng¾t mçi 54.92
This document is created with the unregistered version of Document2PDF Pilot.
ms. Ng¾t BIOS sè 8 phôc vô m¹ch ®ång hå. Sö dông tÝn hiÖu ®ång hå ®Ó l•u
gi÷ ngµy giê hÖ thèng.
b- Ng¾t 9- Keyboard: Ng¾t sinh ra mçi khi mét phÝm ®•îc nhÊn. TiÓu tr×nh
trong BIOS sÏ ®äc m· quÐt vµ l•u tr÷ lªnh bé ®Öm bµn phÝm.
c- Ng¾t Eh- Diskette Error: DiÒu khiÓn lçi æ mÒm.
3- Ng¾t lo¹i 10h 11h: Cã thÓ ®•îc gäi bëi ch•¬ng tr×nh øng dông ®Ó thùc hiÖn c¸c
thao t¸c vµo ra vµ kiÓm tra tr¹ng th¸i.
a- Ng¾t 10h- Video: tiÓu tr×nh ng¾t BIOS 10h ®iÒu khiÓn hiÓn thÞ.
b- Ng¾t 11h- Equipment Check: kiÓm tra cÊu h×nh hÖ thèng PC. M· tr¶ vÒ l•u
trong AX.
c- Ng¾t 12h- Memory Size: Tr¶ l¹i thanh ghi · dung l•îng bé nhí c¬ së.
d- Ng¾t 13h- Disk I/O: ®iÒu khiÓn æ ®Üa, cho phÐp c¸c øng dông thao t¸c vµo ra
víi c¸c æ ®Üa.
e- Ng¾t 14h- Communication: §iÒu khiÓn truyÒn th«ng qua cæng tuÇn tù.
f- Ng¾t 15h- Cassette: Sö dông cho giao diÖn Cassette cña c¸c hÖ thèng cò. Víi
c¸c hÖ thèng AT vµ PS/2 ®•îc sö dông cho rÊt nhiÒu dÞch vô.
g- Ng¾t 16h- Keyboard I/O:§iÒu khiÓn bµn phÝm.
h- Ng¾t 17h- Printer I/O: §iÒu khiÓn m¸y in. tiÓu tr×nh nµy gåm cã 3 chøc
n¨ng tõ 02. Chøc n¨ng 0 göi ký tù ra m¸y in. NhËp AH=0, AL=Ký tù, DX Sè
hiÖu m¸y in.. Chøc n¨ng 1 Khëi t¹o cæng m¸y in. NhËp AH=1, DX=Sè hiÖu
m¸y in. Chøc n¨ng 2 nhËn l¹i tr¹ng th¸i m¸y in, NhËp AH=2, DX = Sè hiÖu
m¸y in. Tr¹ng th¸i sÏ ®•îc l•u trong thanh ghi AH.
i- Ng¾t 18h- BASIC:ChuyÓn ®iÒu khiÓn cho ROM BASIC.
j- Ng¾t 19h- Bootstrap: Reboot hÖ thèng.
k- Ng¾t 1Ah- Time Of Day: Cho phÐp ch•¬ng tr×nh lÊy hoÆc thiÕt lËp bé ®Õm
®ång hå.
l- Ng¾t 1Bh- CRTL-Break:§•îc gäi bëi lÖnh INT 9 khi tæ hîp phÝm
CRTL-Break ®•îc nhÊn. TiÓu tr×nh BIOS chØ chøa cã mét chøc n¨ng IRET.
m- Ng¾t 1Ch- Timer tick: §•îc gäi bëi lÖnh INT 8 mçi khi m¹ch Timer sinh
ng¾t.
n- Ng¾t 1Dh - 1Fh: C¸c vector ng¾t trá tíi d÷ liÖu thay v× c¸c lÖnh. C¸c vector
ng¾t 1Dh, 1Eh vµ 1Fh trá ®Õn c¸c tham sè khëi t¹o Video, Diskette, Ký tù ®å
ho¹ mµn h×nh.
This document is created with the unregistered version of Document2PDF Pilot.
This document is created with the unregistered version of Document2PDF Pilot.
Các file đính kèm theo tài liệu này:
- Comarch08_20050429_013838.pdf