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


Автор: rainbow86 15.12.2005, 20:47
Пытаюсь написать свою первую программу, но что-то не выходит!
Использую MASM32. Вот код:

CSEG segment
org 100h

Start:

mov ah,9
mov dx,offset String
int 21h

int 20h

String db 'Hello World! $'

CSEG ends
end Start

Выдает ошибку при линковании:

hello.obj: fatal error lnk1190: invalid fixup found, type 0x0001

smile

Автор: makwen 15.12.2005, 21:33
.model small
.data
string db "HELLO WORLD$"
.code
start:
mov ax,@data
mov ds,ax

mov ah,09h
lea dx,string
int 21h

mov ah,04ch
int 21h

end start
end

Автор: Akina 15.12.2005, 22:20
или линкуй в СОМ-файл...

Автор: SergeCpp 16.12.2005, 10:19
Да возьми FASM — там и примеров простых много...

http://flatassembler.net/index.php

Автор: Janus 16.12.2005, 17:36
Код

.model tiny
CSEG segment
assume cs:CSEG

org 100h

Start:

mov ah,9
mov dx,offset String
int 21h

ret

String db 'Hello World! $'

CSEG ends
end Start

Автор: rainbow86 16.12.2005, 18:06
Ни первый ни второй примеры не прошли.
В первом выдает ошибку:

undefined symbol : DGROUP

хотя его в коде нету

Во втором выдыет такую же ошибку как у меня прежде???

smile

Счас попробую с FASM

Автор: rainbow86 16.12.2005, 18:51
Очень интересно
в FASM работает но без всяких там сегментов и т.д.

org 100h
Begin:
mov ah,9
mov dx, Message
int 21h
int 20h
Message db 'Hello, world! $'

Получается для всех этих MASM FASM TASM надо писать по разному, или есть то что одинаково во всех этих assembler'ах? И какой из этих ассемблеров заслуживает большего внимания?
Может кто объяснит, а то я уж ничего не понимаю!

smile

Автор: Janus 17.12.2005, 17:50
Да, синтаксис несколько различается для всех асмов.

На мой взгляд, наиболее удачен FASM. Да ты и сам увидел, насколько с ним все проще.

Автор: rainbow86 18.12.2005, 16:03
Ладно попробую поработать в FASM.
Всем спасибо!

smile

Автор: Siborn 18.12.2005, 20:44
пиши в фаре как я )
а компиль тасмом и тлинком, которые идут с паскалем )

Автор: Mephistopheles 18.12.2005, 20:57
rainbow86
TASM юзай.
А вообще у всех компилеров свои замуты, но смотря как компилишь ещё. Твой пример самый первый отлично откомпилится TASM'ом в *.com файл.

Автор: wiskas 22.12.2005, 02:26
По моему это все коды программ для доса и в винде нужен вот этот
Код

.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
MsgBoxCaption  db "Iczelion Tutorial No.2",0
MsgBoxText     db "Win32 Assembly is Great!",0
.code
start:
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke ExitProcess, NULL
end start

Опции линковки:для MASM32
ML.exe /c /coff prog.asm
LINK.exe /subsystem:windows prog.obj

Автор: wiskas 22.12.2005, 02:28
не забудь в строках 4-8 прописать полный путь к МАСМ32

Автор: Mephistopheles 22.12.2005, 18:03
wiskas
Нет, Месье, вы заблуждаетесь!
Лично пишу под виндой, через ФЫР работаю.
правда, например, адрес видеобуффера смещён, но вообщем - пашет. Как я уже и говорил.

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