|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.05.2018, 06:59 | #1 |
Пользователь
Регистрация: 16.04.2018
Сообщений: 13
|
Не работает процедура (ассемблер, тасм5.0, досбокс)
Всем привет, написал процедуру на ассемблере, которая считает НОК 4-х чисел, но когда программа запускается, досбокс зависает и вылетает, помогите понять, что я делаю не так?
P.S. до этого считываю 4 числа и кладу их в стек, числа считываются верно, брал процедуру с этого форума. Код:
Последний раз редактировалось Fillimon; 14.05.2018 в 07:02. |
14.05.2018, 07:23 | #2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
поставь везде перед div - xor dx,dx
Нашедшего выход - затаптывают первым..
|
14.05.2018, 15:29 | #3 |
Пользователь
Регистрация: 16.04.2018
Сообщений: 13
|
Не помогло...
|
14.05.2018, 16:43 | #4 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
если ты в стек положил 4 слова,
то вызов процедуры добавит туда ещё и 2-байтный адрес возврата - итого 5 слов. Код:
для этого имеется такая конструкция (адресация через BP): Код:
Нашедшего выход - затаптывают первым..
|
14.05.2018, 16:50 | #5 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..или можно снять на-время адрес возврата, а на выходе опять его туда положить:
Код:
Нашедшего выход - затаптывают первым..
|
14.05.2018, 17:10 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
судя по ret в конце процедуры, Вы вызываете Labab через call ?
Код:
1) первый pop ax заберёт из стека не число, которое Вы туда положили, а адрес возврата из процедуры (его туда call положил) 2) ваш ret возьмёт из стека не настоящий адрес возврата из процедуры - а "левое" число и выполнение кода будет передано неизвестно куда. p.s Рекомендую использовать DOS отладчик. Например, turbo debugger... [ДОБАВЛЕНО] p.p.s. извините, я сильно опоздал с ответом.... |
14.05.2018, 17:19 | #7 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..или "AVPUtil" от лаборатории Касперского,
который красиво отображает содержимое стека (RA - Return Address). вот как он видит такой код: Код:
Нашедшего выход - затаптывают первым..
|
14.05.2018, 17:27 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
14.05.2018, 17:39 | #9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..без проблем. у него там много возможностей в меню сидят:
http://old-dos.ru/index.php?page=fil...o=show&id=5580
Нашедшего выход - затаптывают первым..
|
14.05.2018, 18:17 | #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 |