Leơnh AND,OR và XOR

Một phần của tài liệu Giáo trình hợp ngữ (Trang 53 - 55)

b) IF_THEN_ELSE IF condition is true

4.1.1Leơnh AND,OR và XOR

Leơnh AND,OR và XOR thực hieơn các chức naíng đúng như teđn gĩi cụa nĩ . Cú pháp cụa chúng là :

AND destination , source OR destination , source XOR destination , source

Kêt qụa cụa leơnh được lưu trữ trong tốn háng đích do đĩ chúng phại là thanh ghi hoaịc vị trí nhớ . Tốn háng nguoăn là cĩ theơ là haỉng sơ , thanh ghi hoaịc vị trí nhớ . Dĩ nhieđn hai tốn háng đeău là vị trí nhớ là khođng được phép .

Aûnh hưởng đên các cờ :

Các cờ SF,ZF và PF phạn ánh kêt qụa AF khođng xác định

CF=OF=0

Đeơ thay đoơi từng bit theo ý muơn chúng ta xađy dựng tốn háng nguoăn theo kieơu maịt ná ( mask) . Đeơ xađy dựng maịt ná chúng ta sử dúng các tính chât sau đađy cụa các phép tốn AND ,OR và XOR :

b AND 1 = b b OR 0 = b b XOR 0 = b b AND 0 = 0 b OR 1 = 1 b XOR 1 = not b

• Leơnh AND cĩ theơ dùng đeơ xĩa ( clear) tốn háng đích nêu maịt ná baỉng 0

• Leơnh OR cĩ theơ dùng đeơ đaịt ( set) 1 cho tốn háng đích nêu maịt ná baỉng 1

• Leơnh XOR cĩ theơ dùng đeơ lây đạo tốn háng đích nêu maịt ná baỉng 1 . Leơnh XOR cũng cĩ theơ dùng đeơ xĩa noơi dung moơt thanh ghi ( XOR với chính nĩ )

Ví dú : Xố bit dâu cụa AL trong khi các bit khác khođng thay đoơi Giại : Dùng leơnh AND với maịt ná 0111111=7Fh

AND AL,7Fh ; xĩa bit dâu ( dâu + ) cụa AL

Ví dú : Set 1 cho các bit MSB và LSB cụa AL , các bit khác khođng thay đoơi . Giại : Dùng leơnh OR với maịt ná 10000001 =81h

OR AL,81h ; set 1 cho LSB và MSB cụa AL Ví dú : Thay đoơi bit dâu cụa DX

Giại : Dùng leơnh XOR với maịt ná 1000000000000000=8000h XOR DX,8000h

Các leơnh logic là đaịc bieơt cĩ ích khi thực hieơn các nhieơm vú sau :

Đoơi moơt sơ dưới dáng ASCII thành moơt sơ

Giạ sử raỉng chúng ta đĩc moơt ký tự từ bàn phím baỉng hàm 1 ngaĩt 21h . Khi đĩ AL chứa mã ASCII cụa ký tự . Đieău này cũng đúng nêu ký tự đĩ là moơt sơ ( digital character) . Ví dú nêu chúng ta gỏ sơ 5 thì AL = 35h ( ASCII code for 5)

Chương 4 : Các leơnh dịch và quay 47 Đeơ chứa 5 tređn AL chúng ta dùng leơnh :

SUB AL,30h

Cĩ moơt cách khác đeơ làm vieơc này là dùng leơnh AND đeơ xĩa nửa byte cao (high nibble = 4 bit cao ) cụa AL :

AND AL,0Fh

Vì các sơ từ 0-9 cĩ mã ASCII từ 30h-39h , neđn cách này dùng đeơ đoơi mĩi sơ ASCII ra thaơp phađn .

Chương trình hợp ngữ đoơi moơt sơ thaơp phađn thành mã ASCII cụa chúng được xem như bài taơp .

Đoơi chữ thường thành chữ hoa

Mã ASCII cụa các ký tự thường từ a-z là 61h-7Ah và mã ASCII cụa các ký tự hoa từ A-Z là 41h -5Ah . Giạ sử DL chưá ký tự thường , đeơ đoơi nĩ thành chữ hoa ta dùng leơnh :

SUB DL,20h

Nêu chúng ta so sánh mã nhị phađn tương ứng cụa ký tự thường và ký tự hoa thì thây raỉng chư caăn xĩa bit thứ 5 thì sẽ đoơi ký tự thường sang ký tự hoa .

Character Code Character Code (adsbygoogle = window.adsbygoogle || []).push({});

a(61h) 01100001 A (41h) 01000001 b (62h) 01100010 B ( 42h) 01000010 .

.

z ( 7Ah) 01111010 Z ( 5Ah) 01011010

Cĩ theơ xĩa bit thứ 5 cụa DL baỉng cách dùng leơnh AND với maịt ná 11011111= DF h

AND DL,0DFh ; đoơi ký tự thường trong DL sang ký tự hoa

Xĩa moơt thanh ghi

Chúng ta cĩ theơ dùng leơnh sau đeơ xĩa thanh ghi AX : MOV AX,0

hoaịc SUB AX,AX XOR AX,AX

Leơnh thứ nhât caăn 3 bytes trong khi đĩ 2 leơnh sau chư caăn 2 bytes . Nhưng leơnh MOV phại được dùng đeơ xố 1 vị trí nhớ .

Chương 4 : Các leơnh dịch và quay 48 Thay cho leơnh

CMP AX,0 Người ta dùng leơnh

OR CX,CX

đeơ kieơm tra xem CX cĩ baỉng 0 hay khođng vì nĩ làm thay đoơi cờ ZF ( ZF=0 nêu CX=0 )

4.1.2 Leơnh NOT

Leơnh NOT dùng đeơ lây bù 1 ( đạo) tốn háng đích . Cú pháp là : NOT destination

Khođng cĩ cờ nào bị ạnh hưởng bởi leơnh NOT Ví dú : Lây bù 1 AX

NOT AX

Một phần của tài liệu Giáo trình hợp ngữ (Trang 53 - 55)