Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2012, 14:15   #1
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию Сегмент данных

Добрый день!

Подскажите пжт. простая программа на ассемблере, должна выводить строку "PRIVET!!!",строка выводится, однако вместе с сегментом кода, то есть выводятся символьные значения машинных кодов, где ошибка в коде?

Код:
CODESEG SEGMENT
ASSUME CS:CODESEG, DS:DATASEG
ORG 100H

EKRAN PROC
 mov ah,09h
 mov dx,offset STRING
 int 21h
 mov ah,10h
 int 16h
 int 20h
EKRAN ENDP
CODESEG ENDS

DATASEG SEGMENT
 STRING DB 'PRIVET!!!$'
DATASEG ENDS

 END EKRAN


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.01.2012 в 01:58.
Palomnik1096 вне форума Ответить с цитированием
Старый 03.01.2012, 02:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А так устроит?

Код:
CODE SEGMENT
ASSUME CS:CODE, DS:DATA

EKRAN PROC
 mov ax,DATA        		; инициализация pегистpа
 mov ds,ax          		; сегмента данных
 mov ah,09h
 mov dx,offset STRING
 int 21h
 mov ah,10h
 int 16h
 mov ax, 4c00h
 int 21h
EKRAN ENDP
CODE ENDS

DATA SEGMENT
 STRING DB 'PRIVET!!!$'
DATA ENDS

END EKRAN
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.01.2012, 07:27   #3
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию

[QUOTE=Serge_Bliznykov;951977]А так устроит?

Создает только объектный файл, .com нет , пишет,что

far segment references not allowed with /TINY
Palomnik1096 вне форума Ответить с цитированием
Старый 03.01.2012, 10:52   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну да, разумеется. отдельные сегменты данных и кода - какой уж тут COM файл...
я изменил пример так, чтобы создавался EXE файл (попробуйте в опциях сборщика указать EXE файл, а не COM)

Если же нужен именно COM, тогда попробуйте такой вариант:
Код:
.model tiny
.code
org 100h

EKRAN:
 mov ah,09h
 mov dx,offset STRING
 int 21h
 mov ah,10h
 int 16h

 int 20h

 STRING DB 'PRIVET!!!$'
END EKRAN
или такой (тот же самый подход, просто _формально_ ( в тексте программы) данные отделены от кода ):
Код:
.model tiny

.data
 STRING DB 'PRIVET!!!$'

.code
org 100h

EKRAN:
 mov ah,09h
 mov dx,offset STRING
 int 21h
 mov ah,10h
 int 16h

 int 20h

END EKRAN

Последний раз редактировалось Serge_Bliznykov; 03.01.2012 в 11:37.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача. Сегмент данных и вывод в строку в восьмиричной системе. AlekseiGans Помощь студентам 9 20.10.2011 13:22
Сегмент кода hidalgo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.12.2010 18:07
непонятен сегмент данных miracle666 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.12.2010 00:03
перенос сегмента кода за сегмент данных Федор777 Общие вопросы C/C++ 2 20.04.2010 18:43
Сегмент стека Santilos Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.12.2008 18:47