Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 6

Модульное программирование Асм/Паскаль

20.03.2013, 19:23. Показов 2210. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как подключить модуль паскаля.
Помогите плиз.


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
data          SEGMENT  
    newLen db ?                      
    bufer db 41 
    len   db   ?
         
data          ENDS
 
code          SEGMENT
              ASSUME   cs:code,ds:data
begin:
 
;ввод строки
    mov ah,10
    lea dx,bufer
    mov di,dx
    int 21h
 
;перевод строки
    mov ah,2
    mov dl,10
    int 21h
 
    inc di      ;на число введенных символов
 
    xor ax,ax   ;AH-для хранения длины последнего слова
    xor bx,bx   ;BL-для счетчика слов
    xor cx,cx   ;CL-длина строки
 
    mov cl,[di] ;число введенных символов
    mov [di],byte ptr ' ' ;перед первым символом строки, записать пробел
    add di,cx   ;DI - на последнем символе строки
    inc cl      ;с пробелом символов больше на 1
    mov [newLen],cl ;новая длина строки
 
;подсчет длины последнего слова
    call Find
    mov ah,cl   ;AH=длина последнего слова
 
;подсчет следующего слова
m1:
    mov cl,[newLen] ;
    test cl,cl  ;если символов в строке 0, вывод
    jz okString
 
    call Find
    cmp ah,cl   ;сравнить самое длинное
    jge m1      ;если дольше,
    inc bl      ;увеличить счетчик слов
    jmp short m1    ;на следующее слово
 
okString:
;вывод на экран
    xor ax,ax
    mov al,bl
 
    mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
    xor     dx,dx
    div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
    push    dx
    inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
    test    ax, ax
    jnz     oi2
; Теперь приступим к выводу.
    mov     ah, 02h
oi3:
    pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
    add     dl, '0'
    int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3
 
    xor ax,ax   ;ждать нажатия клавиши
    int 16h
 
Find    proc    near
    std     ;сканировать с уменьшением адреса
    mov dx,di   ;для вычисления длины слова DX-конкц слова
    mov al,' '
    repne scasb ;искать пробел
 
    mov cx,dx   ;DX-конец слова
    sub cx,di   ;DI-начало слова. DX-DI=CX=длина слова
    sub [newLen],cl ;новая длина строки     
    ret
Find    endp
code          ENDS
              end      begin
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2013, 19:23
Ответы с готовыми решениями:

Программирование аппаратных средств с помощью АСМ
Всем привет. Подскажите хорошую книгу (в любом формате ток не "дежавю") программирования апаратных средств с помощью АСМ. Или...

Программирование Паскаль.
Помогите пожалуйста! Паскаль. Найти номер пары соседних элементов с одинаковыми знаками, произведение которых меньше заданного числа.

Программирование на встроенном ассамблере в среде Турбо Паскаль 7.0
Здравствуйте. Нужно 2.Написать процедуру на языке Паскаль с ассемблерной вставкой выполняющей над двухбайтовыми переменными X1, X2, X3,...

10
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
20.03.2013, 20:29
Транслятор паскаля не создает объектные файлы, а потому не удастся подключить паскаль-модуль к асм-программе. Вот обратный вариант реализуется легко: к паскаль-модулю подключается внешняя асм-процедура.
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
20.03.2013, 21:27
Ну, вообще говоря, Turbo Pascal создает модули в виде TPU-файлов.
TPU-файл можно превратить в OBJ файл утилиткой TPU2OBJ.exe от Борланд.
Но из этого OBJ файла будут вызываться несколько подпрограмм, код которых
находится в библиотеке TURBO.TPL.
Если код этих попрограмм вручную перенести в свою программу под соответствующими
именами, то получившийся винегрет скомпоновать удачно все таки можно.
Но геморрой еще тот.
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
20.03.2013, 21:34
Цитата Сообщение от Ethereal Посмотреть сообщение
то получившийся винегрет скомпоновать удачно все таки можно.
Но геморрой еще тот.
Вот именно.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
20.03.2013, 22:19
А что, на Бугланде свет клином сошёлся? FreePascal и VirtualPascal вполне себе объектники генерят.
0
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 6
20.03.2013, 22:35  [ТС]
Так что делать надо?? мне надо как-то реализовать в одном проэкте и асм и паскаль, чтоб паскаль выполнял какуюто процедуру с асма, а асм в свою очередь просто брал данные с паскелевкого файла. Как это реализовать?
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
20.03.2013, 22:55
Взять исходники рантайма Virtual Pascal и из них надёргать кусков.
Code
1
http://old-dos.ru/index.php?page=files&mode=files&do=show&id=1436
1
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
21.03.2013, 09:40
Так что делать надо?? мне надо как-то реализовать в одном проэкте и асм и паскаль, чтоб паскаль выполнял какуюто процедуру с асма, а асм в свою очередь просто брал данные с паскелевкого файла. Как это реализовать?
Делайте связь паскаль->ассемблер и не любите мозги. Если сделать функцию или процедуру на ассемблере, то переданные ей аргументы будут "асм в свою очередь просто брал данные с паскелевкого файла". Не вижу противоречий.
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
21.03.2013, 10:24
Цитата Сообщение от Bod Посмотреть сообщение
Так что делать надо?? мне надо как-то реализовать в одном проэкте и асм и паскаль, чтоб паскаль выполнял какуюто процедуру с асма, а асм в свою очередь просто брал данные с паскелевкого файла. Как это реализовать?
Не видите, что-ли, Bod прямым текстом просит "напишите за меня"
Миниатюры
Модульное программирование Асм/Паскаль  
0
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 6
21.03.2013, 16:27  [ТС]
Mikl___, наверное ты ошибаешся... Я хочу разабраться как это можно сделать...
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
21.03.2013, 20:19
Цитата Сообщение от Bod Посмотреть сообщение
Так что делать надо?? мне надо как-то реализовать в одном проэкте и асм и паскаль, чтоб паскаль выполнял какуюто процедуру с асма, а асм в свою очередь просто брал данные с паскелевкого файла. Как это реализовать?
Во-первых, надо было нормально сформулировать вопрос. Если он звучит так же, как в этой цитате, то...
Создается, например, модуль с таким содержанием
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{$F+}
Unit AsmUnit;
 
Interface
 
Var
  var1  :Byte;  {В асм-коде эти переменные будут описаны в сегменте данных как внешние}
  var2  :Word;  {С их помощью в асм-процедуру и обратно будут передаваться данные}
  var3  :Word;
.............
Procedure OnAsm;    {Это внешняя процедура, написанная на ассемблере}
.............
Implementation
 
Procedure OnAsm; External; {Здесь она и определяется как внешняя}
{$L OnAsm}    {Это не комментарий, а указание транслятору использовать obj-файл}
.............
End.
Теперь пишем на ассемблере, затем формируем OBJ-файл и помещаем его в
соответствующую папку (каталог), которая указана в опциях паскаля
(в directories) для хранения OBJ-файлов.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.286p
Code   Segment Word Public 
       Assume  cs:Code,ds:Data
 ;
       Public  OnAsm
OnAsm  Proc Far
 ;  Здесь исполняемый код
 ;
 ;
 ;
 ;
       retf
 ;
OnAsm  endp
Code  ends
;;;;;;;;;;;;;;;;;;;;;
Data    Segment Word Public
  Extrn  var1  :Byte
  Extrn  var2  :Word
  Extrn  var3  :Word
........................
Data      ends
    end OnAsm
Промерно так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2013, 20:19
Помогаю со студенческими работами здесь

Выполнить программирование: модульное, без модульное
Буду премного благодарен если поможете с этими задачами.

модульное программирование
Модуль. реализовать набор подпрограмм для работы с векторами: сложение, вычитание, вычисление длины вектора, скалярное произведение...

модульное программирование
Народ я тут прилягу написал по своей лабе но у меня проблема она не запускаеться вот кидает эти ошибки хелп плиз это...

Модульное программирование
Составить библиотеку алгоритмов для обработки произвольных числовых матриц (тип REAL): - умножение матрицы на число. - поменять...

Модульное программирование
Задание: Составить библиотеку алгоритмов для обработки произвольных числовых матриц (тип REAL): - умножение матрицы на число. -...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru