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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2012, 16:48   #1
DartVedro
 
Регистрация: 02.03.2012
Сообщений: 4
По умолчанию Проблема с запуском программы

Здравствуйте, я в ассемблере новичок. Написал прогу для вывода переменной типа word на экран в символьном десятичном без знаковом виде. Проблема заключается в подключении директивы .386, как только прописана данная строка программа зависает. Читаю Калашникова (в нем вообще только com программы рассмотрены) и Митницкого (там лишь вскользь упоминается директива .386 но не объясняется). Прошу помощи у вас.

Директива .386 необходима для последующей работы с переменными типа dword

Вот код программы которая работает без .386 и зависает с .386

Код:
.model small
.stack 100h
.data
	Mess 	db 12 dup('!')
     		db '$'
	len dw $-Mess
	per dw 0FFFFh


.code
org 100h

start:

mov ax,@data
mov ds,ax

xor dx,dx

mov ax,per
mov bx,10
mov si,len
dec si
dec si

mov cx,si


Metka:
	div bx

	add dl,'0'
	mov Mess[si],dl
	dec si
	xor dx,dx

loop Metka

add al,'0'
mov Mess[si],al

mov ah,9
lea dx,Mess
int 21h

mov ah, 4ch
int 21h

end start

Последний раз редактировалось DartVedro; 02.03.2012 в 16:51.
DartVedro вне форума Ответить с цитированием
Старый 03.03.2012, 12:03   #2
alexey2
Пользователь
 
Регистрация: 27.01.2012
Сообщений: 37
По умолчанию

не уверен, но возможно, попробуй перед
mov cx,si
поставить xor ecx,ecx
потому что кто его знает что там в верхних байтах стоит...
alexey2 вне форума Ответить с цитированием
Старый 03.03.2012, 14:23   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

.386 говорит компилятору, что используется только набор команд характерный для 80386 процессора. Поскольку для данного процессора характерно использование 32-разрядных регистров, то некоторые компиляторы требуют приписки use16 в объявлении сегмента кода.

подробно о директивах можно почитать здесь:
http://citforum.ru/programming/tasm3r/tasm3r_03.shtml
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 03.03.2012 в 14:54.
DiemonStar вне форума Ответить с цитированием
Старый 03.03.2012, 18:03   #4
DartVedro
 
Регистрация: 02.03.2012
Сообщений: 4
По умолчанию

Мда, чего никто на этом форуме ассемблер не знает?! Сам уже нашел на американском форуме. .386 надо ставить после .model. Тему клоз
DartVedro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с запуском программы iilordii Фриланс 5 06.06.2011 08:30
Проблема с запуском программы! JasperCRT Общие вопросы Delphi 1 27.05.2011 09:30
Проблема с запуском программы. AmbaQ Общие вопросы Delphi 8 10.09.2010 15:43
Проблема с запуском программы K[Lanc]N Помощь студентам 5 21.02.2009 22:49