Я пытаюсь написать следующий код для машины sparc.
y=(x-7)(x-11) for the range 0<=x<=10
и я хочу распечатать следующий код вроде этого for input of x=0 output y=77
и так далее до десяти.
Мне удалось сделать петлю. Но моя проблема заключается в том, чтобы распечатать вывод.
/*
This program will compute y=(x-7)(x-11)
for the range 0<=x<=10
*/
/*
these are the variables
*/
.section ".data"
mystring:.asciz "for input of x=%d and output y=%d"
define(a1,7)
define(a2,11)
define(x_r,l0)
define(x_r,l1)
.section ".text"
main:
save %sp,-96,%sp
clr %x_r
loop:
sub %x_r,a1,%o0 !(x-a1)
sub %x_r,a2,%o1 !(x-a2)
call .mul
nop
mov %o0,%y_r
add %x_r,1,%x_r
cmp %x_r,10
ble loop
nop
ret
restore
Я знаю, что мне нужно напечатать что-то подобное в моем коде, но я не уверен, где.
set mystring,%o0
move %x_r,%o1
move %y_r,%o2
call printf
nop
Выход, который я получаю сейчас,
для входа x=0 выход y=77 для входа x=1 выход y=60 для входа x=2 выход y=45 для входа x=3 выход y=32 для входа x=4 выход y=21 для входа x=5 выход y=12 для входа x=6 выход y=5 для входа x=7 выход y=0 для входа x=8 выход y=-3 для входа x=9 выход y= -4 для входа x=10 выход y=-3
я бы хотел вот так
для входа x=0 выход y=77 для входа x=1 выход y=60 ...... ...... для входа x=10 y=-3