Для того чтобы понять сам АSМ, то как всё работает в компе. И что делает какая инструкция, то советую почитать В.И. Юров. Assembler. Учебник для ВУЗов (PDF на 15 метров и 638 страниц ) Более подробная инфа по этой книге: Ю70 Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. — 637 с.: ил. ISBN 5-94723-581-1
Спасибо большое. http://wmate.ru/ebooks/book31.html - єто подойдет ? Тут 7 МБ. А второй книги я так понял в электронном варианте нет?
Да там особой разницы нет какая книга первая или вторая. там в принципе одно и тоже, только в одной из них пропускается пару глав которые касаются защищенного режима. Есть подобная книга у Юрова, но там слово Практикум есть.
Покажите пример создание массива и вывода каждого его елемента в цикле через MessageBox с пояснениями.
вот простой пример на FASM Code: format PE GUI entry _start include 'include\win32ax.inc' include 'include\encoding\win1251.inc' section '.code' code import data readable writeable executable library kernel32,'KERNEL32.DLL', user32,'USER32.DLL' include 'include\apia\kernel32.inc' include 'include\apia\user32.inc' _start: xor ecx, ecx ;// = 0 m1: push ecx ; сохраним значение счетчика cinvoke wsprintf, buf, "%i", [mssiv + ecx*4] ; возьмем элемент массива и преобразуем в строку invoke MessageBox, 0, buf, "mas", 0 ; выведем строку pop ecx ; восстановим счетчик inc ecx ; следующий элемент cmp ecx, 3 ; проверим на конец массива jl m1 ;// если меньше то повторим всё invoke ExitProcess,0 mssiv dd 3 dup (10,20,30) ; наш массив из 3-х элементов buf db 10 dup (?) ; временный буфер
ну как бы это сказать тут примерчек довольно большой на эту тему. т.е. нужно создавать форму (на winapi) или юзать диалоги. И там размещать поля ввода. И обрабатывать нажатия - а пароль на FTP - ты хоть сам понял что сказал? Может на HTTP ?
Денкуя да конечно на хостинг на http:// перепутал ....................................................................... да жалко примерчиков нет , ну на этом спасиб GetDlgItemText
Вот хороший пример работы с сокетами (HTTP-протокол, сокс5, прокси): http://kaimi.ru/?p=455 Правда, в этой версии библиотеки не реализована возможность задавать таймауты, думаю, что в скором времени я ее обновлю.
Подскажите почему в lea cx,[BUFER_LEN] заносится адрес, а не данные по этому смещению. Мне нужно в "cx" вставить длину строки, которая в "BUFER_LEN". Подскажите, а то я все перепробовал что знаю. Code: q segment org 100h start: mov ah,3ch lea dx,FILE mov cx,0 int 21h mov ax,3d10h lea dx,FILE int 21h mov bx,ax mov ah,0ah lea dx,BUFER int 21h mov ah,40h lea dx,BUF lea cx,[BUFER_LEN] int 21h mov ah,3eh int 21h ret ;---------data--------- FILE db "1.txt",0 BUFER label byte BUFER_MAX db 254 BUFER_LEN db ? BUF equ $ q ends end start
lea cx,[BUFER_LEN] - LEA - загрузка эффективного адреса, а не данных. Юзай MOV Но не забывай про типы данных. Регистр CX - 16 битный, а BUFER_LEN db ? - 8 битный Так что делай так: mov cx, BUFER_LEN или mov cx, [BUFER_LEN] или mov cx, word [BUFER_LEN] или mov cx, word ptr [BUFER_LEN] ; зависит от компилятора ........ BUFER_LEN dw ?
Спасибо slesh. На масме получается так: Code: mov ah,40h lea dx,BUF mov ch,00 mov cl,byte ptr [BUFER_LEN] int 21h
После компиляции с "movzx" файл почемуто увеличивается на 16 байт посравнению с предыдущим. Программа ничего не делает, а в отладчике вот это: Code: D:\MASM611\BIN>DEBUG 3.COM -R AX=0000 BX=0000 CX=004A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13FE ES=13FE SS=13FE CS=13FE IP=0100 NV UP EI PL NZ NA PO NC 13FE:0100 B43C MOV AH,3C -T AX=3C00 BX=0000 CX=004A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13FE ES=13FE SS=13FE CS=13FE IP=0102 NV UP EI PL NZ NA PO NC 13FE:0102 66 DB 66 -T AX=3C00 BX=0000 CX=004A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13FE ES=13FE SS=13FE CS=13FE IP=0105 NV UP EI PL NZ NA PO NC 13FE:0105 42 INC DX -T AX=3C00 BX=0000 CX=004A DX=0001 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13FE ES=13FE SS=13FE CS=13FE IP=0106 NV UP EI PL NZ NA PO NC 13FE:0106 0100 ADD [BX+SI],AX DS:0000=20CD -
Кстати, как отладчик для DOS COM-программы лично мне нравился не стандартный debug, а прожка под названием avputil.com входящяя в состав старинного антивируса AVP (ныне это каспер) и там был более менее норм отладчик. Хотя как вариант еще юзать отладчик который поставляется в комплекте с Borland Pascal/C++ тоже можно юзать.
Какбы такой вот простой вопрос: Как в masm выводить строку в консоль? Традиционный код Code: mov eax,09 lea edx,strt int 21h при после компиляции и запуска приложения показывает стандартное окно с отправкой отчета.
Помогите пожалуйста кто-то вывести через MessageBoxA текущий айпи адрес, используя gethostbyname. MASM32. Заранее благодарен.
2 SENTRY ты юзаеш 32 код для работы с 16 битной системой. так что пиши Code: mov ah,09 lea dx,strt int 21h