Пример использования логических операций AND, OR, TEST в ассемблере?
Пример - хранение флагов неких состояний.
Чтобы не использовать для хранения одного состояния (0 или 1) целого байта - берем байт, и устанавливаем некий флаг - к примеру в определенном бите:

mov ah, myflag
or ah, b00001000 # установили флаг
mov myflag, ah   # обратно сохранили в переменную
...
mov ah, myflag  # берем обратно нашу переменную
and ah, b00001000 # и проверяем наше состояние
jz прыгнули_ если_флаг_равен_0
...
mov ah, myflag  # берем обратно нашу переменную
and ah, b00000010 # проверяем наше состояние в каком-то другом бите
jz прыгнули_ если_флаг_равен_0
Таким образом - в одном байте мы храним 8 состояний
А эти состояния - могут быть к примеру - некая двумерная матрица - к примеру для игры в морской бой 10x10 где 1-это наличие корпуса корабля в клетке 0 -отсутствие
И вместо хранения  10*10 = 100 байт мы будем хранить 10*10//8 = 12+1 = 13 байт с учетом остатка
13 байт против 100 байт - экономия существенная, особенно если у нас ограничение по ресурсам (микроконтроллеры)
самое частое - логические условия, объединение нескольких условий

if((var & 1) == 1) {} ... может стать TST

if(var1 == 0 && var2 == 1) может использовать AND

и так далее