Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   asm (https://forum.antichat.xyz/showthread.php?t=50773)

rubik-nerubik 08.10.2007 17:42

asm
 
люди как реализовать что-то вроде цикла на асме? типа если один регистр больше другого, то перейти на метку, допуситм а1?

Kaimi 08.10.2007 17:46

Читай http://ha.hoha.ru/a/Assembler/stats12/stat.php

Sn@k3 08.10.2007 17:49

cmp ax, bx
jg a1
a1: ......

rubik-nerubik 08.10.2007 17:59

во. резпект. спасибо

slesh 08.10.2007 20:02

Берешь Fasm и юзаешь макрос цикла ;)

Ni0x 08.10.2007 20:14

slesh, не катит. Из-за таких вот советов, люди начинают ассоциировать ассемблер с каким-то макро-извращением. Теряется красота... но это мое мнение.

slesh 08.10.2007 23:38

2 Ni0x я знаю. Но судя по задаваемому вопрос топикстартер не читал описание инструкций j* jn* я просто предлогаю альтернативное решение.
я конечно сам не сторонник макросов, но бывает легче написать в макросном виде нежели в обычном.
типа условие (ecx<>0 and ((ecx>10) and (eax<20) or (ecx>100) and (eax<200) or (ecx>1000) or (eax<2000)) легче в виде макроса написать.

grinay 09.10.2007 02:18

Цикл издревне в сияруси юзается посредством регистра cx-сейчас ecx
Делается метка цикла например
loop1:
и далее идет тело цикла
например
cmp eax,0
jz end_loop;перейти если eax=0
inc eax;инкремент eax к примеру
loop loop1;как дойдет до этого места декриментируется ecx и переход обратно на метку loop1 и вот тебе и весь цикл
П.С.В ecx должно быть нужное тебе значение.Тоесть сколько циклов например 10=10h

_Great_ 09.10.2007 08:15

Цитата:

Цикл издревне в сияруси
Вообще говоря использовать можно хоть ESP как счетчик.. если сместо loop loop1 поставить dec esp / jnz loop1

Цитата:

П.С.В ecx должно быть нужное тебе значение.Тоесть сколько циклов например 10=10h
Поправка - если в ECX был ноль, цикл выполнится 4294967295 раз.

ЗЫ. Топикстартеру - читать описание инструкций loop, jmp, j*/jn*.
Тема закрыта


Время: 14:05