Пишу среду разработки (Эмулятор)… (
http://sas.forumbb.ru/viewtopic.php?id=290)
Правильно ли реализованы следующие процедуры:
Код:
Procedure SBBD;
Begin
if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA-RgD-wremb;
end;
Procedure SBI(b:byte);
Begin
if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA-b-wremb;
end;
Procedure ORI(b:byte);
Begin
RgA:=RgA or b;
SetFlagAc(false);SetFlagC(false);
end;
Не знаю как реализовать Команду DAA на Дельфи, вот есть вырезки из СИ(которого я не знаю) и Асма, помогите транслировать в Дельфи конструкции или опишите пожалуйста каждую строку словами
Код:
Procedure DAA;
case 0x27: // 27 DAA
tmp1 = 0;
if ((RgF & f_C) || ( RgA > 0x99)) tmp1 |= 0x60;
if ((RgF & f_A) || ((RgA & 0x0F) > 0x09)) tmp1 |= 0x06;
tmp2 = RgA + tmp1;
RgF = i8080_flags[tmp2 & 0xFF];
if ((tmp2 ^ RgA ^ tmp1) & 0x10) RgF |= f_A;
if (tmp2 > 0xFF) RgF |= f_C;
RgA = tmp2 & 0xFF;
clock += 4;
izmRgPC(+1);
break;
Вот асм реализация DAA
Код:
; DAA
C27:
mov ax, [RgPSW]
sahf
daa
lahf
mov [RgPSW], ax
ret
вот еще огрызок который мне пытались перевести на паскаль (Дельфи):
Код:
tmp := src1 + src2;
SetFlagAc(((src1 xor src2 xor tmp) and 16) <> 0);
dst := tmp;