b) IF_THEN_ELSE
4.1.1 Leơnh AND,O
R v à XOR
LeơnhAND,ORvàXORthựchieơncácchứcnaíngđúngnhưteđngĩicụanó . Cúphápcụachúng là:
AND destination,source OR destination,source XOR destination,source
Kêtqụacụaleơnhđượclưutrữtrongtoánhángđích dođóchúngphạilàthanh ghihoaịcvịtrínhớ.Toánhángnguoănlàcótheơlàhaỉngsô,thanhghihoaịcvịtrínhớ. Dĩnhieđnhaitoánhángđeăulàvịtrínhớlàkhođngđượcphép.
Aûnh hưởng đên các cờ :
CáccờSF,ZFvàPFphạnánhkêtqụa AFkhođngxácđịnh
CF=OF=0
Đeơthayđoơitừngbittheoýmuônchúngtaxađydựng toánhángnguoăntheo kieơumaịtná(mask).Đeơxađydựngmaịtnáchúngtasửdúngcáctínhchâtsauđađy cụacácphéptoán AND,ORvàXOR:
• LeơnhORcótheơdùngđeơđaịt(set)1chotoánhángđíchnêumaịtnábaỉng1
• LeơnhXORcótheơdùngđeơlâyđạotoánhángđíchnêumaịtnábaỉng1.LeơnhXOR cũngcótheơdùngđeơxóanoơidungmoơtthanhghi(XORvớichínhnó)
Vídú:XoábitdâucụaALtrongkhi các bitkháckhođngthayđoơi Giại:DùngleơnhANDvớimaịtná0111111=7Fh
AND AL,7Fh ;xóabitdâu(dâu+)cụaAL
Vídú:Set1chocácbitMSBvàLSBcụaAL,cácbitkháckhođngthayđoơi. Giại:Dùngleơnh ORvớimaịtná10000001=81h
OR AL,81h ;set1choLSBvàMSBcụaAL Vídú:ThayđoơibitdâucụaDX
• LeơnhANDcótheơdùngđeơxóa(clear)toánhángđíchnêumaịtnábaỉng0 b AND1= b b OR0 =b bXOR0=b
Giại:DùngleơnhXORvớimaịtná1000000000000000=8000h XOR DX,8000h
Cácleơnhlogiclàđaịcbieơtcóíchkhithựchieơncácnhieơmvúsau:
Đoơi
moơt sô dưới dáng ASCII thành moơt sô
Giạsửraỉngchúngtađĩcmoơtkýtựtừbànphím baỉnghàm1ngaĩt21h.Khi đóALchứamãASCIIcụakýtự . Đieăunàycũngđúngnêukýtựđólà moơtsô (digitalcharacter). Vídúnêuchúngtagỏsô5thìAL=35h (ASCIIcodefor5)
Chương4:Các leơnh dịch và quay 47
Đeơchứa5tređnALchúngtadùngleơnh: SUB AL,30h
Cómoơt cáchkhácđeơlàmvieơc nàylàdùngleơnhANDđeơxóanửabytecao (highnibble=4bitcao) cụaAL:
AND AL,0Fh
Vìcácsôtừ0-9cómãASCIItừ30h-39h,neđncáchnàydùngđeơđoơimĩisô ASCIIrathaơpphađn.
Chươngtrình hợpngữđoơimoơtsô thaơpphađnthànhmãASCIIcụachúngđược xemnhưbàitaơp.
Đoơi
chữ thường thành chữ hoa
MãASCIIcụacáckýtựthườngtừa-z là61h-7AhvàmãASCIIcụacácký tựhoatừ A-Zlà41h-5Ah.Giạsử DLchưákýtựthường,đeơđoơinóthànhchữhoa tadùngleơnh:
SUB DL,20h
Nêuchúngtasosánhmãnhịphađn tươngứngcụakýtựthườngvàkýtựhoa thìthâyraỉng chưcaănxóabitthứ 5 thìsẽđoơikýtựthườngsangkýtựhoa.
Character Code Character Code
a(61h) 01100001 A(41h) 01000001 b(62h) 01100010 B(42h) 01000010 .
.
z(7Ah) 01111010 Z(5Ah) 01011010
Cótheơxóabitthứ5 cụaDLbaỉngcáchdùngleơnhANDvớimaịtná 11011111=DFh
AND DL,0DFh ;đoơikýtựthườngtrongDLsangkýtựhoa
Xóa moơt thanh ghi
Chúngtacótheơdùngleơnhsauđeơxóa thanhghiAX: MOV AX,0
hoaịc SUB AX,AX XOR AX,AX
leơnh MOV phạiđượcdùngđeơ xoá1vịtrínhớ.
Kieơm tra moơt thanh ghi có baỉng 0 ?
Chương4:Các leơnh dịch và quay 48
Thaycholeơnh CMPAX,0 Ngườitadùngleơnh
OR CX,CX
đeơkieơmtraxemCXcóbaỉng0haykhođngvìnólàmthayđoơicờZF(ZF=0nêuCX=0 )
4.1.2 Leơnh NOT
LeơnhNOTdùngđeơlâybù1(đạo) toánhángđích.Cúpháplà: NOT destination
KhođngcócờnàobịạnhhưởngbởileơnhNOT Vídú:Lâybù1AX
NOT AX