Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1427969782
KSergey
2015-04-02 13:16
2015.11.29
Как делают вывод подсказок на графиках?


15-1428009054
Dennis I. Komarov
2015-04-03 00:10
2015.11.29
l2tp E:809


15-1428244463
Pavelnk
2015-04-05 17:34
2015.11.29
Учебник Symphony


2-1402861787
eh
2014-06-15 23:49
2015.11.29
Обновление записей в TpFibDataSet


15-1427710781
Дмитрий Белькевич
2015-03-30 13:19
2015.11.29
Небольшая, но анноящая утечка памяти, помогите исправить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский