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

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

  1. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    push offset str
    call [lstrlen]

    или rep scasb

    либо мой способ,повторять пока байт не будет равен = 00.
     
  2. taha

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

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Jes, держи сорц http://pastebin.x3k.ru/388
    Исправил ряд детских ошибок на синтаксис, коечто оптимизировал, сделал код читабельным... компелируй
     
    1 person likes this.
  3. lomerok

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

    Joined:
    23 Apr 2008
    Messages:
    141
    Likes Received:
    8
    Reputations:
    0
    ASM compiling

    Компилирую фаил , выдаёт ошибку :
    Code:
    C:\MASM611\BIN>amake 1ll
    
    C:\MASM611\BIN>ml /c /coff "1ll.asm"
    Microsoft (R) Macro Assembler Version 6.11
    Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.
    
     Assembling: 1ll.asm
    
    C:\MASM611\BIN>link /SUBSYSTEM:CONSOLE "1ll.obj"
    Microsoft (R) Incremental Linker Version 6.00.8168
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    
    LINK : error LNK2001: unresolved external symbol _start
    1ll.exe : fatal error LNK1120: 1 unresolved externals
    
    ------------------
    
    Код фаила :
    Code:
    .386
    .model flat.stdcall
    .code
    start:
    mov eax, 2
    add eax, 3
    ret
    end start
    
    ---------------

    что нетак ?
     
    #283 lomerok, 16 May 2008
    Last edited: 16 May 2008
  4. taha

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

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    1. код нужно вставлять в теги CODE
    2. Для подобных вопросов существует тема https://forum.antichat.ru/thread40850.html
    3. раз уж ты всетаки здесь запостил... скинь бат-файл для компиляции, который ты используешь... меня смущает link /SUBSYSTEM:CONSOLE "1ll.obj"
    4. после flat запятая
     
  5. lomerok

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

    Joined:
    23 Apr 2008
    Messages:
    141
    Likes Received:
    8
    Reputations:
    0
    Code:
    
    ml /c /coff "%1.asm"  
    link /SUBSYSTEM:CONSOLE "%1.obj"
    
    
     
  6. taha

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

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    я уже подзабыл масм, но разве не так?
    ml /c /coff 1.asm
    link /SUBSYSTEM:CONSOLE /LIBPATH:c:\1.obj
     
  7. lomerok

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

    Joined:
    23 Apr 2008
    Messages:
    141
    Likes Received:
    8
    Reputations:
    0
    Непомогает ....
    ------
    Люди добрые и злые , накачал я кучу книг по асме и чёта както ниодну непонимаю , где команды гдепеременные , неужели я , такой тупой , или увсех так было в начале ...
    посоветуйте как мне быть , мож книжку какуюто особенную . пожалусто ..
     
    #287 lomerok, 16 May 2008
    Last edited by a moderator: 16 May 2008
  8. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Скачать
     
    1 person likes this.
  9. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    lomerok
    >где команды гдепеременные

    Обычно сначала оператор (комманды) потом 2 операнда чере запятую. прим:

    MOV AX,BX

    MOV - Оператор
    AX & BX - Операнды

    Переменные - это те которые обьявленны в секции .data (инициализированные) .data?(неинициализированные), а в .const - константы
    > неужели я , такой тупой

    Строгое замечание!
    Нет, ты не тупой. Просто не понял вот и всё. Мы все до единого сначала даже ползать не умели а сейчас бегаем! Вот видишь. Ничё короче страшного в том что ты не понимаешь пока что. Не считай себя тупым никогда. Быть новичком не стыдно, а если какой нить кретин тебя за это будет когда нибудь упрекать - бей в носопырку, пусть юшкой умоется! Короче, удачи в этом деле. Даже самые крутые программисты когда-то тупо сидели и втыкали в талмуды Кнутта с умным видом, но нихера не понимали. Всё приходит со временем.

    De-visible:не надо постить подряд, есть кнопка Edit
     
    #289 KindEcstasy, 16 May 2008
    Last edited by a moderator: 16 May 2008
    1 person likes this.
  10. lomerok

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

    Joined:
    23 Apr 2008
    Messages:
    141
    Likes Received:
    8
    Reputations:
    0
    Повторюсь .. Компилирую фаил :
    Code:
     .386
     .model flat,stdcall
     .code
    start:
    mov eax, 8
    add eax, 8 ;eax = 10???
    ret
    end start
    
    
    Выдаёт :

    Code:
    C:\MASM611\BIN>amake 1ll
    
    C:\MASM611\BIN>ml /c /coff "1ll.asm"
    Microsoft (R) Macro Assembler Version 6.11
    Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.
    
     Assembling: 1ll.asm
    
    C:\MASM611\BIN>link /SUBSYSTEM:CONSOLE "1ll.obj"
    Microsoft (R) Incremental Linker Version 6.00.8168
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    
    LINK : error LNK2001: unresolved external symbol _start
    1ll.exe : fatal error LNK1120: 1 unresolved externals
    
    Код bat фаила :

    Code:
    ml /c /coff "%1.asm"
    link /SUBSYSTEM:CONSOLE "%1.obj"
    
    Вопрос : Что нетак , в чём проблемма ...???
     
  11. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    lomerok
    Ты пытаешься программу под win32 откомпилмит 16 битным компайлером. Распространённая ошибка среди начинающих. Программа написана верно на 100%. Чтобы всё компайлелось нормально - нужно скачать MASM32 (http://www.masm32.com/)

    В твоём случае прошрамма должна быть такой:

    Code:
    cseg segment
    assume cs:cseg,ss:cseg,es:cseg,ds:cseg
    org 100h
    begin:
    mov eax, 8
    add eax, 8 ;eax = 10???
    int 20h
    cseg ends
    end begin
    
    компалеть вот так:
    Code:
    ML.EXE PROG.ASM /AT
    
    Параметр "/AT" указывает ассемблеру что после ассемблирования, в случае, если ошибок нет, следует запустить компоновщик (LINK.EXE) и передать ему параметры для создания файла типа COM. Параметр /AT вводится ЗАГЛАВНЫМИ буквами

    x0man
    Не стоит так говорить, если одни не помогают - это не значит что и все такие злые и корыстные. И если все форумы - это гомно, хуле вы сидите тогда в этом гомне? =\ фсадкороче =\
     
    #291 KindEcstasy, 17 May 2008
    Last edited: 17 May 2008
    2 people like this.
  12. NorB

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

    Joined:
    20 Jul 2007
    Messages:
    109
    Likes Received:
    12
    Reputations:
    -2
    Уря я написал для курсача 2 проги уря)
    в итого для вычисления длины строки я юзал ээээ с десяток строк левого кода но вот есть такое:

    ReadStr StrHead
    mov al, StrHead+1

    ReadStr- мой макрос для ввода строки, а вот дальше помешается в al строка +1, тоесть вроде как длина строки. Но вот вопрос как мне потом ей пользоваться, в ax она как бы и нехраниться и тп, карочи я немагу его занести в другие регистры, допустим командой такой:
    mov dx, al
    так нельзя, но можно так:
    mov dl, al
    почему нельзя 1 способом?=\
    я непойму матиматику обьясните ктото шо тут за матиматика, обьясните как в каком формате там записана длина строки, в al и тд...?=(
     
  13. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    movz так умеет..

    а можно
    xor dh, dh
    mov dl, al; dx=al
     
  14. lomerok

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

    Joined:
    23 Apr 2008
    Messages:
    141
    Likes Received:
    8
    Reputations:
    0
    To KindEcstasy:
    Вот что выдалось ...:

    Code:
    C:\MASM611\BIN>ML 1ll.asm /AT
    Microsoft (R) Macro Assembler Version 6.11
    Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.
    
     Assembling: 1ll.asm
    1ll.asm(5): error A2085: instruction or register not accepted in current CPU mode
    1ll.asm(6): error A2085: instruction or register not accepted in current CPU mode
    
    Устанавил masm32 , всё заработало ....
    Всем спасибо ....
    Особенно KindEcstasy...
     
    #294 lomerok, 17 May 2008
    Last edited: 17 May 2008
  15. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    lomerok
    потому что используются 32 битные регистры eax, нужно заменить на ax
     
  16. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Можно пожайлусто привести в пример исходник который читает содержимое из текстового файла и выводит его содержимое в мессадж боксе
     
  17. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    ZET36 Я бы посоветовал начать с простого САМОУЧИТЕЛЯ Assembler.
    Книги можно взять тут -> forum.antichat.ru/thread31398.html
     
    1 person likes this.
  18. ASERVIC

    ASERVIC New Member

    Joined:
    22 May 2008
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    Подскажите кто-нибудь, где можно почитать про структуры данных Bios и Dos? И где можно узнать про состав, назачение и длину данных в Ms-dos
     
  19. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    2 > ASERVIC
    [cod e][/cod e]
     
  20. ASERVIC

    ASERVIC New Member

    Joined:
    22 May 2008
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    А можно поподробнее, пожалуйста?..