Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Вычислить значение выражения


Автор: ANM89 6.12.2012, 12:54
Дано: 
Y = (a+b)/(c*d)^2 
Помогите пожалуйста найти ошибки!!!! 
Код ASM. 
Решение: 
программа с использованием абсолютной адресации: 
in 0 
stor a,A 
in 1 
stor a,B 
in 2 
stor a,C 
in 3 
stor a,D 

load b,A 
adm b,B 
load b,C 
mum b,D 
stor b,tmp 
mum b,tmp 
load a,tmp 
dvm b,tmp 

mov a,b 
out 4 
stop 

A:.ds 1 
B:.ds 1 
C:.ds 1 
D:.ds 1 
tmp:.ds 1 
end 

программа с использованием относительной адресации: 
.base b 
start: mvi b,start 

in o 
stor a,A 
in 1 
stor a,B 
in 2 
stor a,C 
in 3 
stor a,D 

push b 
push a 
load a, A 
adm a,B 
load a,C 
push b 
load b,D 
mur a,a 
mov a,b 
pop b 
push b 
mur b,b 
dvm a,1(sp) 

mov a,b 
out 4 
stop 
A: .ds 1 
B: .ds 1 
C: .ds 1 
D:.ds 1 
.end 

c) программа с использованием только регистров и стековой памяти 
in 0 
mov b,a 
in 1 
adm b,a 
in 2 
push a 
in 3 
push b 
mum a,b 
mur a,a 
dvm a, 1(sp) 
mov a, b     
out 4 
stop 
.end

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)