32 / 22 / 12
Регистрация: 18.11.2017
Сообщений: 165
1

В массиве заменить все элементы большие 7 на 7 и посчитать их количество (ассемблерная вставка в delphi)

22.04.2018, 13:43. Показов 1325. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код на фасме задачки : В массиве заменить все элемента большие 7 на 7 и посчитать их кол-во. Не могу понять как в delphi занести адрес первого элемента массива в регистр.
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
org 100h
jmp start 
;----------------------------— 
arr1 db 9,2,4,9,1,8,0,3,9
size = $ - arr1 
ind db 0        ;счетчик
ent db 10, 13 dup '$'  ;переход на следующую строку
;----------------------------— 
start: 
mov si, arr1   ;в регистр источник заносим адрес
mov cx, size   ;в регистр для цикла заносим длину массива
push si       ;кидаем в стек значения si
push cx
;----------------------------— 
cycle: 
mov al, [si] 
cmp al, 7 
jl miss       ;если меньше, переходим на  метку miss
inc [ind]    ;увеличиваем число замен
mov al, 7
mov [si], al   ;заменяем число большее 7 на 7
miss: 
inc si      ;идем дальше по массиву
loop cycle 
;-----------------------------— 
xor ax, ax        ;обнуляем регистр ax
pop cx          ;извлекаем из стека
pop si 
mov bl, [ind]     ;помещаем в bl число замен
;-----------------------------— 
conclusion: 
mov al, [si]
add al, 30h    ;для вывода однозначного числа
mov ah, $02 
mov dl, al 
int 21h 
inc si 
loop conclusion 
;-----------------------------— 
xor dx, dx     ;обнуляем регистр dx
mov ah, $09 
mov dx, ent 
int 21h 
xor ax, ax 
add bl, 30h 
mov ah, $02 
mov dl, bl 
int 21h 
;-----------------------------— 
mov ah, $0A 
int 21h 
ret
Пока так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const m = 9;
 
var
  a:array[1..m] of word;
  i,ind:word;
 
begin
  For i:=1 to m do
  begin
    Write(' a[',i,'] = ');
    readln(a[i]);
  end;
  ind:=0;
  writeln;
  asm
    mov si,???
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2018, 13:43
Ответы с готовыми решениями:

Заменить все элементы массива большие семи числом 7, посчитать количество таких элементов
Заменить все элементы массива А(а1,а2, ..., а19) больше семи числом 7, вычислить количество таких...

В двумерном массиве А[n,m] заменить все элементы, большие k на 0
Помогите пожалуйста. Паскаль. В двумерном массиве А заменить все элементы, большие k на 0 (ноль)...

В линейном массиве вещественных чисел a(n) заменить все элементы, большие 10 на число k
2. В линейном массиве вещественных чисел a(n) заменить все элементы, большие 10 на число k.

ассемблерная вставка в Delphi Циклический сдвиг элементов в массиве.
задание: написать ассемблерную вставку для Delphi программы циклический сдвиг элементов в массиве.

2
Модератор
Эксперт по электронике
8505 / 4360 / 1646
Регистрация: 01.02.2015
Сообщений: 13,529
Записей в блоге: 8
22.04.2018, 13:52 2
Лучший ответ Сообщение было отмечено AlekseyPl как решение

Решение

lea esi, [a]
1
32 / 22 / 12
Регистрация: 18.11.2017
Сообщений: 165
22.04.2018, 15:43  [ТС] 3
Вот код, мб пригодится кому-нибудь
Delphi
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
const m = 8;
 
var
  a:array[1..m] of word = (9,5,1,6,8,9,2,9);
  i,ind:word;
 
begin
for i:=1 to m do
  write(a[i]:2);
  writeln;
  asm
    lea esi,a
    mov ecx,m
@Cycle:
    mov al,[esi]
    cmp al,7
    jl @miss
    inc [ind]
    mov al,7
    mov [esi],al
@miss:
    add esi,2
    loop  @Cycle
    end;
  writeln('Kol-vo ',ind);
  for i:=1 to m do
    write(a[i]:2);
  readln;
end.
1
22.04.2018, 15:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2018, 15:43
Помогаю со студенческими работами здесь

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

В двумерном массиве целых чисел заменить все элементы, большие суммы элементов третьей строки, этой суммой
Visual C ++ 2005 Express Edition Помогите пожалуйста, буду очень вам благодарна.

В двумерном массиве целых чисел заменить все элементы, большие суммы элементов третьей строки, этой суммой
помогите пожалуйста с двумерным массивом

В двумерном массиве целых чисел заменить все элементы, большие суммы элементов третьей строки, этой суммой
Visual C ++ 2005 Express Edition помогите пожалуйста с двумерным массивом


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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