1) в [esi] есть двойное слово как теперь от туда записать по одну слову в регистры eax,ecx ? делал так(в Delphi 7) но масм это не распознает, пишет : invalid instruction operands 2) есть переменная text где вместо text при компиляции нужно подставить ее адрес . как в масм организовать такую запись? 3) Как в масм создать массив ? вот так: правильно ?
1) регистры eax, ecx это уже двойные слова (dword), с ними нужна просто mov eax, [esi] mov ecx, [esi+4] ; если нужен qword если хочешь прочитать слово (word) или байт (byte) со знаковым расширением то movsx eax, word ptr [esi] movsx eax, byte ptr [esi] 2) описание переменных .data? myVar1 dd ? .data myVar1 dd 5 myText db 'Привет', 0 адресовать можно и метками .code myLable: 3) массив .data? m1 dd 20 dup (?) ; неинициализированный массив .data m2 dd 30 dup (5) ; инициализированный массив вместо dd, можно db, dw 4) POINT STRUCT x DWORD ? y DWORD ? POINT ENDS .data? myPoint1 POINT <?> myPointArray POINT 30 dup (<?>) .data myPoint2 POINT {35, 10} PS и почитай маны их море
http://www.wasm.ru/publist.php?list=1 http://www.wasm.ru/forum/viewtopic.php?id=20506 http://www.wasm.ru/forum/viewforum.php?id=18 (<- тут найдёшь названия книг и с ними в искалку - практически все асм книги про masm)
есть ли возможность в масм получить размер структуры? что то типа sizeof(). Или нужно самому считать размер структуры ?
есть такой код: Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\comdlg32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\include\comdlg32.lib szText MACRO Name,Text:VARARG LOCAL lbl jmp lbl Name db Text,0 lbl: ENDM .const .data? HDC hdc; hPrinter HANDLE<?> infodoc DOCINFO<?> pd PRINTDLG <0> .data szMessage db "Message",0 .code start: call AllocConsole mov ecx,sizeof infodoc mov edi, offset infodoc rep stosb mov pd.lStructSize,sizeof pd mov pd.Flags,PD_RETURNDC push offset pd call PrintDlg push 0 call ExitProcess end start при компиляции пишет: fatal error lnk1104 le "\masm32\include\comdlg32.lib" Вчем тут ошибка? вроде все нормально подключил
В какой библиотеке масма есть есть такие функ: StartDoc, StartPage ? В мсдн сказано что они есть в windows.h(то есть как я понимаю в масме это windows.inc). Вот что подключил И все равно пишет что не знает StartDoc, StartPage .