Форум: "Начинающим";
Текущий архив: 2015.11.29;
Скачать: [xml.tar.bz2];
ВнизЦиклы и рисование пикселей на форме . Помогите нормально написат Найти похожие ветки
← →
Dimka-super (2014-06-08 23:40) [0]В книге Криса Касперски есть на транице 48 формула.
ea = BASE * 0x10 + offset
Формула 2 Перевод сегментного адреса в линейный
Пытаюсь что то осмыслить.
Хотелось бы взять и отразить на канве скажем при линейном адресе ea равном ну хоть 1000 область результатов возможных значений BASE и offset.
Вижу на канве пунктирную линию.
А что если линейный адрес ea взять в некиз приделах ну хоть (100-10000) ???
Считаю область значений для каждого значения линейного адреса, и все эти пиксели остаются на канве.
Но что это? Вижеу так же редкий пунктир! Чего не закрашеную жирную область? Не говоря уже о том что вообще все криво но вообще жистокое ощущение что щитается не то что мне хотелось!! Посмотрите, я координатни оси в школе прогулял!
Видите, насколько же рагато все исполняется. Помогите!unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
BASE,offset,ea : integer;
begin
//ea = BASE * 0x10 + offset
//Canvas.Pixels[10,20]:=clBlack;
BASE:=$0; offset:=$0;
ea:=$1000;
for ea:=$100 to $100000 do
begin
for BASE := $1 to $100000 do
begin
for offset := $1 to $100000 do
begin
if (ea = BASE * $10 + offset) then
Canvas.Pixels[BASE ,offset]:=clBlack;
end;
end;
end;
end;
end.
← →
icWasya © (2014-06-09 10:12) [1]Вё это было для Реального режима Intel 8086.
Начиная с Windows 95™, процессоры используют «плоскую» модель памяти, имеет смысл только offset
← →
Dimka-super (2014-06-09 10:25) [2]Спасибо!!!
← →
Anatoly Podgoretsky © (2014-06-09 13:11) [3]К тому же реалный режим не поддерживается компилятором
← →
megavoid © (2014-06-09 14:22) [4]Сейчас другое адресное пространство, вот так можно пройтись по всем offset, код от того же КК, кстати:
procedure TForm1.Button1Click(Sender: TObject);
var p: UINT32;
begin
p := $00001000;
while (p > 0) do begin
if (not IsBadCodePtr(@p)) then
Memo1.Lines.add( format("page: %08xh", [p]) );
Inc(p, $1000);
end;
end;
← →
Dimka-super (2014-06-17 00:05) [5]СПАСИБО ОГРОМНОЕ!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2015.11.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c