HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.08.2007, 12:43
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
С нами: 10182506

Репутация: 1393


По умолчанию

Цитата:
Сообщение от Ni0x  
z01b,
http://forum.codenet.ru/showthread.php?t=6245
Вообщем то tasm уже не актуален.
а почему не актуален?

С масм32 попробовал компилить, и тоже самое ошибка (
hello.obj : warning LNK4033: converting object format from OMF to COFF
hello.obj : error LNK2001: unresolved external symbol ExitProcess
hello.obj : error LNK2001: unresolved external symbol MessageBoxA
LINK : error LNK2001: unresolved external symbol _mainCRTStartup
hello.exe : fatal error LNK1120: 3 unresolved externals

Дайте плз ктонибудь Hello World, на масм 9.0

Последний раз редактировалось begin end; 14.08.2007 в 21:19.. Причина: в один пост
 
Ответить с цитированием

  #2  
Старый 13.08.2007, 13:18
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

ты исходник выкладывай.
Цитата:
а почему не актуален?
Разработка прекращена очень давно, сейчас им почти не пользуются. Наиболее перспективный сейчас fasm.
 
Ответить с цитированием

  #3  
Старый 13.08.2007, 14:25
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
С нами: 10175096

Репутация: 105
По умолчанию

Хочу прочитать данные реестра (MASM32 v 8.2), но в итоге получаю Win32 ошибку

где ошибка?

Код:
.386
.model flat, stdcall  ; 32 bit memory model
option casemap :none  ; case sensitive

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\advapi32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\user32.lib

.data
SubKey  db "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
vName   db "DataLayer"
rt      dd 1
rc      dd 127
mbCapt  db "RegValue",0

.data?
key  db ?
buf  db ?

.code
start:
  invoke RegOpenKeyEx, HKEY_LOCAL_MACHINE,  SubKey, 0, KEY_ALL_ACCESS, key
  invoke RegQueryValueEx, key, vName, NULL, addr rt, addr buf, addr rc
  invoke RegCloseKey, key
  invoke MessageBox, NULL, addr buf, addr mbCapt, MB_OK
  invoke ExitProcess, 0
end start
 
Ответить с цитированием

  #4  
Старый 13.08.2007, 15:11
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

z01b,
Код:
.386 
.model flat,stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib 
include \masm32\include\user32.inc 
includelib \masm32\lib\user32.lib 

.data 
MsgBoxCaption  db "Antichat",0 
MsgBoxText       db "Hello World!",0 

.code 
start: 
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK 
invoke ExitProcess, NULL 
end start
 
Ответить с цитированием

  #5  
Старый 14.08.2007, 11:52
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
С нами: 11710201

Репутация: 134
По умолчанию

t04 > Лови:
Код:
.386
.model flat, stdcall  ; 32 bit memory model
option casemap :none  ; case sensitive

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\advapi32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\user32.lib

.data?
key  dd	 	?
buf  db  1024 dup (?) 

.data
SubKey  	db 		"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0
vName   	db 		"DataLayer",0
mbCapt  	db 		"RegValue",0
rt      	dd		REG_SZ
bsz     	dd 		sizeof buf

.code
start:
  invoke RegOpenKeyEx, HKEY_LOCAL_MACHINE, addr SubKey, 0, KEY_QUERY_VALUE, addr key
  invoke RegQueryValueEx, key, addr vName, 0, addr rt, addr buf, addr bsz
  invoke RegCloseKey, key
  invoke MessageBox, NULL, addr buf, addr mbCapt, MB_OK
  invoke ExitProcess, 0
end start
 
Ответить с цитированием

  #6  
Старый 14.08.2007, 13:01
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
С нами: 10175096

Репутация: 105
По умолчанию

1 На Delphi есть функция - ParamStr, она возвращает параметры командной строки, типа ParamStr(0) это полный адрес программы, ParamStr(1) это первый параметр и т.д.
Есть ли аналог на МАСМ32?
2 Как на МАСМ32 юзать массивы? Например запустить цикл типа
Код:
for i := n to m do
  WriteLn(A[i])
если не трудно то приведите Plz примеры
 
Ответить с цитированием

  #7  
Старый 14.08.2007, 13:30
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

t04, в теме есть пример работы с аргументами командной строки на фасме, но на масм не проблема перевести.
http://forum.antichat.ru/thread28998.html
Массивы:
Код:
size equ 20
.data?
numb WORD size dup(?) ; область памяти для 20 идущих подряд WORD
.code
start:
mov ecx, size ; для цикла
mov bx, 1
xor edi, edi ; обнуляем edi
next:
mov numb[edi], bx
inc bx
add edi, 2 ; к следующему числу(word - 2 байта)
loop next
invoke ExitProcess, 0
end start
Регистр edi хранит адрес слова, полученный относительно начала массива, значит само слово будет выглядеть как numb[edi]. При edi равном нулю, mov numb[edi], bx запишет содержимое bx в нулевое слово массива. Надеюсь принцип понятен.
 
Ответить с цитированием

  #8  
Старый 14.08.2007, 13:32
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
С нами: 11710201

Репутация: 134
По умолчанию

Цитата:
Сообщение от Ni0x  
в теме есть пример работы с аргументами командной строки на фасме
Вот и он.
 
Ответить с цитированием

  #9  
Старый 19.08.2007, 18:16
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
С нами: 10175096

Репутация: 105
По умолчанию

Народ, вот прочитал значение реестра в массив, а как можно узнать присутствие в нем определенной строки? или как массив в строку переделать, а потом сравнить?
нужно типа следующего:
Код:
if Pos(subStr,Str) then
  WriteLn(SubStr+' присутствеут в '+Str)
else
  WriteLn(SubStr+' отсутствеут в '+Str);
нашел такое:
Код:
	cmp buf,'SubString'
	je label1;или как я понял можно и jz

	label1:
	invoke MessageBox, NULL, addr buf, addr Prisutstvuet, MB_OK

	label2:
	invoke MessageBox, NULL, addr buf, addr Otsutstvuet, MB_OK
но не разобрался как с этим работать

ЗЫ нужно что бы учитывало реестр символов.
 
Ответить с цитированием

  #10  
Старый 19.08.2007, 18:26
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

lstrcmpA()
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 92 14.05.2010 17:59
ОС с нуля z01b С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 36 03.07.2008 15:30



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.