Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
home_girl
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 1
#1

скопировать данные из одного массива(1000 элементов) в другой - Assembler

19.12.2010, 21:26. Просмотров 2519. Ответов 5
Метки нет (Все метки)

вот есть код. само задание: скопировать данные из одного массива(1000 элементов) в другой.
прога компилируется, а потом сразу же выкидывает. выделяет строку rep movsb. почему оно не работает?
C++
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
# include <iostream.h>
# include <conio.h>
# include <stdlib.h>
# include <iomanip.h>
 
void main()
{
  srand( (unsigned)time( NULL ) );
 
   int mas1[1000];
   int mas2[1000];
   int i;
   for (i=0; i<1000;i++)
   {
    mas1[i]=(rand()%100+1);
   }
 
   _asm
{
   mov esi, mas1
   mov edi, mas2
   mov ecx, 1000
   rep movsb // эту строку не воспринимает
   }
 
   for (i=0;i<1000;i++)
   cout<<"mas1["<<i<<"] = "<<mas1[i]<<"\t"<<"mas2["<<i<<"] = "<<mas2[i]<<"\n";
   cout.flush();
   getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 21:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос скопировать данные из одного массива(1000 элементов) в другой (Assembler):

Скопировать неотрицательные четные числа из одного масива в другой
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void main() {...

Пересылка элементов из одного массива в другой
Задание: Написать программу пересылки массива байтов длиною 256 элементов к...

Копировать данные из одного файла в другой
помогите написать программу , которая из одного файла скопирует информация...

Перемещение чисел из одного массива в другой
Привет знатоки ассемблера. В университете дали задачку: Есть массив с числами....

Перенос чисел из одного массива в другой по условию
Есть такое задание. Создать массив из 28 чисел. В каждом из этих 28 чисел...

Переписать все отрицательные числа из одного массива в другой
Суть такая Дан массив чисел со знаком. Нужно все отрицательные числа переписать...

5
Mikl___
Автор FAQ
11376 / 5919 / 535
Регистрация: 11.11.2010
Сообщений: 10,937
20.12.2010, 04:08 #2
home_girl,
1) замени mov esi, mas1 / mov edi, mas2 на lea esi, mas1 / lea edi, mas2
2) так как массивы объявлены как int а ты пересылаешь байты командой movsb то у тебя скопируется только 250 первых элементов нужно либо movsd либо mov ecx, 4000
0
Prutvel
2 / 2 / 1
Регистрация: 20.04.2011
Сообщений: 16
20.04.2011, 11:41 #3
здравствуйте! Помогите, пожалуйста!
было задание - переместить массив с адреса 0000Н по адрес 01FFh на адрес 8000 и дальше,
очень нужно сделать с использованием стека, причем, надо предусмотреть, чтобы поиск конца массива производился в подпрограмме и перед выполнением программы сохранить все регистры микропроцессора в стеке и восстановить их после выполнения программы в исходное состояние.
в общем вот прога без стека, правильная
http://narod.ru/disk/10108966001/%D0...B%201.doc.html
а вот со стеком, неправильно написала, проверьте, пожалуйста
http://narod.ru/disk/10654309001/%D0...D0%BA.doc.html
помогите исправить, пожалуйста
0
Mikl___
Автор FAQ
11376 / 5919 / 535
Регистрация: 11.11.2010
Сообщений: 10,937
20.04.2011, 12:03 #4
Prutvel, а в текст сообщения программу было сложно вставить? Зачем мне ради двух строчек лезть на файлообменник и скачивать непонятно что?
0
Prutvel
2 / 2 / 1
Регистрация: 20.04.2011
Сообщений: 16
20.04.2011, 13:44 #5
нет, не трудно конечно, вот программка без стека

Адрес Код Метка Мнемоника
8200 210000 LXI H, 0000H
8203 110080 LXI D, 8000H
8206 7E M1: MOV A,M
8207 12 STAX D
8208 23 INX H
8209 13 INX D
820A 3EFF MVI A, FFH
820C 95 SUB L
820D 3E01 MVI A, 01H
820F 9C SBB H
8210 D20682 JNC M1
8213 E7 RST 32


а вот со стеком, здесь где-то ошибка (задание быо - производить поиск конца массива в подпрограмме и перед выполнением программы сохранить все регистры микропроцессора в стеке и восстановить их после выполнения программы в исходное состояние)
Адрес
Код Метка Мнемоника
8300 Е5 PUSH H
8301 D5 PUSH D
8302 210000 LXI H, 0000H
8305 110080 LXI D, 8000H
8308 7E M1: MOV A,M
8309 12 STAX D
830А 23 INX H
830B 13 INX D
830C CD0682 CALL M2
830F D20883 INC M1
8313 D1 POP D
8314 E1 POP H
8315 E7 RST 32

8206 3EFF M2: MVI A, FFH
8207 85 SUB L
8208 3E01 MVI A, 01H
8209 9C SBB H
8210 C9 RET
0
Prutvel
2 / 2 / 1
Регистрация: 20.04.2011
Сообщений: 16
20.04.2011, 13:46 #6
массив стек - со стеком, листинг3лабы1 - без стека
0
Вложения
Тип файла: doc массив стек.doc (47.5 Кб, 16 просмотров)
Тип файла: doc листинг3лабы 1.doc (38.0 Кб, 20 просмотров)
20.04.2011, 13:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2011, 13:46
Привет! Вот еще темы с решениями:

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

Скопировать данные из одного StringGrid-а в другой
Создаю несколько стринггридов (step1, step2, step3) каждый из которого...

Скопировать данные из одного StringGrid-а в другой
Добрый день, столкнулся с небольшой проблемкой, надо скопировать данные из...

Скопировать данные с одного StringGrid1 в другой StringGrid2
Помогите пожалуста, решить несложную задачу. Вот какой код я прописываю для...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru