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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1080714748
small
2004-03-31 10:32
2004.04.18
*.res


3-1079596544
viktor
2004-03-18 10:55
2004.04.18
размер поля


7-1075994955
Александр из Минска
2004-02-05 18:29
2004.04.18
Проблема с ShellExecute(..., PChar( mailto:..... ), ...)


14-1079808990
Sergey Masloff
2004-03-20 21:56
2004.04.18
Чудеса женской интуиции


1-1080566510
TButton
2004-03-29 17:21
2004.04.18
Сравнить 2 record а