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

Связь программ на языке высокого уровня и языке ассемблера

25.11.2012, 17:29. Показов 1249. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здраствуйте)у меня проблемка,есть процедура сортировки массива бетчера на ассемблере и есть основная программа на pascal,в которую передается массив в виде параметра.Помогите всё это дело запустить!!!!с подобным раньше не сталкивался.

код PASCAL:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program fusion_sort;
uses crt;
{$L fusion.obj}{подключается обьектный файл(с процедурой)}
procedure fusion(var a:array of integer;n:integer);external;{прототип функции}
const n=100;
var
   m:integer;
   a,b:array [1..n] of integer;
   i:integer;
BEGIN
clrscr;
writeln('введите количество элементов массива*:');
readln(m);
writeln('введите элементы массива*:');
for i:=1 to m do
    read(a[i]);
fusion(a,m);{вызывается процедура(*ассемблерная сортировка*)}
writeln('отсортированный массив:');
for i:=1 to m do write(a[i]:4);
writeln;
readln;
readln;
END.
код ассемблер:

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
95
96
97
98
99
100
101
102
103
code segment
assume cs:code
start:
l       equ     12
procoutnum proc far
        push    bp
        mov     bp,sp
        push    ax
        push    dx
        push    si
        sub     sp,6    ; в стеке отводим 6 байт под учет знака
        cmp     dh,1    ; вывод со знаком или без?
        jne     L0
        cmp     ax,0
        jge     L0
        mov     dh,2    ; если вывод со знаком и AX < 0
        neg     ax      ; то dh:=2 и ax:=abs(ax)
L0:     push    dx      ; сохранить dh(знак) и dl(ширина поля)пишем цифры в стек в обратном                         ; порядке 
        xor     si,si   ; обнулили si - в нем будет количество цифр
L1:     mov     dx,0    ; преобразуем число из ax (16 бит) в (dx,ax) (32 бита*)
        div     cs:ten    ; ax:=ax div 10; dx=ax mod 10
        add     dl,'0'    ; в dl ASCII код очередной цифры
        mov     [bp-l+si],dl     ; очередная цифра*-> стек
        inc     si      ; увеличили длину числа
        or      ax,ax      ; * а не равен ли ax нулю?
        jnz     L1
; если есть знак минус,пишем его в стек
        pop     dx
        cmp     dh,2
        jne     L2
        mov     byte ptr [bp-l+si],'-'
        inc     si   ; печать пробелов перед числом
L2:     mov     dh,0
        mov     ah,2    ;функция 2 прерывания 21h
L21:    cmp     dx,si
        jle     L3
        push    dx
        mov     dl,' '
        int     21h
        pop     dx
        dec     dx
        jmp     L21
;печать знака и числа*
L3:     dec     si
        mov     dl,[bp-l+si]
        int     21h
        or      si,si
        jnz     L3
;выход из процедуры
        add     sp,6
        pop     si
        pop     dx
        pop     ax
        pop     bp
        ret
ten     dw      10
procoutnum endp
 
fusion proc PASCAL m:dword, len:word
;   push bp
;   mov bp,sp
   mov  dx,len ;[bp+4]
   mov  di,word ptr m+2 ;[bp+8]
 
        cld
        cmp        dx,1
        jbe        sort_exit        ; выйти,если сортировать нечего
        dec        dx
sn_loop1:
        mov        cx,dx            ; установить длину цикла*
        xor        bx,bx            ; BX будет флагом обмена*
        mov        si,di            ; SI будет указывать на текущий элемент
sn_loop2:
        lodsw                       ; прочитать следующее слово
        cmp        ax,word ptr [si]
        jbe        no_swap          ; если элементы не в порядке,
        xchg       ax,word ptr [si] ; поменять их местами
        mov        word ptr [si-2],ax
        push cx
        push ax
        push si
        push dx
        mov cx, dx      ; помещаем в cx а*размер массива*
        inc cx
        mov dx,0005h      ; одновременно записываем в dh  и dl, в dl записываем 0,а в dh 5
        mov si,di
M1:    mov ax, word ptr [si]
        call procoutnum
        add si,2       ; переход к следующему элементу
        dec cx
        jnz  M1
        mov ah,02h
        mov dl,0dh
        int 21h
        mov dl,0ah
        int 21h
        pop dx
        pop si
        pop ax
        pop cx
 
        inc        bx               ; и установить флаг в 1,
no_swap:
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2012, 17:29
Ответы с готовыми решениями:

Связь ассемблера с языками высокого уровня (C/C++/Pascal)
Обьясните или покажите на примерах, как делать связи: С++ + асм, асм+асм, паскаль+асм Спасибо.

Создать эмулятор процессора на языке высокого уровня программирования
Доброго времени суток! В универе стоит задача написать эмулятор процессора на языке высокого уровня программирования по поиску...

Разработать алгоритм на языке высокого уровня
Помогите разработать алгорит, составив его описание на алгоритмическом языке высокого уровня, отладить программу. Входные данные: 1)...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2012, 17:29
Помогаю со студенческими работами здесь

Создать программу на языке высокого уровня
Само задание Условие Построить стягивающее дерево неориентированного графа S методом поиска в ширину и вывести список ребер...

Лабораторные работы по учебнику Павловская C# программирование на языке высокого уровня
может кто то делал уже лабораторные по этому учебнику? желательно 19 вариант( если ни у кого нету, тогда могу скинуть задания(

Программа тестирования по одному из разделов курса «Программирование на языке высокого уровня»
Разработайте программу тестирования по одному из разделов курса «Программирование на языке высокого уровня». в которой выбор правильного...

Сравнение производительности ассемблера и языков высокого уровня
Мне задали написать программу сортировки массива из 30000 элементов (размером в слово) пузырьком на ассемблере и языке высокого уровня....

Конвертер для перевода программ на языке PHP в текст программы на языке Assembler
Всем привет. Как можно реализовать такую задачу? Разработать конвертор в языке Assembler для перевода программ на языке PHP в текст...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru