Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

Знатоки АСМА. Что это за фигня??   Найти похожие ветки 

 
Карелин Артем ©   (2003-11-20 14:36) [0]

Гляжу я на исходники программы распознавания образов и думаю, что автору пора завязывать с мухоморами и всякими фиолетовыми таблетками. Что он хотел выразить в выделенном жирном текстом сегменте?

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
i,j:inttype;
ins1,outs:array of real;
c:char;
tmp1,tmp2:byte;
begin
if Edit1.text<>"" then
begin
SetLength(ins1,1024);
SetLength(outs,16);

for i:=0 to 31 do
for j:=0 to 31 do
begin
if Image1.Canvas.Pixels[j,i]=clblack then
ins1[((i*32)+j)]:=0.01;
if Image1.Canvas.Pixels[j,i]=clwhite then
ins1[((i*32)+j)]:=1;
end;

c:=Edit1.text[1];

///////////////////////////////
for i:=0 to 7 do
begin
tmp2:=i+1;
asm
mov ah,00h
mov al,c
mov cl,tmp2
sal ax,cl
and ah,01h
mov tmp1,ah
end;
outs[7-i]:=tmp1;
end;

for i:=0 to 7 do
if outs[i]=0 then
outs[i]:=0.01;

for i:=7 to 15 do
outs[i]:=1;

///////////////////////////////
net[1].adddata(ins1,outs);

end;
MemAloc;
end;


 
mrcat ©   (2003-11-20 14:58) [1]

>Карелин Артем © (20.11.03 14:36)

это ты лучше у разработчика спроси :) у меня с распознованием образов нелады :)


 
Карелин Артем ©   (2003-11-20 15:10) [2]

Тут что-то типа выделения битов по одному. Спасибо Анатолию Подгорецкому и Игорю Шевченко за консультацию.


 
Nikolay M. ©   (2003-11-20 15:12) [3]

> asm
> mov ah,00h
> mov al,c
В регистр ax заносится код 1-го символа из Edit1.Text, для 0, скажем, это будет 48

> mov cl,tmp2
> sal ax,cl
Код символа (в ах) возводится в i+1 степень.

> and ah,01h
В ah остается его 0-й бит.

> mov tmp1,ah
Сохраняем результат в tmp1

> end;


Итого вся конструкция аналогична следующему:
tmp1 := ((c shl (i + 1)) and (1 shl 16));
если нигде не напутал


 
Anatoly Podgoretsky ©   (2003-11-20 16:30) [4]

for i:=0 to 7 do outs[i] := (c shr i) and 1;


 
BlackTiger ©   (2003-11-20 18:23) [5]

Удалено модератором
Примечание: Offtopic


 
han_malign ©   (2003-11-20 18:35) [6]

Ну судя по использованию sal подразумевалось использование флага переноса знага, но видимо он не вспомил команды условного перехода по этому знаку, и намудрил в запарке.

З.Ы. Я, кстати, тоже навскидку не помню... :)))

З.З.Ы. Хотя, по нажатию кнопки, в единоразовой операции, мудрить что-то с ассемблерной оптимизацие - маразм. И тогда уж весь цикл оптимизировать надо было, а не тело.



Страницы: 1 вся ветка

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
1-36646
azazello
2003-11-30 00:16
2003.12.12
Как добавить фоновый рисунок в TRichEdit?


14-36835
mfender
2003-11-19 16:09
2003.12.12
Забавное мнение...


1-36637
Soi
2003-12-01 10:36
2003.12.12
Регулярные выражения


3-36536
P0tia
2003-11-20 16:19
2003.12.12
Определение типа таблицы


1-36737
Dracula2000
2003-12-02 10:30
2003.12.12
Grid or DBGrid