18. (a) 최대한 짧은 프로그램
STZ 0 장소 0을 0으로 채운다.
ENT1 1 rI1에 1을 적재한다.
MOVE 0(49) 장소 0을 rI1이 가리키는 1로 복사. 49개 워드
MOVE 0(50) CONTENTS(0) -> CONTENTS(1)
CONTENTS(1) -> CONTENTS(2)
…
1 byte로 99를 표현 못해서 나눔 CONTENTS(48) -> CONTENTS(49)
- MIX에선 6bit라네~
끝나고 난 뒤 rI1도 변경. rI1 = 1 + 49
35. 22
장소 2000에 어떤 정수 X.
������13 을 계산하고 그 결과를 레지스터 A에 남겨둔 채
로 종료하는 프로그램을 두 개 작성
(a) 사용하는 MIX 메모리 장소들의 수가 최소
(b) 수행 시간이 가능한 한 최소
������13 값은 하나의 워드를 넘지 않는다고 가정한다.
36. (a) 사용하는 MIX 메모리 장소들의 수가 최소
3000 ENT4 12 rI4에 12를 저장
LDA 2000 rA에 X를 저장
3002 MUL 2000 rA와 X를 곱한 값을 rA,rX에 적재
SLAX 5 rX에 저장된 값을 rA로 옮김
DEC4 1 rI4를 1 감소
J4P 3002 rI4가 0보다 크면 3002로 점프
HLT 0
공간 : 7
시간 : 171u
37. (b) 수행 시간이 가능한 한 최소
입력은 무조건 정수.
������ 13 을 구하면 된다.
������ 범위만 알 수 있다면 메모이제이션을 사용
- 미리 계산해 저장해 놓고 사용
39. 3000 LD1 2000 장소 2000에 있는 정수를 rI1에 적재
LDA 3500,1 3500에 rI1값을 더한 주소값을 rA에 적재
HLT 0
3496 (−4)13 3500에 0이 있다.
3497 (−3)13
2000에 -1이 저장되어 있다면
3498 (−2)13
3500 – 1, 즉 3499에 저장된 값이
3499 (−1)13 rA에 적재
3500 013
3501 113
3502 213
3503 313
공간 : 12
3504 413 시간 : 4u
- LD1 : 2u
- LDA : 2u
40. 24 rA
rX
rA
+
+
+
0
e
a
a
f
b
b
g
c
c
h
d
d
i
e
rX + 0 f g h i
24. 변경하는 프로그램 두 개를 작성.
(a) 최소의 메모리 공간
(b) 최소의 수행 시간
41. (a) 최소의 메모리 공간
DIV 3500
(3500) +10000
+ 0 a b c d e f g h i
DIV +10000
rA + a b c d e 몫
rX + 0 f g h i 나머지
42. (b) 최소의 수행 시간
rA + 0 a b c d
SRC 4
rX + e f g h i
SRA 1
rA + f g h i 0
rX + a b c d e
SLC 5
rA + 0 f g h i
rX + a b c d e
rA + a b c d e
rX + 0 f g h i