Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 13.08.2017
Сообщений: 30
1

Hello, world!

05.07.2019, 13:11. Показов 2919. Ответов 7

Author24 — интернет-сервис помощи студентам
Здравствуйте, вот решил начать изучение Assembler. По книге написал hello world и получил ошибку компиляции и прилинковки. Помогите пожалуйста, уже копировал чужие hello world и получал схожие ошибки. Спасибо.
(
C:\Users\Up-grade>D:\masm32\bin\ml.exe /c /coff C:\Users\Up-grade\Desktop\new2.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: C:\Users\Up-grade\Desktop\new2.asm
C:\Users\Up-grade\Desktop\new2.asm(14) : warning A4023: with /coff switch, leadi
ng underscore required for start address : Start

C:\Users\Up-grade>D:\masm32\bin\link.exe /subsystem:windows C:\Users\Up-grade\De
sktop\new2.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : fatal error LNK1181: cannot open input file "C:\Users\Up-grade\Desktop\new2.obj"
)
Код программы:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CSEG segment
org 100h
 
Start:
 
mov ah,9
mov dx,offset Message
int 21h
 
int 20h
 
Message db 'Hello, world!$'
CSEG ends
end Start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2019, 13:11
Ответы с готовыми решениями:

Hello, World
помогите пожалуйста Наберите программу, которая выводит на экран сообщение Hello, World! No war...

Hello World
программа компилируется, но сообщение Hello World не появляется .386 .model flat, stdcall...

Hello, world
Как вывести на экран Hello World с комментариями?

Вывод Hello, World
Надо написать программу COM с упрощенной директивой сегментации. Пишу в TASM-е, но программа...

7
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
05.07.2019, 13:16 2
Merry Milkman, а сделать то, что явно предлагает компилятор:
Цитата Сообщение от Merry Milkman Посмотреть сообщение
leading underscore required for start address : Start
не помогает?

_Start:
и
end _Start
0
1 / 1 / 0
Регистрация: 13.08.2017
Сообщений: 30
05.07.2019, 13:19  [ТС] 3
Помогло, но теперь ошибка прилинковки
LINK : fatal error LNK1181: cannot open input file "C:\Users\Up-grade\Desktop\ne
w2.obj"

В консоль ввожу вот эти строчки:
D:\masm32\bin\ml.exe /c /coff C:\Users\Up-grade\Desktop\new2.asm
D:\masm32\bin\link.exe /subsystem:windows C:\Users\Up-grade\Desktop\new2.obj
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
05.07.2019, 13:21 4
Лучший ответ Сообщение было отмечено Merry Milkman как решение

Решение

Merry Milkman, Вы пытаетесь скомпилировать при помощи windows-кой masm32 досовский исходник...
Что недопустимо. Найдите досовский masm, версии, например, v6.11
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
05.07.2019, 13:30 5
Лучший ответ Сообщение было отмечено Merry Milkman как решение

Решение

Потому что ты находишь в директории Up-grade. А твой ассемблерный файл находится в Desktop. А объектный файл генерируется ровно там, где ты находишься, а не в desktop.

Добавлено через 3 минуты
Цитата Сообщение от liv Посмотреть сообщение
Вы пытаетесь скомпилировать при помощи windows-кой masm32 досовский исходник...
Цитата Сообщение от liv Посмотреть сообщение
Что недопустимо.
Код
> type new2.asm
CSEG segment
org 100h

_Start:

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

int 20h

Message db 'Hello, world!$'
CSEG ends
end _Start
> ml.exe /c /coff new2.asm
Microsoft (R) Macro Assembler Version 14.16.27031.1
Copyright (C) Microsoft Corporation.  All rights reserved.

 Assembling: new2.asm

> dir
07/05/2019  01:23 PM               146 new2.asm
07/05/2019  01:27 PM               724 new2.obj
               2 File(s)            870 bytes
2
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
05.07.2019, 13:32 6
Vourhey, согласен, только добавлю, линковать надо при помощи link16.exe
3
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
07.07.2019, 08:47 7
Цитата Сообщение от Merry Milkman Посмотреть сообщение
В консоль ввожу вот эти строчки:
D:\masm32\bin\ml.exe /c /coff C:\Users\Up-grade\Desktop\new2.asm
D:\masm32\bin\link.exe /subsystem:windows C:\Users\Up-grade\Desktop\new2.obj
Этими строчками виндозные программы собираются. А тебе надо досовскую com-программу собрать. Вот так :

cd каталог_с_твоим_исходником
\masm32\bin\ml /c new2.asm
\masm32\bin\link16 /TINY new2.obj,new2.com,new2.lst,,,

сom-программа получится в том-же каталоге, что и исходник
1
1 / 1 / 0
Регистрация: 13.08.2017
Сообщений: 30
07.07.2019, 14:15  [ТС] 8
Спасибо всем, уже разобрался
1
07.07.2019, 14:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2019, 14:15
Помогаю со студенческими работами здесь

Мой первый Hello, world!
Вот решил научиться писать на асм и столкнулся со следующим, есть код, который я написал с помощью...

hello world!
Нашел в интернете книжку "Крупник - изучаем ассемблер". Очень понятно написано. Вроде бы.......

Hello World в MASM32
Значит .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc...

Не выводится Hello, World
.model small .stack 256 .data mesg db "Hello World! $" .code start: mov ax,0B800h mov...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru