Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Assembler
Перезагрузить страницу Поменять местами два массива в памяти, используя стек.
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Tenass Tenass вне форума
Member
 
Сообщений: 115
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.02.2010
По умолчанию Поменять местами два массива в памяти, используя стек. - 12.10.2013, 17:41

Здравствуйте! Есть задание (поменять местами два массива в памяти, используя стек), вот решение:
asm Код:
N   EQU 10
DSEG    AT  30H
ORG 30H

MAS1:   DS  N
MAS2:   DS  N

CSEG    AT  0C000H
ORG 0C000H
JMP MAIN
ORG 0C100H

;MAS1:  DB  0,1,2,3,4,5,6,7,8,9

;MAIN:  MOV R0,MAS1
    ;MOV    R1,MAS2
    ;MOV    R1,#N

MAIN:
    MOV R0,MAS1
   
    PUSH    30H
    PUSH    31H
    PUSH    32H
    PUSH    33H
    PUSH    34H
    PUSH    35H
    PUSH    36H
    PUSH    37H
    PUSH    38H
    PUSH    39H

    PUSH    3AH
    PUSH    3BH
    PUSH    3CH
    PUSH    3DH
    PUSH    3EH
    PUSH    3FH
    PUSH    40H
    PUSH    41H
    PUSH    42H
    PUSH    43H
   
    POP 39H
    POP 38H
    POP 37H
    POP 36H
    POP 35H
    POP 34H
    POP 33H
    POP 32H
    POP 31H
    POP 30H
   
    POP 43H
    POP 42H
    POP 41H
    POP 40H
    POP 3FH
    POP 3EH
    POP 3DH
    POP 3CH
    POP 3BH
    POP 3AH

END
но нужно сделать с использованием цикла, пока ничего в голову не лезет. заранее спасибо за помощь.
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,456
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 12.10.2013, 18:23

Надо вот это
asm Код:
PUSH    30H
    PUSH    31H
    PUSH    32H
    PUSH    33H
    PUSH    34H
    PUSH    35H
    PUSH    36H
    PUSH    37H
    PUSH    38H
    PUSH    39H
заменить на

индекс = 0;
push в стек значения с индексом;
индекс++;
повторить если не конец.
Ответить с цитированием
  (#3 (permalink)) Старый
Tenass Tenass вне форума
Member
 
Сообщений: 115
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.02.2010
По умолчанию 15.10.2013, 03:48

вот набросал но выдает ошибки, как исправить, не знаю:
asm Код:
N   EQU 10
DSEG    AT  30H
ORG 30H
 
MAS1:   DS  N
MAS2:   DS  N
 
CSEG    AT  0C000H
ORG 0C000H
JMP MAIN
ORG 0C100H
 
MAIN:
    MOV R0,#MAS1
    MOV R1,#N
   
 
L1: PUSH    R0  
    INC R0
    DJNZ    R1,L1  
 
    MOV R0,#MAS2
    MOV R1,#N
 
L2: PUSH    R0
    INC R0
    DJNZ    R1,L2
 
    MOV R0,#MAS2
    MOV R1,#N
 
L3: POP R0
    INC R0
    DJNZ    R1,L3
 
    MOV R0,#MAS1
    MOV R1,#N
 
L4: POP R0
    INC R0
    DJNZ    R1,L4
 
END
ошибки: там где строчки PUSH R0
lab1_2.a51(27): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,456
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 16.10.2013, 11:52

Видимо, PUSH R0 пишется вовсе не так. Посмотрите точное описание системы команд вашего ассемблера.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять местами строки imported_Anneta Общие вопросы программирования 0 11.02.2011 16:40
Как поменять местами четверти матрицы Алексей616 Вопросы начинающих программистов 1 27.12.2010 11:26
Как используя стек распечатать слова в текстовом файле в обратном порядке Natcy C++ Builder 0 21.12.2010 23:06
Как поменять местами первые две цифры sabotein Visual Basic 3 22.11.2010 16:57
Поменять элементы местами в списке angelochek Lisp 2 11.05.2010 15:33
Поменять местами минимум и максимум sexygirl Prolog 2 28.04.2010 18:56
поменять чет и нечет местами SKWER Prolog 3 30.11.2009 21:56
Стек на базе массива as009 Алгоритмы 1 28.09.2009 10:44
Как столбцы поменять местами fikys Delphi 5 14.10.2007 23:14
Как поменять местами слова в double Antsu С/С++ 7 13.04.2007 16:42
Поменять местами значения двух переменных X и Y Flaffik Вопросы начинающих программистов 39 30.03.2006 20:19
Поменять местами минимальный и максимальный элементы массива Flaffik Вопросы начинающих программистов 19 15.03.2006 16:19



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов