[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Для того чтобы понять сам АSМ, то как всё работает в компе. И что делает какая инструкция, то советую почитать В.И. Юров. Assembler. Учебник для ВУЗов
    (PDF на 15 метров и 638 страниц )
    Более подробная инфа по этой книге:
    Ю70 Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. — 637 с.: ил. ISBN 5-94723-581-1
     
  2. Adekvatnyj

    Adekvatnyj Member

    Joined:
    28 Oct 2009
    Messages:
    18
    Likes Received:
    25
    Reputations:
    -3
    Спасибо большое.
    http://wmate.ru/ebooks/book31.html - єто подойдет ? Тут 7 МБ.
    А второй книги я так понял в электронном варианте нет?
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Да там особой разницы нет какая книга первая или вторая. там в принципе одно и тоже, только в одной из них пропускается пару глав которые касаются защищенного режима.
    Есть подобная книга у Юрова, но там слово Практикум есть.
     
  4. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Покажите пример создание массива и вывода каждого его елемента в цикле через MessageBox с пояснениями.
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    вот простой пример на 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 (?) ; временный буфер
    
    
     
    1 person likes this.
  6. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0
    киньте примерчик на асме InputBox для ввода логина пароля и чтоб они приходили на фтп
     
  7. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ну как бы это сказать тут примерчек довольно большой на эту тему.
    т.е. нужно создавать форму (на winapi) или юзать диалоги. И там размещать поля ввода.
    И обрабатывать нажатия - а пароль на FTP - ты хоть сам понял что сказал?
    Может на HTTP ?
     
  8. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0
    Денкуя

    да конечно на хостинг на http:// перепутал
    .......................................................................
    да жалко примерчиков нет ,
    ну на этом спасиб
    GetDlgItemText
     
  9. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    тоже бы не отказался от примера работы с сокетами на асме
     
    #629 ZET36, 5 Nov 2009
    Last edited: 5 Nov 2009
  10. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Вот хороший пример работы с сокетами (HTTP-протокол, сокс5, прокси):

    http://kaimi.ru/?p=455

    Правда, в этой версии библиотеки не реализована возможность задавать таймауты, думаю, что в скором времени я ее обновлю.
     
    #630 d_x, 5 Nov 2009
    Last edited: 5 Nov 2009
    1 person likes this.
  11. alexcomb

    alexcomb New Member

    Joined:
    9 Nov 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Подскажите почему в 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
     
    #631 alexcomb, 9 Nov 2009
    Last edited: 9 Nov 2009
  12. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    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 ?
     
    2 people like this.
  13. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    movzx cx, BUFER_LEN
     
  14. alexcomb

    alexcomb New Member

    Joined:
    9 Nov 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Спасибо slesh. На масме получается так:
    Code:
    mov ah,40h
    lea dx,BUF
    mov ch,00
    mov cl,byte ptr [BUFER_LEN]
    int 21h
     
  15. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Это эквивалентно на масме той единственной команде, которая выше в моем предыдущем посте.
     
  16. alexcomb

    alexcomb New Member

    Joined:
    9 Nov 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    После компиляции с "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
    -
     
  17. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Кстати, как отладчик для DOS COM-программы лично мне нравился не стандартный debug, а прожка под названием avputil.com входящяя в состав старинного антивируса AVP (ныне это каспер) и там был более менее норм отладчик.

    Хотя как вариант еще юзать отладчик который поставляется в комплекте с Borland Pascal/C++ тоже можно юзать.
     
  18. SENTRY

    SENTRY New Member

    Joined:
    28 Jul 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Какбы такой вот простой вопрос:
    Как в masm выводить строку в консоль?
    Традиционный код

    Code:
    mov eax,09
    lea edx,strt
    int 21h
    при после компиляции и запуска приложения показывает стандартное окно с отправкой отчета.
     
    #638 SENTRY, 10 Nov 2009
    Last edited: 10 Nov 2009
  19. Sams

    Sams Member

    Joined:
    18 Apr 2009
    Messages:
    247
    Likes Received:
    70
    Reputations:
    17
    Помогите пожалуйста кто-то вывести через MessageBoxA текущий айпи адрес, используя gethostbyname. MASM32. Заранее благодарен.
     
  20. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 SENTRY
    ты юзаеш 32 код для работы с 16 битной системой.
    так что пиши
    Code:
    mov ah,09
    lea dx,strt
    int 21h