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

Вниз

Проблемка с asm   Найти похожие ветки 

 
Dll   (2004-05-07 18:30) [0]

Почему в следующем коде переменная Ch заносится в регистр al как 0, хотя сама не нулевая? А есть ли в делфи ее собственные методы работы с битами?

procedure TForm1.Button1Click(Sender: TObject);
var s, d: string[100];
   Ch: byte;
   x: byte;
begin
  s:=Edit1.Text;
  for x:=1 to 20 do
  begin
    for i:=1 to Length(S) do
    begin
      Ch:=byte(s[i]);
      asm
        mov al,Ch
        xor al,x
        mov Ch,al
      end;
      D[i]:=chr(Ch);
    end;
    RichEdit1.Lines.Add(D);
  end;
end;


 
ASMiD ©   (2004-05-07 18:39) [1]

Вообще Ch bkb CH или ch - это все имя регистра, а транслятор внутри Asm твою переменную с таким именем в гробу видел и берет регистр и ничего тебе толком не возвращяет. Так что обзови ее как-нибудь подругому.


 
WebErr ©   (2004-05-07 18:40) [2]

asm
 xor Ch, x
end;


 
WebErr ©   (2004-05-07 18:41) [3]

Вернее, с учётом [1]:

asm
  xor SomeValue, SomeCount
end;


 
ASMiD ©   (2004-05-07 18:42) [4]


> WebErr ©


> asm
>  xor Ch, x
> end;

Я от тебя такого не ожидал!


 
WebErr ©   (2004-05-07 18:49) [5]


> ASMiD ©   (07.05.04 18:42) [4]

Я привык ещё с Сишных времён различать регистры в коде, поэтому анализ кода в языках с встроенным пофигизмом как Pascal и Assembler. ^^


 
div ©   (2004-05-07 18:51) [6]

вообще asm тут и не нужен ))) и Ch тоже... )
кстати где твое i: Integer ? )))

procedure TForm1.Button1Click(Sender: TObject);
var
 s,
 d: string[100];
 x: byte;
 i: Integer;
begin
 s := Edit1.Text;
 for x := 1 to 20 do
 begin
   for i := 1 to Length(S) do
     D[i] := chr(byte(s[i]) xor x);
   RichEdit1.Lines.Add(D);
 end;


 
Dll   (2004-05-07 18:52) [7]

Спасибо, ASMiD. Я и не заметил, что это тоже регистр :) Но появилась другая проблемка - появляется ошибка в строке RichEdit1.Lines.Add(D). С чем это может быть связано?


 
ASMiD ©   (2004-05-07 18:53) [8]

Извини за грубость.
Это я узнал еще в паскале, а сейчас может и нигде не пишут.


 
div ©   (2004-05-07 18:57) [9]

и нафиг string[100]?
s, d: string; -  и фсе)


 
ASMiD ©   (2004-05-07 18:58) [10]

А на него все свойства правильно заданы?


 
Dll   (2004-05-07 19:00) [11]

>и нафиг string[100]?
>s, d: string; -  и фсе)

Если написать s, d: string, то ошибка появляется еще в строке  D[i]:=chr(crr). Но почему?


 
Anatoly Podgoretsky ©   (2004-05-07 19:01) [12]

Обращение к невыделенной памяти D[i]


 
div ©   (2004-05-07 19:02) [13]

разве что сделать еще вот так:

 ...
 s := Edit1.Text;
 SetLength(d, Length(s);
 ...

извиняюсь )


 
Dll   (2004-05-07 19:03) [14]

Все свойсва RichEdit пока по умолчанию.


 
Dll   (2004-05-07 19:09) [15]

Все, спасибо большое. Действительно не хватало SetLength(d, Length(s)). Наверно, я еще сильно ламоват :)


 
ASMiD ©   (2004-05-07 19:21) [16]

Вообще-то это странно.
Я написал то же самое и прошло безо всяких SetLength.
var
s:string[100];
begin
 s:=Edit1.Text;
 RichEdit1.Lines.Add(s);
end;


 
Alex Konshin ©   (2004-05-07 20:42) [17]

Ты еще больше удивишься, но с s: string это тоже сработает.
Все-таки почитай про тип String.



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

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

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1084273112
Aleksandr
2004-05-11 14:58
2004.05.23
Как организовать зеркальную замену битов в байте?


14-1083347554
gn
2004-04-30 21:52
2004.05.23
Microsoft будет давать всплывающие уроки по безопасности


11-1072174683
zeddy
2003-12-23 13:18
2004.05.23
Link MASM coff .obj files


1-1084349409
glGLU
2004-05-12 12:10
2004.05.23
Click


14-1083581374
McSimm
2004-05-03 14:49
2004.05.23
В форумах произошли изменения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский