Форум: "Потрепаться";
Текущий архив: 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.037 c