Вивчення команди DAA
DAA |Десятичная| + + + + + | Преобразование содержимого аккумулятора в
|коррекция | | двоично-десятичный код.
37 | DAA | 2-10 коррекция | +++ ++ | 1 | 4 | Десятичная коррекция.
procedure TestComDAA; var RgA,RgF : integer;// àäðåñ â ïàìÿòè {27}Procedure daa;Var tmp1,tmp2:Integer; const f_A=16; f_C=1; const flags: array [0..256]of Byte=( 70,2,2,6,2,6,6,2,2,6,6,2,6,2,2,6,2,6,6,2,6,2,2,6,6,2,2,6,2,6,6,2,2,6,6,2,6,2,2, 6,6,2,2,6,2,6,6,2,6,2,2,6,2,6,6,2,2,6,6,2,6,2,2,6,2,6,6,2,6,2,2,6,6,2,2,6,2,6,6, 2,6,2,2,6,2,6,6,2,2,6,6,2,6,2,2,6,6,2,2,6,2,6,6,2,2,6,6,2,6,2,2,6,2,6,6,2,6,2,2, 6,6,2,2,6,2,6,6,2,130,134,134,130,134,130,130,134,134,130,130,134,130,134,134,130, 134,130,130,134,130,134,134,130,130,134,134,130,134,130,130,134,134,130,130,134,130, 134,134,130,130,134,134,130,134,130,130,134,130,134,134,130,134,130,130,134,134,130, 130,134,130,134,134,130,134,130,130,134,130,134,134,130,130,134,134,130,134,130,130, 134,130,134,134,130,134,130,130,134,134,130,130,134,130,134,134,130,130,134,134,130, 134,130,130,134,134,130,130,134,130,134,134,130,134,130,130,134,130,134,134,130,130, 134,134,130,134,130,130,134,0); begin tmp1:=0; if (((RgF and f_C)<>0) or (RgA>$99)) then begin tmp1:=(tmp1 or $60);end; if(((RgF and f_A)<>0) or ((RgA and $0F)>$09)) then begin tmp1:=(tmp1 or $06);end;tmp2:=RgA+tmp1; RgF:=flags[tmp2 and $FF]; if (((tmp2 xor RgA xor tmp1) and $10)<>0)then begin RgF:=(RgF or f_A); end; if (tmp2>$FF) then begin RgF:=(RgF or f_C);end;RgA:=tmp2 and $FF;{PEAC;}end; var Res1:TSStr1m; C1,CodeSym:Cardinal; begin InitSStr(Res1); for c1:=0 to 255 do begin RgF:= RgF and 16; RgF:= RgF and 1; //f_A=16; f_C=1; RgA:=c1; addSStr(Res1,IntToStr(RgA)+' = '); daa; addSStr(Res1,IntToStr(RgA)+#13+#10); end; for c1:=0 to 255 do begin RgF:= RgF and 16; RgF:= RgF and 1; //f_A=16; f_C=1; RgA:=c1; addSStr(Res1,IntToHEX(RgA,2)+' = '); daa; addSStr(Res1,IntToHEX(RgA,2)+#13+#10); end; WriteFileSStr('DAA.txt',Res1); end;