ХАНДЫФАР

Инструкция TEST


Логическое сравнение


TEST AL, imm8 - AND imm8 с AL.

TEST AX, imm16 - AND imm16 с AX.

TEST reg/mem8, imm8 - AND imm8 с reg/mem8.

TEST reg/mem16, imm16 - AND imm16 с reg/mem16.

TEST reg/mem8, reg8 - AND reg8 с reg/mem8.

TEST reg/mem16, reg16 - AND reg16 с reg/mem16.


Вычисляет побитовое логическое значение И первого операнда (операнд источника 1) и второго операнда (операнд источника 2) и устанавливает флаги состояния SF, ZF и PF в соответствии с результатом. Затем результат отбрасывается.


Флаги OF и CF установлены в 0. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Состояние флага AF не определено.


В следующем примере мы протестируем значение регистра ax с разными значениями и посмотрим как они влияют на флаги.


  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. code segment public
  5. ____assume cs:code
  6. ____main proc
  7. ________mov_____ax, 0
  8. ________test____ax, ax
  9. ________mov_____ax, -1
  10. ________test____ax, ax
  11. ________mov_____ax, 6
  12. ________test____ax, ax
  13. ________mov_____ax, 4C00h
  14. ________int_____21h
  15. ____main endp
  16. code ends
  17. end main

Инструкция TEST


Логическое сравнение


___________________________TEST AL, imm8 - AND imm8 с AL.

___________________________TEST AX, imm16 - AND imm16 с AX.

___________________________TEST reg/mem8, imm8 - AND imm8 с reg/mem8.

___________________________TEST reg/mem16, imm16 - AND imm16 с reg/mem16.

___________________________TEST reg/mem8, reg8 - AND reg8 с reg/mem8.

___________________________TEST reg/mem16, reg16 - AND reg16 с reg/mem16.


Вычисляет побитовое логическое значение И первого операнда (операнд источника 1) и второго операнда (операнд источника 2) и устанавливает флаги состояния SF, ZF и PF в соответствии с результатом. Затем результат отбрасывается.


Флаги OF и CF установлены в 0. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Состояние флага AF не определено.


В следующем примере мы протестируем значение регистра ax с разными значениями и посмотрим как они влияют на флаги.


  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. code segment public _______; Начало сегмента кода
  5. ____assume cs:code
  6. ____main proc ____________c; Начало процедуры main
  7. ________mov_____ax, 0______; Копируем значение 0 в регистр ax
  8. ________test____ax, ax_____; Тестируем значение регистра ax
  9. ________mov_____ax, -1_____; Копируем значение -1 в регистр ax
  10. ________test____ax, ax_____; Тестируем значение регистра ax
  11. ________mov_____ax, 6______; Копируем значение 6 в регистр ax
  12. ________test____ax, ax_____; Тестируем значение регистра ax
  13. ________mov_____ax, 4C00h__; Копируем значение функции завершения процесса в ah а значение в al
  14. ________int_____21h _______; Вызываем прерывание DOS
  15. ____main endp _____________; Конец процедуры main
  16. code ends _________________; Конец сегмента кода
  17. end main __________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda