LAB‎ > ‎

Lab 4

4. TableSum
프리셋 "머신 V03"을 기반으로
1) 다음 문장을 기계어로 번역해서 실행해보시오
    int x;   // 변수 x는 20번지에 배치
    x = 10;   // 10으로 초기화 하는 것은 실행 시작 전에 이루어짐
    x = x - 1;  // 상수 1은 21번지에 배치

1') 메모리 60번지에 다음 20개의 값을 넣으시오.
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 

2) TableSum: Direct absolute addressing mode를 기계어로 수동번역하여 실행하시오.

ORG 0

ORG 90

상수

0

LDA 90

90

ADDA 60

1

STA 07

code = 'ADDA 60'

91

BOX 0

2

LDA 91

92

BOX 19

3

STA 99

sum=0

93

BOX 1

4

LDA 92

5

STA 98

count=19

ORG 98

변수

6

LDA 99

98

RESBOX 1

int i

7

NOP

99

RESBOX 1

int sum

8

STA 99

sum=sum+v

9

LDA 07

10

ADDA 93

11

STA 07

code = ADDA v+1

12

LDA 98

13

SUBA 93

14

STA 98

count = count - 1

15

SKN

16

JMP 06

loop

17

LDA 99

printf("%d",sum)

18

OUT

COB

// 0 번지
190
207
191
299
192
298
199
000
299
107
393
207
198
493
298
513
606
199
502
500

// 90번지 
360
000
019 
001 

3) TableSum: Indirect addressing mode를 기계어로 수동번역하여 실행하시오.

ORG 0

ORG 90

상수

0

LDA 90

p = &table

90

BOX 60

1

STA 97

91

BOX 0

2

LDA 91

sum = 0

92

BOX 19

3

STA 99

93

BOX 1

4

LDA 92

count = 19

5

STA 98

ORG 97

변수

6

LDA 99

sum = sum + *p

97

RESBOX 1

7

ADDA *97

98

RESBOX 1

8

STA 99

99

RESBOX 1

9

LDA 97

p = p + 1

10

ADDA 93

11

STA 97

12

LDA 98

count = count -1

13

SUBA 93

14

STA 98

15

SKN

16

JMP 06

loop

17

LDA 99

printf("%d",sum)

18

OUT

COB

// 0번지
190
297
191
299
192
298
199
797
299
197
393
297
198
493
298
513
606
199
502
500

//90 번지
060
000
019
001


4) TableSum: Indexed addressing mode를 기계어로 수동번역하여 실행하시오.

ORG 0

register int sum;

0

LDA 91

i = 19

1

SWAPAX

2

ADDA @60

sum = sum + table[i]

3

SWAPAX

i = i - 1

4

DECA

5

SWAPAX

6

SKN

7

JMP 02

loop

8

OUT

printf("%d",sum)

COB

ORG 90

상수

90

BOX 0

91

BOX 19


5) TableSum: Indirect addressing mode에서 상수 0,1을 immediate addressing mode를 사용하여 코드로 삽입하시오.


Comments