Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Не линкуется программа!!!


Автор: Fighter 6.8.2006, 01:51
Доброй ночи, я пробую учить ассемблер. Я ввел программу

Код

.MODEL SMALL
.STACK 100h
.DATA
Message DB 'Привет!',13,10,'$'
.CODE
mov ax, @Data
mov dx, ax
mov ah, 9
mov dx, OFFSET Message
int 21h
mov ah, 4ch
int 21h
END


Я её сохранил в файле Hello.asm. Захожу в командную строку. Пишу tasm hello.asm - все нормально. Пишу tlink hello.obj - ошибка:
No program entry point. Компилирую на Tasm5.

Автор: AlexST 6.8.2006, 03:45
У тя ошибка: dx вместо ds.
А проще писать lea dx, message.

Автор: Fighter 6.8.2006, 05:37
Цитата(AlexST @  6.8.2006,  03:45 Найти цитируемый пост)
У тя ошибка: dx вместо ds.А проще писать lea dx, message


Хаха, а эта ошибка - в руководстве.

Добавлено @ 05:40 
Чё то не помогает

Автор: Damarus 6.8.2006, 10:29
Fighter, вот так:
Код

.MODEL SMALL
.STACK 100h
.DATA
Message DB 'Привет!',13,10,'$'
.CODE
Start:
mov ax, @Data
mov ds, ax
mov ah, 9
mov dx, OFFSET Message
int 21h
mov ah, 4ch
int 21h
END Start

Автор: AlexST 6.8.2006, 13:37
Метка необязательна, если программа начинается с первой инструкции.
У меня всё работает.
Вообще конечно .stack 100h надо убрать. 
Посотри ещё это:
Код

.MODEL SMALL
.DATA
Message DB 'Привет!',13,10,'$'
org 100h
.STACK 100h
.CODE
mov ax, @Data
mov ds, ax
mov ah, 9
mov dx, OFFSET Message
int 21h
mov ah, 4ch
int 21h
END 

Должно работать без метки.

Автор: Damarus 6.8.2006, 14:12
Цитата(AlexST @  6.8.2006,  14:37 Найти цитируемый пост)
Должно работать без метки.

Нет, не работает:
Цитата

Turbo Assembler  Version 4.1  Copyright © 1988, 1996 Borland International

Assembling file:   Fighter.cmd
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  452k

Turbo Link  Version 7.1.30.1. Copyright © 1987, 1996 Borland International
Fatal: No program entry point
Для продолжения нажмите любую клавишу . . .

Fighter.cmd:
Код

; @echo off
; goto make

.MODEL SMALL
.DATA
Message DB 'Привет!',13,10,'$'
org 100h
.STACK 100h
.CODE
mov ax, @Data
mov ds, ax
mov ah, 9
mov dx, OFFSET Message
int 21h
mov ah, 4ch
int 21h
END 

; :make
; tasm Fighter.cmd
; tlink Fighter.obj
; pause

Автор: AlexST 6.8.2006, 14:19
Странно

Автор: spin2 8.8.2006, 13:02
А так?
Код

.MODEL SMALL
.DATA
Message DB 'Привет!',13,10,'$'
org 100h
.STACK 100h
.CODE
start:
mov ax, @Data
mov ds, ax
mov ah, 9
mov dx, OFFSET Message
int 21h
mov ah, 4ch
int 21h
END start


end вроде должно указывать на точку входа

Автор: dumb 8.8.2006, 13:23
не указывать точку входа в директиве end кодового сегмента можно, если использовать .startup. других не припомню...

Автор: Kuber 8.8.2006, 18:29
Код

MODEL TINY
STACK 100h
DATASEG
 MyMessage db ' VINGRAD FOREVER=)$'
CODESEG
 start:
   mov ax, @data
   mov ds, ax
   mov ah, 09h
   mov dx, offset MyMessage
   int 21h
   mov ah,04ch
   int 21h
 end start

Автор: Exekutor 9.8.2006, 09:51
А еще, ребят, можно так написать smile :
Код

.Model Small

.Stack 100h

.Data
mes    db 'Hello, word$'

.Code
main    Proc
    MOV    AX, @Data
    MOV    DS, AX
    XOR    AX, AX
    MOV    AH, 09h
    LEA    DX, mes
    INT    21h
    MOV    AX, 4c00h
    INT    21h
main    EndP
End    main


Автор: dumb 9.8.2006, 10:08
зачем все эти дубли? user posted image

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)