만든 날짜: | 2018-10-30 오후 12:48 |
본 게시글은 수업들은 내용을 정리한 내용이며, 방문자 열람목적이 아닌 백업/기록용 게시글 입니다. 때문에 오타 및 잘못된 정보가 표기되어 있을 수 있습니다.
1pass : 로케이션
2pass : 번역
ORG 100 |
이 프로그램은 100번지 부터 시작한다.
(수도명령어, 코드화할 필요없다.)
| ||
100 | LDA SUB |
뒤에 I가 없으므로 다이렉트, LDA는 2 (OPCODE) SUB는 주소
(SUB에 있는 내용을 AC에 넣어라)
| |
101 | CMA |
(AC를 1의 보수 취해라)(16진수에서 안되니까 2진수로 바꿔서 함)
0000 0000 0001 0110
| |
102 | INC | 0000 0000 0001 0111 | |
103 | ADD MIN |
0000 0000 0001 0111
+0000 0000 0101 0011
=0000 0000 0110 1010
= 006A
| |
104 | STA DIF | AC에 있는 내용을 DIF에 넣어라 | |
105 | HLT | 컴퓨터를 중단시킨다. | |
106 | MIN, | DEC 83 | |
107 | SUB, | DEC -23 | |
108 | DIF, | HEX 0 | |
END |
우리가 어셈블 해줌.(바이너리로) ->(핵사로)
기말고사 1번 | |||
ORG 100 |
이 프로그램은 100번지 부터 시작한다.
(수도명령어, 코드화할 필요없다.)
| ||
100 | 2107 | 뒤에 I가 없으므로 다이렉트, LDA는 2 (OPCODE) SUB는 주소 | |
101 | 7200 | ||
102 | 7020 | ||
103 | 1106 | ||
104 | 3108 | ||
105 | 7001 | ||
106 | MIN, | 0053 | |
107 | SUB, | FFE9 | 0000 0000 0001 0111 -> 1111 1111 1110 1001 -> FFE9 |
108 | DIF, | 0000 | 최종엔 006A가 들어가게된다. |
END | SUDO |
1 번째 패스 : 로케이션을 카운트
수도 명령
ORG 오리진이 어딘지, END, DEC, HEX 등.
베이직 컴터에 저런 명령어가 들어가있고. 다 수행 후엔 AC PC IR엔 어떤게 들어깅ㅆ는지?
Location
|
Instructuin
|
AC
|
PC
|
IR
| |
010
| 7800 |
0000
|
011
|
7800
| |
011
|
1016
|
C1A5
|
012
|
1016
| |
012
|
4014
|
C1A5
|
014
|
4014
| |
013
|
7001
|
8184
|
014
|
7001
| |
014
|
0017
|
8184
|
015
|
0017
| |
015
|
4013
|
8184
|
013
|
4013
|
여기 수행후
파란색으로 이동
|
016
|
C1A5
| ||||
017
|
93C6
|
문제 6.1인데 한글 책에 오타있음.C1A5
- Example:The following program is a list of instructions in hexadecimal code. What are the content of AC and the memory word at address 103 when the computer halts?
Location | Instruction | AC | ||
100 | 5103 | BSA 103 |
돌아올 주소를 저장하고 뛰어라
(원래 수행하려던 101번지)
101번지를 103에 저장.
그리고 104번지로 이동(pc<-104)
| |
101 | 7200 | CMA |
FFFE (16진수)
★CMA는 2의보수가아니고
1의 보수다!!
그리고 0001 일때
2진수가 아니라 16진수!
그래서 1110이 아니라
FFFE 임!
| |
102 | 7001 | HLT | ||
103 | 0000 | 0000 | 0101을 저장 | |
104 | 7800 | CLA | 0000 | |
105 | 7020 | INC | 0001 | |
106 | C103 | BUN 103 I | 무조건뛰어라. |
- Compiler
- (ex) C program
- Step 1 : main()
- Step 2 : symbolic assembly program (may be skipped)
- Step 3 : binary code program
- (ex) Fortran
- DIMENSION A(100)INTEGER SUM,ASUM=0DO 3 J=1,1003 SUM=SUM+A(J)integer sum, A[100],J;for (J=0, sum=0; J<100; J++)sum=sum+A[J];
이걸 짜면 아래 와 같다.
for(int i=-100; i<0 ; ++i)
8번줄의 ISZ는 단지 1을 증가시시키기 위해서 사용된 것이다.
Line | Location (HEX) | Instruction (HEX) | |||
1 | ORG 100 | ||||
2 | 100 | 210B | |||
3 | 101 | 310C | |||
4 | 102 | 210D | |||
5 | 103 | 310E | |||
6 | 104 | 7800 | |||
7 | 105 (LOP,) | 910C (Indirect) | |||
8 | 106 | 610C | |||
9 | 107 | 610E | |||
10 | 108 | 4105 | |||
11 | 109 | 310F | |||
12 | 10A | 7001 | |||
13 | 111 (ADS,) 10B | 0150 (16) | |||
14 | 112 (PTR,) 10C | 0000 (16) | |||
15 | 113 (NBR,) 10D | -100 (10) = FF9C | |||
16 | 114 (CTR,) 10E | 0000 (16) | |||
17 | 115 (SUM,) 10F | 0000 (16) | |||
18 | ORG 150 | ||||
19~ | 150 |
75 (10) = 004B
|
이런 데이터가
100개 있다.
| ||
. | |||||
. | |||||
. | |||||
~118 (100개) |
1B3 (1B4-1)
(150+63)(16진수)
| 23 (10) = 0017 | |||
119 | END | ||||
로케이션 개수 세기 1B3 이 어떻게 나왔냐?
1개면 150인데. 2개면 151 즉. n개 면 150+n-1
[컴퓨터시스템구조] 14일차 - Representation of symbolic program in memory
Reviewed by Lifer
on
12/18/2018
Rating:
댓글 없음: