Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 747
от 11.05.2007, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 386, Экспертов: 32
В номере:Вопросов: 1, Ответов: 2


Вопрос № 85682: Здравствуйте уважаемые Эксперты! У меня проблема со сборкой программы на ассемблере Turbo Link Version 1.6.71.0 Copyright (c) 1993,1996 Borland International выдает ошибку: Fatal: Bad loc for fixupp in module 'hex.obj' near file ...

Вопрос № 85.682
Здравствуйте уважаемые Эксперты!
У меня проблема со сборкой программы на ассемблере
Turbo Link Version 1.6.71.0 Copyright (c) 1993,1996 Borland International
выдает ошибку:

Fatal: Bad loc for fixupp in module 'hex.obj' near file offset 123

Что она значит?
Как это исправить?

Помогите мне пожалуйста!

С уважением,
Андрей Кашин

Приложение:

Отправлен: 06.05.2007, 12:10
Вопрос задал: Felixu (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Felixu!
Ошибка в том, что модель flat не годится для досовской программы
1) Давай определимся, под что пишем: под ДОС или WIN32?
Очевидно, что под ДОС, а тогда модель flat не для нас. Годится small
Т.е. пишем .model small,STDCALL
Причем эту строчку надо поставить перед .586, иначе модель автоматом будет flat
2)Непонятно, каким образом формируется и передается параметр в hextodec
Если DWORD через стек, то надо arg x:dword.
Можно в EAX, тогда вообще лишнее и arg, и строчка mov eax,x
Ну и совсем лишнее local x (x - это local или arg?)
3)mov dx,seg y - лишнее
mov eax,offset y - в 16-битных сегменте даст ошибку, кроме того, по смыслу, тут надо
mov dx,offset y
4)Мелкие ошибочки: в конце ф-и, по смыслу должно быть xor al,30h
Кстати, почему xor, а не or?
5)Завершать программы по int 20h годится только для модели tiny, для всех остальных лучше использовать
mov ah,4ch
int 21h (Можно использовать макро .exit <код возврата>
Т.к. int 20h предполагает, что CS равен сегменту PSP

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 07.05.2007, 11:46
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо Игорь Витальевич!

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Felixu!

Наличие подпрограммы hextodec наводит на мысль, что программа должна переводить 16-е числа в 10-е числа.
функция 21h/0ah вводит строку символов, поэтому добавлена подпрограмма
chartohex которая переводит строку в число.
Смотрите приложение.
Удачи!

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 07.05.2007, 14:18
Оценка за ответ: 5
Комментарий оценки:
Спасибо Огромное! :-)


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное