![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.04.2018
Сообщений: 13
|
![]()
Всем привет, написал процедуру на ассемблере, которая считает НОК 4-х чисел, но когда программа запускается, досбокс зависает и вылетает, помогите понять, что я делаю не так?
P.S. до этого считываю 4 числа и кладу их в стек, числа считываются верно, брал процедуру с этого форума. Код:
Последний раз редактировалось Fillimon; 14.05.2018 в 07:02. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
поставь везде перед div - xor dx,dx
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 16.04.2018
Сообщений: 13
|
![]()
Не помогло...
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
если ты в стек положил 4 слова,
то вызов процедуры добавит туда ещё и 2-байтный адрес возврата - итого 5 слов. Код:
для этого имеется такая конструкция (адресация через BP): Код:
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..или можно снять на-время адрес возврата, а на выходе опять его туда положить:
Код:
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
судя по ret в конце процедуры, Вы вызываете Labab через call ?
Код:
1) первый pop ax заберёт из стека не число, которое Вы туда положили, а адрес возврата из процедуры (его туда call положил) 2) ваш ret возьмёт из стека не настоящий адрес возврата из процедуры - а "левое" число и выполнение кода будет передано неизвестно куда. p.s Рекомендую использовать DOS отладчик. Например, turbo debugger... [ДОБАВЛЕНО] p.p.s. извините, я сильно опоздал с ответом.... |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..или "AVPUtil" от лаборатории Касперского,
который красиво отображает содержимое стека (RA - Return Address). вот как он видит такой код: Код:
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..без проблем. у него там много возможностей в меню сидят:
http://old-dos.ru/index.php?page=fil...o=show&id=5580
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
спасибо. скачал. пусть будет
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не работает процедура | pavelmorash12 | Общие вопросы Delphi | 2 | 19.04.2017 22:20 |
не работает процедура сумма | pascal1992 | Помощь студентам | 0 | 05.05.2013 23:03 |
Не работает процедура | Golovastik | SQL, базы данных | 2 | 22.11.2009 14:22 |
Процедура не работает | Михаил Юрьевич | Общие вопросы Delphi | 4 | 03.06.2008 07:22 |
не работает хранимая процедура | yulia | БД в Delphi | 11 | 28.05.2007 19:00 |