Что делает инструкция `test`?

Я смотрю несколько небольших ассемблерных кодов, и мне сложно понять инструкцию TEST и ее использование. Я смотрю на следующий код в конце цикла:

8048531:    84 c0                   test   al,al
8048533:    75 dc                   jne    8048511 <function+0x2d>

То, как я понимаю TEST, состоит в том, что он немного похож на оператор AND и устанавливает некоторые флаги. Наверное, я не совсем понимаю, как работают флаги. test al,al Мне кажется, что он проверяет одни и те же младшие биты и всегда будет получать одинаковые результаты.

Может кто-нибудь объяснить?

Ответ 1

Он проверяет регистр на себя, просто чтобы установить флаги. Результат будет отличаться для нуля и ненулевого значения.