Паскаль+Ассемблер - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

как передать массив в стек по значению для программы, основная программа:
Листинг программы
  1. program My;
  2. const
  3. N = 7; {Размер массива}
  4. Massiv: array[1..N] of Integer =
  5. (1, 2, 3, 2, 17, 7, 2); {Исходный массив}
  6. {$L SUBR} {Подключение файла SUBR.OBJ}
  7. function Max(var Mas; N: Integer): Integer; external;
  8. begin
  9. WriteLn('Max znachenie: ');
  10. Max(Massiv, N)); ReadLn
  11. end.
процедура на ассемблере:
Листинг программы
  1. CODE SEGMENT BYTE PUBLIC
  2. ASSUME CS:CODE
  3. PUBLIC Max ;внешний идентификатор
  4. AdrMas EQU DWORD PTR[BP+6] ;адрес первого параметра
  5. N EQU WORD PTR[BP+4] ;второй параметр
  6. Max PROC NEAR
  7. PUSH BP ;сохранение регистра ВР
  8. MOV BP,SP ;указатель стека
  9. LDS SI,AdrMas ;адрес массива
  10. XOR AX,AX ;0 - в регистр АХ
  11. MOV BX,8001h ;минимальное целое число
  12. MOV CX,N ;число элементов массива
  13. CMP СХ,АХ ;cравнение с 0
  14. JLE М3 ;0 или отрицательное число
  15. M1: LODSW ;загрузка элемента массива
  16. СМР АХ,ВХ ;сравнение с текущим максимумом
  17. JLE M2 ;не больше
  18. MOV BX,AX ;новое максимальное число
  19. М2: LOOP Ml ;цикл
  20. М3: MOV АХ,ВХ ;результат функции
  21. POP BP ;восстановление регистра
  22. ВР
  23. RET 6 ; возврат из подпрограммы
  24. Max ENDP
  25. CODE ENDS
  26. END
Что нужно поменять?

Решение задачи: «Паскаль+Ассемблер»

textual
Листинг программы
  1. function Max(const Mas; N: Integer): Integer; external;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы