Показать сообщение отдельно
  #2  
Старый 15.07.2012, 18:24
sas9568635 sas9568635 вне форума
Прохожий
 
Регистрация: 14.07.2012
Сообщения: 21
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Вот получил один ответ правда с припиской "КАЖЕТСЯ ТАК". Верно ли реализована команда в ЭТОМ примере?...
========================
Данная команда преобразует двоичное число в аккумуляторе в его двоично-десятичное представление.
1. Если младшие 4 бита аккумулятора представляют число, которое больше 9, или если триггер вспомогательного переноса регистра признаков AC=1, то содержимое аккумулятора увеличивается на 6. В противном случае изменение не происходит.
2. Если старшие 4 бита аккумулятора представляют число, которое больше 9, или если триггер переноса (заема) регистра признаков CY=1, то старшие 4 бита аккумулятора увеличиваются на 6. В противном случае изменение не происходит.
Код:
Procedure DAA;
Var
  tmp : Word;
Begin 
  tmp:=RgA And $FF;
  If (((RgA And $F)>9) Or FlagAc) Then
  Begin
    Inc(tmp,6);
    SetFlagAc(True);
  End;
  If (((tmp And $F0)>$90) Or FlagC) Then
  Inc(tmp,$60);
 
  RgA:=Lo(tmp);
  SetFlagC((tmp And $100)<>0);
  SetFlagZ(RgA=0);
end;

Кажется так.
========================
Ответить с цитированием