💥Logical Instructions

Có thể bạn đã nghe qua các phép toán logic trong các ngôn ngữ lập trình phổ biến như là c và c++. Khi bạn sử dụng các toán tử logic đó thì các bạn sẽ cần phải import 1 thư viện có tên là stdbool.h đúng không?

Thì trong Assembly cũng tương tự như vậy.

Dưới đây là các logical instruction trong assembly.

Case
Instruction
Format

1

AND

AND operand1, operand2

2

OR

OR operand1, operand2

3

XOR

XOR operand1, operand2

4

TEST

TEST operand1, operand2

5

NOT

NOT operand1

Toán hạng đầu tiên trong tất cả các trường hợp có thể là trong thanh ghi hoặc trong bộ nhớ. Toán hạng thứ hai có thể nằm trong thanh ghi / bộ nhớ hoặc giá trị ngay lập tức (constant). Tuy nhiên, các hoạt động từ bộ nhớ đến bộ nhớ là không thể.

Ví dụ cho các trường hợp:

;+----------------------AND instruction-----------------------+
;bl = 0011 1010
and	bl, 0xF   ; This sets BL to 0000 1010
and	al, 0x1    ; Anding with 0000 0001
jz    even_number ; jump to even_number (say after)
;+----------------------OR instruction------------------------+
;bl = 0011 1010
or     bl, 0xF    ; This sets BL to  0011 1111
;+----------------------XOR instruction-----------------------+
xor    eax, eax   ; set eax = 0
;+----------------------TEST instruction----------------------+
test    al, 0x1    ; check even or odd number
jz      EVEN_NUMBER
;+-----------------------NOT instruction----------------------+
; al = 0100 1101
not     al     ; set al = 1011 0010

Chốt lại thì những logical instruction này cực kì hữu ích trong việc tối đa hóa thời gian xử lí dữ liệu và trong 1 vài trường hợp khác. Nếu bạn có thể tận dụng được điều này thì bạn có lợi thế khá lớn so với mình 😔.

Còn nếu bạn chưa hiểu về cách hoạt động của các instruction này thì có thể đọc bài này.

Last updated