Pokaż wyniki od 1 do 8 z 8

Temat: Kompilacja asemblerowa

  1. #1
    Użytkownik
    Dołączył
    07-06-2008
    Posty
    24

    Domyślnie

    Błąd wyskakuje podczas linkowania, a jego treść to " Fatal: 16 bit segments not supported in module program.asm "
    Używam tasm.

    Oto kod programy:

    .model tiny
    .code


    start:
    mov ah, 9
    mov dx, offset info
    int 21h

    mov ah, 0
    int 16h

    mov ax, 4C00h
    int 21h

    info db "Czesc.$"

    end start[/b]
    Dlaczego tak jest?

  2. #2
    Dawni Moderatorzy
    Dołączył
    26-12-2005
    Skąd
    z Polski
    Posty
    704

    Domyślnie

    Odpowiedz znaleziona na google w 30 sekund:
    "You are trying to make a 16 bit exe out of a 32 bit linker/assembler. Try using a differrent (16 bit version ) of the linker."

  3. #3
    Użytkownik
    Dołączył
    07-06-2008
    Posty
    24

    Domyślnie

    <div class='quotetop'>CYTAT(Mo4x @ 6.09.2009, 8:08) <{POST_SNAPBACK}></div>
    Odpowiedz znaleziona na google w 30 sekund:
    "You are trying to make a 16 bit exe out of a 32 bit linker/assembler. Try using a differrent (16 bit version ) of the linker."[/b]
    Mam tylko w folderze tasm32.exe i tlink32.exe. Co zrobić żeby działało pod wersje 32?

  4. #4
    Użytkownik
    Dołączył
    07-06-2008
    Posty
    24

    Domyślnie

    Zmieniłem trochę kod i teraz mam tak

    .486 ;to chyba oznacza ze chce pracować na wersji 32?
    .model flat, stdcall

    .const
    info db &#39;Witaj Świecie.$&#39;,0

    .code



    start:

    mov ah, 9

    mov dx, offset info

    int 21h

    mov ah, 0

    int 16h

    mov ax, 4C00h

    int 21h



    end start[/b]
    Teraz podczas "tasm32 program.asm" mam taki oto błąd: "Offset or pointer is 32-bit
    ---------------------------------------------------------------
    Udało się ;p Znalazłem jakiś inny tasm (bez 32). Czym one się różnią? I dlaczego poza "witaj świecie" są jakieś dziwne znaki?

  5. #5

    Domyślnie

    twój kod jest 16-bitowy. to jest niemożlywo korzystać z 32-bit linkera dla tego kodu. znależ tlink (bez "32") w seci albo spróbuj alink

    pozdraw
    -------------------
    .486 ; oznacza że można używać intrukcji procesora 486
    .model flat ; oznacza ze chce pracować na wersji 32

    kluczi komandniego rządka tasm/tlink także mają znaczenije
    szurik

  6. #6
    Użytkownik
    Dołączył
    07-06-2008
    Posty
    24

    Domyślnie

    Napisze to co pisałem wyżej:
    Udało się ;p Znalazłem jakiś inny tasm (bez 32). Czym one się różnią? I dlaczego poza "witaj świecie" są jakieś dziwne znaki?

    Jak rozpoznać czy kod jest 16-bitowy czy 32?

  7. #7

    Domyślnie

    Dziwne znaki są przez to że w okienku cmd jest inne kodowanie niż w Windows. Bitowość rozpoznaje się po rejestrach i budowie kodu.

  8. #8

    Domyślnie

    bitowość się wyznaczają przez model albo przez "use 32"/"use 16". bitowość wpływa na adresacju. 32-bitow linker nie może linkować 16-bitowy aplikacji, a 16-bitow linker nie może linkować 32-bitowy aplikacji, ale nie ma różnicy jaky asembler używać dla asembluwanja: 32-bitow albo 16-bitow.

    "$" - znaczka konca rządka dla funkcji 9 DOS i "0" tam nie trzeba. Jesli chcesz programuwać dla DOS - trzeba uczyć się funkcji DOS i BIOS, również jesli chcesz programuwać dla Windows - trzeba uczyć się WinAPI. tylko asemblera będze zamało

    pozdraw
    szurik

Podobne wątki

  1. Kompilacja ._.
    Przez Michael_Fick
    w forum Delphi/Pascal
    Odpowiedzi: 3
    Ostatni post / autor: 25-03-2008, 11:25
  2. kompilacja c#
    Przez Stigmata
    w forum C/C++/C#
    Odpowiedzi: 4
    Ostatni post / autor: 23-09-2007, 21:31
  3. [C++] Kompilacja
    Przez Zergi
    w forum C/C++/C#
    Odpowiedzi: 3
    Ostatni post / autor: 20-09-2007, 19:42
  4. Kompilacja
    Przez fi15
    w forum Linux\BSD\Unix
    Odpowiedzi: 3
    Ostatni post / autor: 07-11-2006, 16:06
  5. kompilacja
    Przez MrLovaLova
    w forum Exploity
    Odpowiedzi: 11
    Ostatni post / autor: 30-12-2005, 10:52

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •