Шаг 22 - Сравнение битов TEST

TEST работает точно так же как и логическая операция AND. Одна разница что результат не сохраняется, но зато выставляются флаги для последующего условного перехода. Данное свойство позволяет использовать TEST для проверки флагов. Итак, как поведет себя тест. А вот так. Переставим какое-нибуть число в двоичной системе.

00000100 (4 в десятичной)

Хотим проверить это число на установку этого бита в 1, получается что нужно написать:

test 4,4

А дальше условный переход например JNZ. Переход будет, если единицы совпадают. Но дело в том, что этот бит установлен не только у 4, но еще и у:

5  000000101
7  000000111
12 00001100

И во всех случаях TEST должна работать одинаково, так как установлен этот бит. Пробуем?

MODEL	TINY
STACK 100h	
DATASEG 
	str1 DB 'Yes three bit $'
	str2 DB 'Not three bit $'
CODESEG		
start:
	mov ax,@data
	mov ds,ax
	mov cx,5
	test cx,4
	jnz yesbit
	mov dx,offset str2
	jmp print
yesbit:
	mov dx,offset str1    
print:      
	mov ah,09h
	int 21h
       
EndProgs:
	mov ah,04Ch
	mov al,1h
	int 21h
end start	

В результате выполнения данной программы появится надпись:

22_1.gif (2925 b)

Все правильно в числе 5 третий бит установлен. Можете поэкспериментировать с другими числами.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 05.12.2001