Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для ЮленькаКиев
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 19

Создание программы средствами смешанного программирования (Паскаль - Ассемблер)

09.11.2010, 18:12. Показов 1885. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, форумчане!
Задали лабу по Ассемблеру, так я мало того, что вообще не разбираюсь в нем, так еще и условие не поняла. Помогите глупенькой студентке!!))


Задание:
Объединить два массива в один таким образом, чтобы один массив был расположен внутри другого.
Размерность:
Assembler
1
2
Mas1 dw 7 dup(?)
Mas2 dw 7 dup(?)
Еще дали два шаблона:

Шаблон 1
Создание программы средствами смешанного программирования (Паскаль - Ассемблер)
Вычислить среднее арифметическое введенных элементов массива

Паскаль
Pascal
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
{$L d:\tasm\Sradd.obJ} 
Program labasrn_3; 
uses Сгt;
Type
TMas1=array [1..7] of integer;
Var Mas1 :TMas1;
i,res : integer;
function Sradd(var arr:TMas1):integer;external;
Procedure Vvod
Begin
TextColor(Red).
Writeln(“ЗАВДАННЯ:);
Wгitelп("Визначте середнє арифметичне елементів “);
Writeln,
TextColor(2),
Writeln(''Введіть сім (7) елементів масива'");
TextColor(yellow)
For i:=1 to 7 do
Begin
Read(Mas1[i]);
Writeln( “Mas1[“,i,”]=”,Mas1[i]);
End;
Readln;
End;`
BEGIN {Main}
ClrScr;
Vvod;
res :=Sradd(Mas1);
TextColor(Blue);
Writeln (“Среднее ap…кое м-а(7) из 7 элементов равно :”,res);
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
ideal
    segment CODE byte public
    assume cs:CODE
    public Sradd
    arr_ptr equ 4
    proc Sradd near
    push bp
    mov bp, sp
    push ds
    push cx
    push bx
    push dx
    xor dx, dx
    xor bx, bx
; Розташування стеку:; [bp+0] - значення bp  (2,байта)
    ; [bp+2] - адреса повернення - регістр IP (2 байти)
    ; [bp+4] - сегмент адреси повернення - регістр CS (2 байти)
    ; [bp+6] - перший аргумент
; завантажити в сегментний регістр:
;   lds - в регістр ds,     lss - в ss
;   les - в es,    lfs - в fs,    lgs - в gs 
    lds si, [bp+arr_ptr]    ; адреса сегмента заносимо в ds, зсув в si  
    mov cx, 7
    push cx
    cld ; df=0
  @@adding:
; завантажити значення з пам’яті - слово в акумулятор АХ, 
; для DF=0 та слова до значення si додається 2
    lodsw
    add bx, ax
    adc dx, 0
    loop @@adding
    pop cx
    mov ax, bx
    div cx
    pop dx
    pop bx
    pop cx
    pop ds
    pop bp
    ret
endp Sradd 
ends Code
end
Шаблон 2
В матрице размерностью 5×5 изменить все отрицательные элементы на противоположные

Паскаль
Pascal
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
program lab;
uses crt;
type matr=array[15,15] of integer;
const n=10;
var
m1:matr;
i, j, k: integer;
 
procedure zamina (var m1:matr); external;
{$L 2.obj}
 
BEGIN
clrscr;
randomize;
 
for i:=1 to 5 do
    for j:=1 to 5 do
        begin
        m1[i, j]:=random(n)-5;
        end;
clrscr;
textcolor (2);
for i:=1 to 5 do
    begin
        for j:=1 to 5 do
            write (m1[i, j], ‘ ‘);
        writeln;
    end;
zamina (m1);
writeln (‘Peretvorena :);
textcolor (4);
for i:=1 to 5 do
    begin
        for j:=1 to 5 do
            write (m1[i, j], ‘ ‘);
        writeln;
    end;
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
Code segment byte public
assume cs:CODE
public zamina
 
zamina proc near
 
push bp
mov bp, sp
mov bx, offset [bp+4]
mov cx, 25
M1: 
mov ax, [bx]
cmp ax, 0
ige b1
neg ax
mov [bx], ax
b1:
 
add bx, 2
loop M1;
pop bp
ret
zamina endp
Code ends
END
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2010, 18:12
Ответы с готовыми решениями:

Программы на заказ (Ассемблер, Бейсик, Паскаль, Delphi)
Программы на заказ для персональных компьютеров (Ассемблер, Бейсик, Паскаль, Delphi) и микроконтроллеров (Ассемблер, Си); работа с...

Создать из блок-схем программы на языке программирования Паскаль
Выручите сделайте эту работу мне это очень важно

Создание программы реализующей класс «Комплексные числа» средствами языка C++
Создание программы реализующей класс «Комплексные числа» средствами языка C++

4
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
09.11.2010, 21:19
я тоже не понял как это один внутри другого. Уточните у преподавателя какая именно операция должна применяться. Подозреваю что слияние(merge), хотя по заданию не очевидно
0
 Аватар для ЮленькаКиев
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 19
09.11.2010, 21:26  [ТС]
Ну вообще задание дано на украинском:
Поєднати два масиви у один таким чином, щоб один масив був розташований всередені іншого.
Это еще можно перевести как ...что бы один массив был в середине другого... Может так понятнее?))
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
10.11.2010, 11:48
да - так действительно понятнее. Значит не слияние, а вставка. Только при нечетном количестве элементов (7) где середина? Вставить можно либо до среднего, либо после, либо вместо среднего(четвертого). Вот сделал, вставляет до среднего:
Pascal
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
const n = 7;
type t_mas = array [1..n] of Integer;
res_mas = array [1..2*n] of Integer;
var
mas1, mas2 : t_mas;
result_mas : res_mas;
i : Integer;
 
{$L insert.obj}
procedure insert_mas(var m1, m2 : t_mas; length : Integer; result : res_mas); external;
 
begin
randomize;
for i:=1 to n do
begin
   mas1[i] := random(100);
   mas2[i] := random(100)+100;
end;
 
for i:=1 to n do
    write(mas1[i], ' ');
writeln;
for i:=1 to n do
    write(mas2[i], ' ');
writeln;
insert_mas(mas1, mas2, n, result_mas);
writeln('Result:');
for i:=1 to 2*n do
    write(result_mas[i], ' ');
readln;
end.
insert.asm:
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
.386
public       insert_mas
m1  equ     [bp+14]
m2  equ     [bp+10]
n   equ     [bp+8]
m_res   equ     [bp+4]
 
code    segment use16
assume  cs:code
insert_mas  proc    near
    push    bp             
    mov bp, sp
 
    lds si, m1
    mov cx, n
    shr cx, 1
    push    cx
    lds di, m_res
    rep movsw
    push    si
    mov cx, n
    lds si, m2
    rep movsw
    pop si
    mov cx, n
    pop ax
    sub cx, ax
    rep movsw   
 
    pop bp
    ret 10
insert_mas  endp
code   ends
end
1
 Аватар для ЮленькаКиев
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 19
10.11.2010, 16:28  [ТС]
Ой, спасибо тебе большое)) Ты спас мою дурью голову. Сейчас буду компилировать и разбираться, что да как)) Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2010, 16:28
Помогаю со студенческими работами здесь

Паскаль+Ассемблер
как передать массив в стек по значению для программы, основная программа: program My; const N = 7; ...

Ассемблер + Паскаль
Помогите!!! Написал программу на ассемблере, из текста все гласные убрераю, но мне нужно его связать с паскалем через .obj, вот текст...

создание программы анализирующая правильность записи арифметического выражения с точки зрения синтаксиса паскаль
интересно мне кто нибудь ответит

Взаимодействие Паскаль - Ассемблер
Асемблеровский файл компилируется нормально вроде всё правильно, создаётся его .obj файл который будет взаимодействовать с паскалем. В...

Реализация графического режима средствами языка Ассемблер
Доброго времени суток! Нужна ваша помощь!:) Нужно отобразить линию в графическом режиме. Как это сделать? Заранее благодарен:)


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru