|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.04.2012, 14:31 | #1 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Программа для 8086 ругается на недопустимую инструкцию.
Пишу простенькую программу вычисления выражения (A*B-C)/D
Все работает, пока не вызываю процедуру конвертации из int в str Процедура: Код:
Сообщение об ошибке: Процессор NTVDM обнаружил недопустимую инструкцию. CS:0536 IP:0007 OP: fe 1d f0 de 01 Без этой процедуры никаких ошибок нет. В чем может быть проблема? Заранее спасибо. ___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 10.04.2012 в 15:04. |
10.04.2012, 15:04 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а как вызываете?
и вообще, давайте исходный код программы целиком. |
10.04.2012, 15:11 | #3 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Вот весь код: (он еще не доработан и я только начал изучать, не судите строго)
Код:
|
10.04.2012, 15:12 | #4 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Код:
Последний раз редактировалось Glaciuse; 10.04.2012 в 15:27. |
10.04.2012, 15:12 | #5 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Код:
|
10.04.2012, 17:07 | #6 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Работаю с TASM, TLINK, TD.
Если через TD прогу запускать, то все ок, а из cmd.exe не хочет, мб система кривая, а не прога? |
10.04.2012, 21:14 | #7 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
10.04.2012, 22:07 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
тоже сталкивался с подобным. но сейчас найти косяк не удалось - в отладчике всё работает как часы! Glaciuse, а проверка деления на ноль, имхо, у вас некорректно реализована! я бы так предложил написать (то, что красным - убрать, то, что зелёным - добавить: Код:
|
|
11.04.2012, 03:57 | #9 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
То что бросилось в глаза. В процедуре convertIntToStr, изначально cl не занулено, там скорее всего какой-то мусор, а потом вы по этому мусору начинаете работать со стеком, цикл с попами. По крайней мере лично у меня программа вообще ничего не выводила, пока я там со счётчиками порядок не навёл.
Вот этот выриант работает, по крайней мере под NTVDM и под DOSBOX.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
11.04.2012, 08:22 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Ulex, браво!!
в принципе, в исходный код достаточно зануление cx добавить, чтобы всё заработало: Код:
Добавлено посмотрел код (с) Ulex - да он там полпрограммы перелопал!! Очень рекомендую взять его вариант! Последний раз редактировалось Serge_Bliznykov; 11.04.2012 в 08:29. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Процессор NTVDM обнаружил недопустимую инструкцию (глючит Паскаль?) | hon | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 02.08.2011 13:41 |
Описать код программы и написать инструкцию | (=Анастасия=) | Помощь студентам | 0 | 20.06.2011 18:11 |
Может вы знаете что делать если 'процессор NTVDM обнаружил недопустимую инструкцию' | aslanbek999 | Помощь студентам | 1 | 04.06.2009 00:26 |
Ошибка: Процессор NTVDM обнаружил недопустимою инструкцию. | Iceman | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 23.03.2009 14:32 |