![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.04.2010
Сообщений: 4
|
![]()
Два массива вводим, в каждом находим наименьший элемент и возводим в степень кол-ва элементов в массиве (M и K - кол-во элементов в массиве), затем складываем.
Проблема в том, что по отдельности для каждого массива все работает, но как только я их собираю в одну программу, все слетает - для второго массива считается полный бред. Ошибка должна быть очевидной, ИМХО, просто у меня взгляд "замылился" Помогите, плз! JMP start ; MB: .DS 9 ;под массив MB 9 байт MC: .DS 9 ;под массив MC 9 байт M: .DS 1 ; K: .DS 1 ; Y: .DS 1 ; BMIN: .DS 1 ; CMIN: .DS 1 ; TABL: .DS 1 ;таблица адресов параметров TABL1: .DS 1 ; TABL2: .DS 1 ; START: IN 1 ;ввод M STOR a,M ;сохр М MVI b,0 ;нач индекс MB INPB: PUSH a ;счетчик цикла в стек IN 3 ;ввод элемента STOR a,MB(B) ;сохр эл-та массива ADI b,1 ;вычисл след эл-та массива pop a ;счетчик из стека LOOP a,INPB ;цикл по адресу INPB IN 2 ;ввод K STOR a,K ;сохр k MVI b,0 ;нач индекс MC INPC: PUSH a ;счетчик цикла в стек IN 3 ;ввод элемента STOR a,MC(B) ;сохр эл-та массива ADI b,1 ;вычисл след эл-та массива pop a ;счетчик из стека LOOP a,INPC ;цикл по адресу INPB MVI b,0 ;загруз в rB 0 LOAD a, MB(B) ; STOR a, BMIN ;BMIN=MB[0] LOAD a, MC(B) ; STOR a, CMIN ;CMIN=MC[0] ; ;Формирование таблицы адресов параметров ; ;в TABL будут храниться адреса очередных эл-тов массива ;в TABL1 будет храниться мин число (в степени) ;в TABL2 будет храниться показатель степени ; MVI a, BMIN ;адрес BMIN в rA STOR a, TABL1 ;в TABL1 адрес BMIN MVI a, M ;адрес M в rA STOR a, TABL2 ;в TABL2 адрес M MVI b,0 ;нач адрес массива LOAD a, M ;счетчик в rA F1: push a ;счетчик в стек MVI a, MB(B) ;в rA адрес очереного эл-та массива STOR a, TABL ;адрес эл-та массива в первый эл-нт табл MVI a, TABL ;адрес первого эл-та таблицы CALL MIN ;вызов ПП поиска наим MB ADI b,1 ;след элемент массива pop a ;счетчик из стека LOOP a, F1 ;счетчик по адресу F1 MVI b, TABL ;в rB адрес первого эл-та таблицы LOAD a, 1(B) ;в rA адрес второго эл-та табл LOAD a, 0(B) ;в rA значение второго эл-та таблицы STOR a, BMIN ;сохр BMIN MVI a, TABL ;адрес первого л-та таблицы CALL POWER ;вызов пп возведения в степень ; MVI a, CMIN ;адрес CMIN в rA STOR a, TABL1 ;в TABL1 адрес CMIN MVI a, K ;адрес K в rA STOR a, TABL2 ;в TABL2 адрес M MVI b,0 ;нач адрес массива LOAD a, K ;счетчик в rA F2: push a ;счетчик в стек MVI a, MC(B) ;в rA адрес очереного эл-та массива STOR a, TABL ;адрес эл-та массива в первый эл-нт табл MVI a, TABL ;адрес первого л-та таблицы CALL MIN ;вызов ПП поиска наим MB ADI b,1 ;след элемент массива pop a ;счетчик из стека LOOP a, F2 ;счетчик по адресу F2 MVI b, TABL ;в rB адрес первого эл-та таблицы LOAD a, 1(B) ;в rA адрес второго эл-та табл LOAD a, 0(B) ;в rA значение второго эл-та таблицы STOR a, CMIN ;сохр CMIN MVI a, TABL ;адрес первого л-та таблицы CALL POWER ;вызов пп возведения в степень LOAD a, BMIN ; out 5 ;вывод BMIN в степени LOAD a, CMIN ; out 6 ;Вывод СMIN в степени ADM a, BMIN ; OUT 7 ;вывод суммы STOP ; ; ;ПП поиска наименьшего ; MIN: push b ;сохр rB в стек push a ;сохр rA (адрес табл) в стек LOAD a,0(a) ;адрес первого эл-та таблицы LOAD a,0(a) ;в rA эл-нт MB LOAD b,1(sp) ;в rB адрес табл LOAD b,1(B) ;адрес второго эл-та таблицы LOAD b,0(B) ;в rB MIN CMR a,b ;сравнение эл-та массива c MIN JNN X ;переход по полож и нулевому знач LOAD b,1(sp) ;адрес табл в rB LOAD b,1(B) ;загруз в rB адреса второго эл-та табл STOR a,0(B) ;сохр наим элем X: pop a ; pop b ; ret ;возврат в осн функцию ; ;ПП возведения в степень ; POWER: push b ; push a ; LOAD a,1(a) ;адрес минимального числа LOAD a,0(a) ;минимальное число в rA(основание) LOAD b,1(sp) ;в rB адрес табл LOAD b,2(B) ;адрес показателя степени LOAD b,0(B) ;показатель степени в rB XCHG ;обмен регистров push b ;сохранить основание в стеке MVI b,1 ;результат CYCL: push a ;счетчик MUM a,2(sp) ;умножение pop a ;счетчик из стека LOOP a, CYCL ;цикл по адресу CYCL pop a ;основание из стека LOAD a,1(sp) ;адрес табл LOAD a,1(a) ;адрес мин числа STOR b,0(a) ;сохр мин число в степени pop a ; pop b ; ret ; |
![]() |
![]() |
![]() |
#2 |
Регистрация: 10.04.2010
Сообщений: 4
|
![]()
Товарищи, горит срок сдачи =(((((
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Матрицы. ОЧЕНЬ ВАЖНО !!! Не могу найти ошибку в коде | pasha92 | Помощь студентам | 0 | 24.12.2009 20:19 |
не могу найти ошибку в коде | pavelstraut | Общие вопросы C/C++ | 5 | 24.07.2009 23:20 |
Не могу найти ошибку в коде! | Natasha666 | Помощь студентам | 1 | 20.05.2009 09:27 |
помогите найти ошибку в коде | Joker88 | Помощь студентам | 1 | 04.03.2008 12:43 |
Паскаль. Не могу найти ошибку. Нужна помощь! | Nexx | Помощь студентам | 10 | 06.12.2007 19:12 |