На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Простейшее сообщение , вывод 21h
    ExpandedWrap disabled
      s segment
      org 100h
      start:
       
      mov ah, 09
      mov dx, offset string
      int 21
       
       
      int 20
       
       
       
      string db 'PRIVET$'
       
      s ends
      end start

    Прога вроде верно написана
    Но вот при линковке(использую MASM) пишет следующее
    asmmmmmm.obj:fatal error LNK1190: invalid fixup found, type 0x0001
    _
    Link Error

    Изображение не прикрепилось
    В чем дело?

    поравьте, если что не так
    спасибо
    Сообщение отредактировано: maxutov -
      Про компиляцию прог под ДОС с помощью MASM'а я ничего писать не буду, ибо это гемор, поэтому приведу пример для TASM:

      .COM:
      ExpandedWrap disabled
        .MODEL Tiny
        .286
        .CODE
        ORG 100h
         
        SMART
        LOCALS
         
        Start:
         
                int 20h
         
        END     Start

      .EXE:
      ExpandedWrap disabled
        .MODEL Small
        .286
        .STACK 100h
         
        .DATA
         
        .CODE
         
        Start:
         
                .exit
         
        END     Start

      Есть ещё и другие варианты, например, FASM и т.п.

      p.s. И с выбором подраздела поаккуратнее, ты пишешь не под WINDOWS/UNIX!
        Цитата 7in X @
        с помощью MASM'а я ничего писать не буду, ибо это гемор

        :yes: Точнее не скажешь. Но мне непонятна вот эта строчка:
        Цитата maxutov @

        s segment

        Это так сегмент кода объявляется?
        Цитата 7in X @
        поэтому приведу пример для TASM

        Лучше уж так:
        ExpandedWrap disabled
          ; COM
          .MODEL Tiny
          .286
          .CODE
          ORG     100h
           
          SMART
          LOCALS
           
          Start:
           
                          retn
           
          END             Start

        Сократили один байт ;)
          Цитата AndNot @
          Цитата 7in X @
          с помощью MASM'а я ничего писать не буду, ибо это гемор

          :yes: Точнее не скажешь. Но мне непонятна вот эта строчка:
          Цитата maxutov @

          s segment

          Это так сегмент кода объявляется?
          Цитата 7in X @
          поэтому приведу пример для TASM

          Лучше уж так:
          ExpandedWrap disabled
            ; COM
            .MODEL Tiny
            .286
            .CODE
            ORG     100h
             
            SMART
            LOCALS
             
            Start:
             
                            retn
             
            END             Start

          Сократили один байт ;)

          Так объявляется сегмент кода
          Иногда пишут еще CESG
          просто чтоб сократить написал s
            Цитата maxutov @
            Так объявляется сегмент кода

            А где указано что это сегмент кода, а не стека или данных? Где тип выравнивания? Судя по всему ошибка связана именно с выравнивание. Такое у линкеров встречается.

            Добавлено
            Попробовал на тасме. Все отлично скомпилилось. Только вот прога сразу же вылетела :( Глянул повнимательнее и.... е мое, maxutov, у тебяж инты в десятичной системе указаны!!!!!!
            ExpandedWrap disabled
              int 21        ;  т.е. int 15h
                ....
              int 20        ;  int 14h

            какой уж там вывод строки ;)
              А ты не поделишься какая разница между кодом и данными с точки зрения проца?
              Прога правильная, tasm'ом компилится так:
              ExpandedWrap disabled
                tasm /m proga.asm
                tlink /t proga.obj

              Получишь proga.com.
              А насчёт ошибки - я подозреваю что ты виндовым масмом компилишь из-под винды, а он дос проги не собирает.
              Или найди масм под дос - но он под виндой не работает, или возьми тасм и не парься.
                Цитата cppasm @
                А ты не поделишься какая разница между кодом и данными с точки зрения проца?

                Чтобы сгенерить правильный код, асму нужно знать какие сегментные регистры на какой сегмент настроены.
                А для линкера, при сборке, очень важно знать выравнивание сегментов, не знаю какое уж там масм прописывает по умолчанию.
                Цитата cppasm @
                tasm /m proga.asm

                Можно вообще без параметров обойтись ;)
                Кстати в масме не линкуется наверное из-за его тупизны, ему явно надо указать, какие регистры настроены на текущий сегмент.
                попробуй вставить
                ExpandedWrap disabled
                          assume  cs:_TEXT,ds:_TEXT,es:NOTHING

                Если не поможет, то явно объяви сегмент:
                ExpandedWrap disabled
                  _TEXT   segment byte public 'CODE'                
                          assume  cs:_TEXT,ds:_TEXT,es:NOTHING

                Что то из этого должно помочь ;)
                ЗЫ: В тасме это все по умолчанию. Поэтому он без проблем компильнул твой пример.
                  Цитата AndNot @
                  Цитата maxutov @
                  Так объявляется сегмент кода

                  А где указано что это сегмент кода, а не стека или данных? Где тип выравнивания? Судя по всему ошибка связана именно с выравнивание. Такое у линкеров встречается.

                  Добавлено
                  Попробовал на тасме. Все отлично скомпилилось. Только вот прога сразу же вылетела :( Глянул повнимательнее и.... е мое, maxutov, у тебяж инты в десятичной системе указаны!!!!!!
                  ExpandedWrap disabled
                    int 21        ;  т.е. int 15h
                      ....
                    int 20        ;  int 14h

                  какой уж там вывод строки ;)

                  в 16-ричной тоже самое

                  надо разобраться в ошибке

                  invalid fixup found

                  -Added
                  Цитата cppasm @
                  А ты не поделишься какая разница между кодом и данными с точки зрения проца?
                  Прога правильная, tasm'ом компилится так:
                  ExpandedWrap disabled
                    tasm /m proga.asm
                    tlink /t proga.obj

                  Получишь proga.com.
                  А насчёт ошибки - я подозреваю что ты виндовым масмом компилишь из-под винды, а он дос проги не собирает.
                  Или найди масм под дос - но он под виндой не работает, или возьми тасм и не парься.

                  Да компилирую из-под винды
                  а есть MASM под винду?

                  -Added
                  Цитата AndNot @
                  Цитата cppasm @
                  А ты не поделишься какая разница между кодом и данными с точки зрения проца?

                  Чтобы сгенерить правильный код, асму нужно знать какие сегментные регистры на какой сегмент настроены.
                  А для линкера, при сборке, очень важно знать выравнивание сегментов, не знаю какое уж там масм прописывает по умолчанию.
                  Цитата cppasm @
                  tasm /m proga.asm

                  Можно вообще без параметров обойтись ;)
                  Кстати в масме не линкуется наверное из-за его тупизны, ему явно надо указать, какие регистры настроены на текущий сегмент.
                  попробуй вставить
                  ExpandedWrap disabled
                            assume  cs:_TEXT,ds:_TEXT,es:NOTHING

                  Если не поможет, то явно объяви сегмент:
                  ExpandedWrap disabled
                    _TEXT   segment byte public 'CODE'                
                            assume  cs:_TEXT,ds:_TEXT,es:NOTHING

                  Что то из этого должно помочь ;)
                  ЗЫ: В тасме это все по умолчанию. Поэтому он без проблем компильнул твой пример.

                  ExpandedWrap disabled
                    _TEXT   segment byte public 'CODE'                
                    assume  cs:_TEXT,ds:_TEXT,es:NOTHINGorg 100h
                    start:
                     
                    mov ah, 09
                    mov dx, offset string
                    int 21h
                     
                     
                    int 20h
                     
                     
                     
                    string db 'PRIVET$'
                     
                    _TEXT ends
                    end start

                  выдает ошибку
                  underscore required for start address: start
                  Сообщение отредактировано: maxutov -
                    Цитата maxutov @
                    Да компилирую из-под винды
                    а есть MASM под винду?

                    Есть, только он и проги собирает под винду, а у тебя дос.
                      Цитата cppasm @
                      Цитата maxutov @
                      Да компилирую из-под винды
                      а есть MASM под винду?

                      Есть, только он и проги собирает под винду, а у тебя дос.

                      компилирую не из командной строки
                      Захожу в Masm32 editor нажимаю Project->Built all
                      Это и есть MASM под виндоус?
                        Цитата maxutov @
                        в 16-ричной тоже самое

                        Это относится только к неправильному коду, а не к линкеру ;) Даже если бы и скомповал, то программа у тебя в лучшем случае не стала бы работать (что у меня и произошло поначалу).
                        Цитата maxutov @
                        underscore required for start address: start

                        Пессимисты оказались правы, масм действительно требует явного указания сегментов.
                        Вот этот код гарантированно должен скомпилиться:
                        ExpandedWrap disabled
                                   code   SEGMENT
                                   ASSUME  cs:code, ds:code, ss:code, es:code
                           
                                   entry: ORG   0100h
                           
                                   mov  ah,09
                                   mov  dx,offset tststr
                                   int  21h
                                   retn
                           
                                   tststr   db 'PRIVET',13,10,'$'
                           
                                   code   ENDS               ; конец сегмента текста программы
                                          END      entry

                        Если нет, то, как и говорил cppasm, "асма у него не той системы" ;)
                        Цитата maxutov @
                        Захожу в Masm32 editor нажимаю Project->Built all
                        Это и есть MASM под виндоус?

                        Да!
                          Цитата AndNot @
                          Цитата maxutov @
                          в 16-ричной тоже самое

                          Это относится только к неправильному коду, а не к линкеру ;) Даже если бы и скомповал, то программа у тебя в лучшем случае не стала бы работать (что у меня и произошло поначалу).
                          Цитата maxutov @
                          underscore required for start address: start

                          Пессимисты оказались правы, масм действительно требует явного указания сегментов.
                          Вот этот код гарантированно должен скомпилиться:
                          ExpandedWrap disabled
                                     code   SEGMENT
                                     ASSUME  cs:code, ds:code, ss:code, es:code
                             
                                     entry: ORG   0100h
                             
                                     mov  ah,09
                                     mov  dx,offset tststr
                                     int  21h
                                     retn
                             
                                     tststr   db 'PRIVET',13,10,'$'
                             
                                     code   ENDS               ; конец сегмента текста программы
                                            END      entry

                          Если нет, то, как и говорил cppasm, "асма у него не той системы" ;)
                          Цитата maxutov @
                          Захожу в Masm32 editor нажимаю Project->Built all
                          Это и есть MASM под виндоус?

                          Да!

                          Ура!
                          Ничего не вышло!


                          proga.obj:fatal error LNK1190: invalid fixup found, type 0x0001
                          _
                          Link Error

                          вот такую ошибку деает гад
                            maxutov - походу ты компилишь 32-bit Incremental Linker, который делает PE файлы под Windows ®

                            Добавлено
                            скомпилил комок.. ML /omf xz.asm
                            ExpandedWrap disabled
                              .model tiny
                              .686
                              .code
                              .startup
                              mov  ah,09        
                              mov  dx,offset tststr        
                              int  21h        
                              retn        
                              tststr   db 'PRIVET',13,10,'$'        
                              end

                            вобщем по умолчанию масм (у меня 7.0) COFF-файлы генерит.. на что линкер послал
                            ExpandedWrap disabled
                              Microsoft (R) Segmented Executable Linker  Version 5.60.220 Sep  9 1994
                              Copyright (C) Microsoft Corp 1984-1993.  All rights reserved.
                               
                              Object Modules [.obj]: xz.obj /t
                              Run File [xz.com]:  /OUT:"xz.com"
                              LINK : warning L4017: /OUT : unrecognized option name; option ignored
                              List File [nul.map]:
                              Libraries [.lib]:
                              Definitions File [nul.def]:
                              xz.obj : fatal error L1101: invalid object module
                              Object file offset: 1 Record type: 4c


                            Добавлено
                            с ключём /omf
                            ExpandedWrap disabled
                              C:\WINNT\Temp>ML.EXE /omf xz.asm
                              Microsoft (R) Macro Assembler Version 7.00.9466
                              Copyright (C) Microsoft Corporation.  All rights reserved.
                               
                               
                              Microsoft (R) Segmented Executable Linker  Version 5.60.220 Sep  9 1994
                              Copyright (C) Microsoft Corp 1984-1993.  All rights reserved.
                               
                              Object Modules [.obj]: xz.obj /t
                              Run File [xz.com]: "xz.com"
                              List File [nul.map]: NUL
                              Libraries [.lib]:
                              Definitions File [nul.def]:

                            даже не пикнул..

                            Добавлено
                            maxutov-а у тебя какие версии этих консольных тулз ?
                              в хелпах все написано!!!

                              тока мне самому ниче не ясно :lol:
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0656 ]   [ 15 queries used ]   [ Generated: 19.11.25, 11:30 GMT ]