Помогли написать вот такую вот програмулину.
Состоит из нескольких частей:
1. В Edit1 вводится десятичное число от 2*10 ^9 до 3*10 ^9, при на жании на Button 1 происходят такие действия: в Edit2 появляется введенное 10-ое число только в 2сс, в Edit3 выделяется 3-ий байт двоичного числа, в Edit4 выделенный 3-ий байт переводится в 10сс.
2.После нажатия Button2 в Edit5 появляется введенное в Edit1 10-ое число только в 2сс, в Edit6 отображается 10 число выполнения операции выделения 3-его байта из Edit5 и замены им 2 и 1 байта
Как подругому можно наисать эту програмку. И как втавить ассемблерную вставку в этот код.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Button2: TButton;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
function IntToBin(dec: int64): string; //Функция перевода десятичного числа в двоичное
function BinToInt(Value: string): int64; //функция перевода двоичного в десятичное
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
str:=IntToBin(strtoint64(Edit1.Text)); //перевод десятичного числа в двоичное с помощью самописной функции IntToBin
Edit2.Text:=str; //Отображение двоичного числа в Edit2
Edit3.Text:=Copy(str,9,8); //3-й байт двоичного числа
Edit4.Text:= inttostr(BinToInt(Edit3.Text)); //перевод 3-го байта в десятичное
end;
{--------------------------------------------------------------------------------}
function TForm1.IntToBin(Dec: int64): string; //Собственно и есть самописная функция перевода десятичного числа в двоичное
var
del: int64;
size: Integer;
str:string;
begin
Result:='';
str:='';
del:=dec;
While (del div 2)<>0 do
begin
str:=str+inttostr(del mod 2);
del:=(del div 2);
end;
str:=str+'1';
size:=Length(str);
while size>0 do
begin
Result:=Result+copy(str,size,1);
size:=size-1;
end;
end;
{--------------------------------------------------------------------------------}
function TForm1.BinToInt(Value: String): int64 ; //Собственно и есть самописная функция перевода двоичного числа в десятичное
var
i:integer;
begin
i:=1;
Result:=0;
while not(i>Length(Value)) do
begin
if copy(Value,i,1)='1' then Result:=Result+strtoint64(Floattostr(IntPower(2,(Length(Value))-i))) ;
i:=i+1;
end;
end;
{--------------------------------------------------------------------------------}
procedure TForm1.Button2Click(Sender: TObject);
var
str:string;
begin
str:=IntToBin(strtoint64(Edit1.Text)); //перевод десятичного числа в двоичное с помощью самописной функции IntToBin
Edit5.Text:=Copy(str,1,8)+Copy(str,9,8)+Copy(str,9,8)+Copy(str,9,8); //Замена в исходном числе 2 и 1 байты 3им и перевести полученное число в 10 сс
Edit6.Text:= inttostr(BinToInt(Edit5.Text)); //перевод в десятичное
end;
end.