Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
	
		
		
			Правила форума
			Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут 
закрыты.
Читайте 
требования к создаваемым темам.
		
		
 
	 
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 13:38 
			
			Ведь так же можно?
Можно, но где гарантия того, что состояние флагов и регистров не измениться после ее завершения? Если ты заглянешь в отладчик, то увидишь, что Винда меняет значения многих регистров после выполнения любой АПИ-функции.
 
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
		
		
			
			- 
				Dex
			
 
			- 
				
 - Постоялец

 
			
			- 
			
			
 
		-  
 
		- Сообщения: 346
 - Зарегистрирован: 09.08.2004 (Пн) 16:11
 
		
	
	
			
			
			
 Dex » 10.03.2006 (Пт) 14:19 
			
			Ну тогда вариант tyomitch'а. (и всё равно мой метод заслуживает внимания, хотя он и не полноценен 

 )
 
			
		 
		
		 
	 
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 14:22 
			
			и всё равно мой метод заслуживает внимания, хотя он и не полноценен 
Любой метод заслуживает внимания и критики, 
особенно если он не полноценен...
 
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
		
		
			
			- 
				keks-n
			
 
			- 
				
 - Доктор VB наук

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2509
 - Зарегистрирован: 19.09.2005 (Пн) 17:17
 - Откуда: г. Москва
 
			- 
				
			
 
		
		
	
	
			
			
			
 keks-n » 10.03.2006 (Пт) 14:46 
			
			Twister
Меняем значение EAX средствами VB  

 :
- Код: Выделить всё
 sub Main
ChangeEAX 15
end sub
Function ChangeEAX(NewValue as long) as Long
'Т. к. возвращяемое значение передаётся через EAX, то...
ChangeEAX=NewValue
end function
Также регистры при выполнении апишки меняет не винда а сама функция, т. к. она их использует.
 
			
		 
		
		 
	 
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 14:51 
			
			ECX, EDX и ESP на закуску слабо?...
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 14:56 
			
			Также регистры при выполнении апишки меняет не винда а сама функция, т. к. она их использует.
Имхо к словам предираться не стоит - все поняли о чем я говорил. Впринципе, тоже касается и вопроса о ЕАХ.
 
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
		
		
			
			- 
				keks-n
			
 
			- 
				
 - Доктор VB наук

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2509
 - Зарегистрирован: 19.09.2005 (Пн) 17:17
 - Откуда: г. Москва
 
			- 
				
			
 
		
		
	
	
			
			
			
 keks-n » 10.03.2006 (Пт) 14:58 
			
			Убедил.
			
		 
		
		 
	 
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 15:00 
			
			keks-n писал(а):Издеваешся? 
Если поправить ESP, то слетит указатель на стек 

 
Конечно, если учесть что в ESP он и храниться... 
 
PS Пора закрывать тему, пошел флуд.
 
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
		
		
			
			- 
				keks-n
			
 
			- 
				
 - Доктор VB наук

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2509
 - Зарегистрирован: 19.09.2005 (Пн) 17:17
 - Откуда: г. Москва
 
			- 
				
			
 
		
		
	
	
			
			
			
 keks-n » 10.03.2006 (Пт) 15:04 
			
			Перечитал тему. Неужели никто не вспомнил про LASM, лежащий на 
www.vbstreets.ru ?
 
			
		 
		
		 
	 
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 15:08 
			
			Я вспомнил. Но собственно, подобный вариант рассматривался здесь и так...
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
		
		
			
			- 
				keks-n
			
 
			- 
				
 - Доктор VB наук

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2509
 - Зарегистрирован: 19.09.2005 (Пн) 17:17
 - Откуда: г. Москва
 
			- 
				
			
 
		
		
	
	
			
			
			
 keks-n » 10.03.2006 (Пт) 15:10 
			
			Дык это... Там вроде как и компилятор спецательный, и модуль генерится автоматом.
			
		 
		
		 
	 
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 15:17 
			
			Да. Там такое есть.
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
	
	
		
		
			
			- 
				Twister
			
 
			- 
				
 - Теоретик

 
			
			- 
			

			
			 
		-  
 
		- Сообщения: 2251
 - Зарегистрирован: 28.06.2005 (Вт) 12:32
 - Откуда: Алматы
 
			- 
				
			
 
		
		
	
	
			
			
			
 Twister » 10.03.2006 (Пт) 16:32 
			
			Судя вот по этому, эта фишка не позволяет обращаться к VB-переменным программы...
- Код: Выделить всё
 Public Sub asmSinCosPointer(ByRef sngCosAngle As Single, ByRef sngSinAngle As Single)
'#ASM_START
'.MMX
' push ebp
' mov ebp, esp
' mov eax, DWORD PTR [ebp+8] ;'//First argument, store in eax (= value now!)
' fld dword ptr [eax] ;'//Get value for cos
' fsincos ;'//Execute sin/cos instruction
' fstp dword ptr [eax] ;'//Store cos in eax (1st param pointer!)
' mov eax, DWORD PTR [ebp+12] ;'//Second argument, store in eax (=value now!)
' fstp dword ptr [eax] ;'//Store sin in eax (2nd param pointer!)
' mov esp, ebp ;'//MOV/POP is much faster
' pop ebp ;'//on 486 and Pentium than Leave
' ret 8
'#ASM_END
End Sub
 
			А я все практикую лечение травами...
		 
		
		 
	 
	
	
	
	Вернуться в Visual Basic 1–6
	
	Кто сейчас на конференции
	Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 2