Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с ассемблером (задачей про матрицы) внутри...

Виталий Барыбин Мастер (1415), закрыт 10 лет назад

есть программа уже составленная, но с ошибкой, можете поглядеть?

IN 0 ; ввод количества элементов массивов

STOR A,N ; запомнить количество элементов по адресу n

MVI b,A ; загрузить в rB адрес массива A

geta:PUSH A ; сохранить в стеке счетчик цикла

IN 1 ; ввести очередной элемент массива A

STOR A,00(B) ; запомнить его по адресу (b)+0

ADI B,01 ; вычислить адрес следующего элемента

POP A ; восстановить из стека счетчик цикла

LOOP A,geta ; замкнуть цикл по метке geta

MVI B,B ; загрузить в рB адрес массива B

LOAD A,N ; загрузить в регистр A количество элементов

getb:PUSH A

IN 2 ; ввести очередной элемент массива B

STOR A,00(B) ; запомнить его по адресу (b)+0

ADI B,01 ; вычислить адрес следующего элемента

POP A ; восстановить из стека счетчик цикла

LOOP A,getb ; замкнуть цикл по метке getb

MVI b,0 ; загружаетм в регистр B - 1

stor b,I

load a,N

xchg

cycl: load b,N

cmr a,b

jp exit

load a,N

load b,I

sbr a,b

stor a,tmp ;N-i

load a,b(tmp)

load b,a(I)

mur a,a

stor a,c(I)

load a,I

adi a,1

stor a,I

jmp cycl

exit: STOP

; останов

N: .DS 1 ; резервирование 1 байта под количество элементов

A: .ds 0a ; резервирование 10 байтов под массив A

B: .ds 0a ; резервирование 10 байтов под массив B

C: .ds 0a ; резервирование 10 байтов под массив C

tmp: .ds 0a

.org 60 ; установить абсолютный адрес 60h

; подпрограмма вычисления выражения
Лучший ответ
Миоко Таканава Гений (51590) 10 лет назад
Ваша программа делает совсем не то, что написано в задании.
Если я не ошибаюсь, то программа должна быть написана для функциональной модели микроЭВМ-2 Алтайского государственного технического Университета им. И. И. Ползунова.

.hex
.org 00
in 0
stor a, N
mvi b, ArrA

GetA:
push a
in 1
stor a, 00(b)
adi b, 01
pop a
loop a, GetA

mvi b, ArrB
stor b, LineB
mvi a, 01
stor a, Factor
load a, N
CreateB:
push a
mvi a, 00
stor a, Index
load a, N
CreateLine:
push a
load b, Index
load b, ArrA(b)
mum a, Factor
load a, LineB
adm a, Index
stor b, 00(a)
load a, Index
adi a, 01
stor a, Index
pop a
loop a, CreateLine
load a, Factor
adi a, 01
stor a, Factor
load a, LineB
adm a, N
stor a, LineB
pop a
loop a, CreateB
stop

N: .ds 01 ; Размер массива A
Index: .ds 01 ; Индекс массива А и индекс столбца матрицы B
LineB: .ds 01 ; Адрес начала текущей строки матрицы B
Factor .ds 01 ; Номер строки матрицы и множитель
ArrA: .ds 0A ; Массив A
ArrB: .ds 64 ; Матрица B

.end

P.S. Если не жалко, поделитесь ссылкой на программу моделирования этой модели, её ассемблер и дизассемблер.
Остальные ответы
+1 Гуру (2634) 10 лет назад
А может она неправильно записана?

Как я понимаю на ассемблере все делается с право на лево, то есть вот код

MOV Ah,41h /записать 41h в регистр Ah
Источник: Уже непомню
Миоко ТаканаваГений (51590) 10 лет назад
А вы не обратили внимание, что это ассемблер не x86-го процессора?
Похожие вопросы