Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 12
1

Программа с ассемблерным модулем на паскале сбрасывается

17.11.2011, 18:42. Показов 899. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Складываю два числа. Как только запускаю программу, она сразу же сбрасывается, помогите пожалуйста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
program prg14101;
function    example(aI:word; bI:word): word; external;
{$L C:\bla\example.obj}
var
    aI, bI, rez: integer;
begin
    aI:=2;
    bI:=3;
    rez:=example(aI, bI);
    writeln(rez);
  readln;
end.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
MODEL large
.data
extrn aI:word,bI:word
.code
public example
example proc far
        mov ax, aI
    mov bx, bI
    add ax, bx
       
example endp
end
Добавлено через 20 минут
Все исправила.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2011, 18:42
Ответы с готовыми решениями:

Как скомпилировать и скомпоновать код на с++ вместе с ассемблерным модулем?
Скажем есть код на ассемблере: .globl sqr .func sqr sqr: movl 4(%esp), %esp imull...

программа в паскале с модулем graph
надо нарисовать компьютерную мышку в паскале с помощью модуля GRAPH надо к 2 ,10,2009 к первой...

программа сбрасывается в начало
Добрый день уважаемые форумчане уже какой день бьюсь над проблемой, разные программы в процессе...

СМА Zanussi ZWG286W, программа не сбрасывается, мигает "отжим"
Клиент сам снял раздолбанную помпу, "не сливала"- говорит. Я поставил новую. Включил в сеть и...

3
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
17.11.2011, 20:07 2
Как-то так:
Assembler
1
2
3
4
5
6
example proc far pascal       ; для правильного порядка смещений в стеке
        mov ax, aI
        mov bx, bI
        add ax, bx
    ret                  ; для неумаления общности
example endp
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32838 / 21174 / 8149
Регистрация: 22.10.2011
Сообщений: 36,433
Записей в блоге: 8
17.11.2011, 20:31 3
Charles Kludge,
только этого недостаточно. Надо как минимум еще правильно вытащить данные из стека, чтобы ими пользоваться (и правильно вернуться из подпрограммы тоже нужно суметь). Иначе я очень хочу посмотреть, как отреагирует программа на
rez := example (10, 11); (без использования этих вспомогательных переменных, в смысле). В результате опять же будет 5... И example (70, 80) - тоже 5 Да и функцию надо в Паскаль-программе описать как Far, иначе как вылетало, так и будет вылетать...

Ну, или сделать как положено:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
MODEL large, pascal
public example
example proc far aI:word, bI:word returns result:word
 
        mov ax, aI
        mov bx, bI
        add ax, bx
 
    mov result, ax
    ret
       
example endp
end
, чтоб не вычитывать, какой должен быть параметр в RET, и не забыть случайно пролог/эпилог (я про
Assembler
1
2
3
4
5
6
7
push bp;
mov bp, sp
 
; ...
 
pop bp
ret ...
), пускай транслятор сам делает свою работу...
0
Ушел с форума
Автор FAQ
16281 / 7605 / 1066
Регистрация: 11.11.2010
Сообщений: 13,618
18.11.2011, 04:42 4
и еще одна ложка дегтя -- в паскале word беззнаковое число от 0 до 65535, если aI=bI=65535 тогда result=FFFF+FFFF=(1)FFFE=65534 и это не единственные значения, которые будут давать неправильный ответ поэтому result должен быть типа Longint и должен учитываться перенос
0
18.11.2011, 04:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2011, 04:42
Помогаю со студенческими работами здесь

Подскажите, где я ошибся. Программа принимает ввод и сбрасывается
это снова я. и снова с той же задачей. (те, кто не читал мой первый пост на форуме - прочитайте...

Программа сбрасывается в начальную форму при переворачивании экрана
Всем привет. У меня след. проблема. Моя программа показывает начальную форму при переворачивании...

Cma candy hol 104 f 31002691 0946, не сбрасывается программа
Добрый день. Cma candy hol 104 f 31002691 0946 не сбрасывает программу, можно хоть пол часа на...

программа с модулем
Помогите пожалуйста написать программу, используя модуль (модуль вручную написать отдельно)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru