Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

ASM   Найти похожие ветки 

 
xman   (2004-03-26 22:18) [0]

как в ставке на ASM написать такой код:
Var x,y,a,b,c: integer
Begin
a:=10; b:=25; c:=40; x:=15;
if   x<10 then  y:=(a+b+c)*x
   else
if x>20 then  y:=a*x+b-c;
end;


 
Sergey Masloff   (2004-03-26 22:20) [1]

asm
end;

Твой код только гораздо эффективнее.


 
xman   (2004-03-26 22:21) [2]

мне надо чтобы это действие было на языке АССЕМБЛЕР


 
Sergey Masloff   (2004-03-26 22:28) [3]

На языке ассемблера или в asm-вставке?
Потому что в ASM-вставке написать так:

MyVar      DW      ?

нельзя

а можно только

procedure XXX;
var
 MyVar : Word;
asm
 mov AX, MyVar
end;


Это по существу. А писать за тебя эту ерунду что ты привел мне лень, извини уж...


 
xman   (2004-03-26 22:41) [4]

ок. А сможешь ли ты мне кратко написать как выполняется if then else в ассемблере


 
Andy BitOff ©   (2004-03-26 22:42) [5]

Ну ты дал. может тебе еще ключи от квартиры где деньги лежат?
Используй;
popa
mov присвоить
cmp сравнить
jnz если не равно
imul *
add +
sub -
pusha


 
Andy BitOff ©   (2004-03-26 23:12) [6]

Тьфу, не корректно прочитал =)
JG если больше
JL если меньше


 
Anatoly Podgoretsky ©   (2004-03-27 02:24) [7]

Есть окно CPU в нем ты как раз увидишь этот код на ассемблера.


 
Andy BitOff ©   (2004-03-27 02:27) [8]

>Anatoly Podgoretsky ©   (27.03.04 02:24) [7]

Надо было не говорить, пускай сам напишет.


 
Andy BitOff ©   (2004-03-27 02:30) [9]

А так можно было бы и написать, дело не хитрое.

var
 y:integer;
begin
 asm
   pusha
   mov eax,10
   mov ebx,25
   mov ecx,40
   mov edi,15
   cmp edi,10
   jg @loop1
   add eax,ebx
   add eax,ecx
   imul eax,edi
   jmp @loop2
@loop1:
   cmp edi,20
   jl @loop2
   imul eax,edi
   add eax,ebx
   sub eax,ecx
@loop2:
   mov y,eax
   popa
 end;


А вот, что покажет CPU


Unit1.pas.61: a:=10; b:=25; c:=40; x:=15;
O044CD82 BAOAOOOOOO       mov edx,$0000000a
O044CD87 B919000000       mov ecx,$00000019
O044CD8C BB28000000       mov ebx,$00000028
O044CD91 B80FOOOOOO       mov eax,$0000000f
Unit1.pas.62: if   x<10 then  y:=(a+b+c)*x
O044CD96 83F80A           cmp eax,$0a
O044CD99 7DOC             jnl +$0c
O044CD9B 03CA             add ecx,edx
O044CD9D 03D9             add ebx,ecx
O044CD9F OFAFD8           imul ebx,eax
O044CDA2 895DFC           mov [ebp-$04],ebx
O044CDA5 EBOF             jmp +$0f
Unit1.pas.64: if x>20 then  y:=a*x+b-c;
O044CDA7 83F814           cmp eax,$14
O044CDAA 7EOA             jle +$0a
O044CDAC OFAFDO           imul edx,eax
O044CDAF 03CA             add ecx,edx
O044CDB1 2BCB             sub ecx,ebx
O044CDB3 894DFC           mov [ebp-$04],ecx
Unit1.pas.66: end.


 
Anatoly Podgoretsky ©   (2004-03-27 15:10) [10]

Andy BitOff ©   (27.03.04 02:30) [9]
Что же ты делаешь, только что говорил, чтобы сам, нехорошо.



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

Форум: "Потрепаться";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.043 c
1-1080635700
V-Isa
2004-03-30 12:35
2004.04.18
Программно подменить содержимое буфера обмена


1-1080572787
Xobbit
2004-03-29 19:06
2004.04.18
PopupMenu и чужое окно


1-1080812596
Viking
2004-04-01 13:43
2004.04.18
Отладка DLL в Delphi 5 под Win XP


3-1079615388
Лысый
2004-03-18 16:09
2004.04.18
ADOConnection


14-1080439909
Думкин
2004-03-28 06:11
2004.04.18
С днем рождения! 28 мамрта.





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