При операциях вычитания и сложения алгоритм определения А флага у процессора разный (при сложении учитывается перенос из 3-го разряда младшей тетрады в старшую тетраду, а при вычитании наоборот - заём из старшейтетрады в 3-тий разряд младшей тетрады). Задачка заключается в следующем - можно ли исскусственно определить состояние А флага при операции сложения - если эта операция эмулирует операцию вычитания. Т.е. например есть команда sub eax,5 - её можно выразить как add eax,-5. необходимо определить "правильное" состояние А флага после сложения (чтобы оно было таким же как в случае с вычитанием).
а не проще ли провести сложение/вычитание (не совсем понял цель)? флаг имеется ввиду AF? по определению: AF - флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. з.ы. приведи пример, что тебе надо сделать
dermatolog Так при add eax,-5 переноса не будет и это правильно, нужно эмулировать неправильное выполнение операции? Код (Text): mov eax,00000000000000000000000000001111b ; EAX = 0x0F @1: add eax,00000000000000000000000000000001b ; EAX = 0x10 AF = 1 mov eax,00000000000000000000000000010000b ; EAX = 0x10 @2: sub eax,00000000000000000000000000000001b ; EAX = 0x0F AF = 1 mov eax,00000000000000000000000000010000b ; EAX = 0x10 @3: add eax,11111111111111111111111111111111b ; EAX = 0x0F AF = 0 При @1 перенос справа налево, при @2 перенос слева направо, при @3 недонос справа налево
bogrus - да совершенно верно. Нужно сделать так, чтобы состояние флагов было такое же как при SUB, хотя на самом деле вы делаем ADD. Сейчас тестирую такую идею - для определения правильного состояния флагов делаю 5 + not (eax). В этом случае флаги O, P, A и С уже будут правильные. Zerro Crash - нужно всё сделать имея только операцию сложения.
Zerro Crash - для виртуальной машины. Вопрос снят. Всем спасибо за внимание. Задачка про флаги решается "неправильным" сложением 2-х чисел (сейчас протестировал на всех возможных комбинациях - всё отлично).