Ошибка при линковке в TASM

Тема в разделе "WASM.BEGINNERS", создана пользователем _Poly_Glot_, 27 июл 2007.

  1. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Здрасте все =)
    Я тут книжку читаю: А.Панов "Ассемблер. Экспресс-курс". Там есть исходник Hello World проги. Я пробую её откомпиллировать, всё нормально, а при линковки ругается:
    Fatal: No program entry point

    Вроде перепечатал исходник верно, раз 10 перепроверил:
    Код (Text):
    1. code segment
    2. assume CS:code, DS:data
    3. mov ax,data
    4. mov ds,ax
    5.  
    6. mov dx, offset mes
    7. mov ah,9
    8. int 21h
    9.  
    10. mov ah,10h
    11. int 16h
    12.  
    13. mov ax,4C00h
    14. int 21h
    15. code ends
    16.  
    17. data segment
    18.  
    19. mes db 'Hello, world!',13,10,'$'
    20. data ends
    21. end
    Линкую и компиллирую как в книжке написано:
    tasm /l hello
    tlink hello

    Помогите, кто чем может...
     
  2. tender_swallow

    tender_swallow New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    45
    _Poly_Glot_
    Копмилятор тебе говорит, что у тебя не указана точка входа в программу. Как я понимаю, нужно указать этот адрес.
    Код (Text):
    1.  code segment
    2.  start:
    3.   бла-бла-бла
    4.    ....
    5.  code ends
    6.  ...
    7.  end start
     
  3. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    tender_swallow
    Спасибо, ты был прав. Правда потом линковщик ещё ругался, что нету сегмента стека, пришлось ещё добавить

    stack segment stack
    db 256 dup (?)
    stack ends

    и заработало. =)
    Я не понимаю таких людей, которые, как автор, в книжках пишут листинги с ошибками/недочётами... С вопросом разобрался, считаю вопрос закрытым
     
  4. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Здрасьте ещё раз =)
    Щас пытался, как в этой же книжке приведён исходник скомпилировать и слинковать один экзэшник из двух .asm, но при линковке выскакивает непонятная ошибка:

    Error: Fixup overflow at MCODE:0003, target = DISPLAYA in module DISPL.ASM
    Error: Fixup overflow at MCODE:0008, target = DISPLAYA in module DISPL.ASM
    Error: Fixup overflow at MCODE:000D, target = DISPLAYA in module DISPL.ASM
    Error: Fixup overflow at MCODE:0010, target = KEYBIN in module DISPL.ASM

    У мну два файла: displ.asm и mylib.asm, их содержание такое:
    displ.asm:
    Код (Text):
    1. mcode segment
    2. assume CS:mcode
    3. extrn  displayA:near
    4. extrn  keybin:near
    5. go:
    6. mov dl,'a'
    7. call displayA
    8. mov dl,'b'
    9. call displayA
    10. mov dl,'c'
    11. call displayA
    12. call keybin
    13. mov ah,10h
    14. int 16h
    15. ret
    16. mcode ends
    17. stak segment stack
    18. db 250 dup (?)
    19. stak ends
    20. end go
    mylib.asm:
    Код (Text):
    1. subr segment
    2. public displayA, keybin
    3. assume CS:subr
    4.  
    5. displayA proc
    6.   mov ah,2
    7.   int 21h
    8.   ret
    9. displayA endp
    10.  
    11. keybin proc
    12.   mov ah,1
    13.   int 21h
    14.   ret
    15. keybin endp
    16.  
    17. subr ends
    18. end
    Батник такой:
    tasm displ
    tasm mylib
    tlink mylib+displ
    pause

    Всё делаю по книжке, так что если вдруг чё не так, сильно пожалуйста не пинайте. Подскажите из-за чего ошибка происходит, хотя, вроде всё правильно
    P.S. Написано, что должен появиться DISPL.EXE , появляется MYLIB.EXE, тока она нихрена не работает =(
     
  5. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    _Poly_Glot_

    Блин замени во вотором примере сегмент на
    из subr segment и subr ends
    на mcode segment и mcode ends
    и попробуй слинковать

    или
    extrn displayA:near
    extrn keybin:near

    на
    extrn displayA:far
    extrn keybin:far
     
  6. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    PROFi
    Не получается =(
    Вот файлы, всё сделал как ты сказал, не получается, опять те же ошибки.
     
  7. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
  8. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    JAPH
    Спасибо, а я мучился =)

    З.Ы. В книжке А.Панова: "Ассемблер. Экспресс курс" небось каждый третий исходник с ачипятками...