4. MIXAL Structure Label : 기호는 1~10개의 영문자들과 숫자로 구성되는 문자열 MNEMONIC : MIX instruction set 이나 pseudo instruction ADDRESS : 평가되는 주소 INDEX : 평가되는 index. 기본값은 0. ADDRESS 가 있어야만 사용가능 MOD : instruction 의 mod COMMENT : 설명
5. MIXAL Structure Address M 계산법 (index 처리가 끝난 주소) I=0 일 경우 M 주소는 ±AA I=1~6 일 경우 M 주소는 ±AA 와rI1~6의 내용을 대수적으로 더한 결과
7. Operation 의 주소 MIXAL 소스코드 어셈블된 Machine Language 몇번실행되었는가? profile
8. MIXAL Hello World * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START
9. MIXAL Hello World * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START 주석! * 로 시작 어셈블된 프로그램에 전혀 영향을 미치지 않는다
10. MIXAL Directives ORIG EQU CON ALF END * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START EQU 동치! 기호 PRINTER 와 수18은 동치equivalent이다. 유사연산pseudo-operation
11. MIXAL Directives ORIG EQU CON ALF END * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START ORIG 이후 instruction 의 주소를지정. 3000부터 차례로 증가함을 의미. 유사연산pseudo-operation
12. * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START OUT TEXT PRINTER ADDRESS 는 TEXT MOD 는 (PRINTER)
13. * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START HLT 컴퓨터를 멈춘다!
14. MIXAL Directives ORIG EQU CON ALF END * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START ALF MIX 영수문자 코드로 된 5byte 짜리 상수를 만든다.
15. MIXAL Directives ORIG EQU CON ALF END * PROGRAM FOR ANDSTUDY. HELLO MIXAL WORLD PRINTER EQU 18 ORIG 3000 START OUT TEXT(PRINTER) HLT TEXT ALF HELLO ALF MIXA ALF L WOR ALF LD END START END MIXAL 프로그램의 마지막에는 항상 END 가 있다. 주소필드는 프로그램이 메모리에 적재 된 후 수행을 시작할 장소이다.
19. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM
20. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM Subroutine rJ(Address EXIT) 알고리즘M 은이렇게 호출될것임! ENT1 100 JMP MAXIMUM STA MAX
21. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM (Address 0 + rI1) rI3
22. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM 아무런 조건 없이 CHANGEM 으로 Jump
23. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM (Address X + rI3)의 값 (Address 1000 + rI3)의 값과 rIA 비교 comparison
24. Algorithm M Implementation Self *는 자신self 라고 읽으며 현재 명령이 있는 메모리 장소를 의미 현재 3004이면 *+3 은 3007 * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM Comparison 이 Greator or Equal 이면 Jump
25. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM (Address 0 + rI3) rI2
26. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM (Address X + rI3)의 값 (Address 1000 + rI3)의 값rIA
27. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOP CMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM rI3 의 값을 1 decrease
28. Algorithm M Implementation * PROGRAM M FROM SECTION 1.3.2 * RA=M, RI1=N, RI2=J, RI3=K X EQU 1000 ORIG 3000 MAXIMUM STJ EXIT ;SUBROUTINE LINKAGE INIT ENT3 0,1 ;M1: INITIALIZE K = N JMP CHANGEM ;J = N,M = X(N),K = N-1 LOOPCMPA X,3 ;M3: COMPARE JGE *+3 CHANGEM ENT2 0,3 ;M4: CHANGE M. J = K LDA X,3 ;M = X(K) DEC3 1 ;M5: DECREASE K J3P LOOP ;M2: ALL TESTED? EXIT JMP * ;RETURN TO MAIN PROGRAM rI3 가 positive 이면 LOOP 로!
34. Algorithm P Implementation Initial table & buffers * INITIAL CONTENTS OF TABLES AND BUFFERS ORIG PRIME+1 CON 2 ORIG BUF0-5 TITLE ALF FIRST ALF FIVE ALF HUND ALF RED P ALF RIMES ORIG BUF0+24 CON BUF1+10 ORIG BUF1+24 CON BUF0+10 END START 상수 2를 (Address PRIME+1)에 정의 상수 2를 (Address -1+1)에 정의
35. Algorithm P Implementation Initial table & buffers * INITIAL CONTENTS OF TABLES AND BUFFERS ORIG PRIME+1 CON 2 ORIG BUF0-5 TITLE ALF FIRST ALF FIVE ALF HUND ALF RED P ALF RIMES ORIG BUF0+24 CON BUF1+10 ORIG BUF1+24 CON BUF0+10 END START TITLE 문자열 정의
36. Algorithm P Implementation Initial table & buffers * INITIAL CONTENTS OF TABLES AND BUFFERS ORIG PRIME+1 CON 2 ORIG BUF0-5 TITLE ALF FIRST ALF FIVE ALF HUND ALF RED P ALF RIMES ORIG BUF0+24 CON BUF1+10 ORIG BUF1+24 CON BUF0+10 END START 두 버퍼는 각자 상대 버퍼를 가리킨다
37. Algorithm P Implementation getPrime * EXAMPLE PROGRAM ... TABLE OF PRIMES * RI1=J-500, RI2=N, RI3=K, RI4=B, RI5=M+50S L EQU 500 PRINTER EQU 18 PRIME EQU -1 BUF0 EQU 2000 BUF1 EQU BUF0+25 ORIG 3000 START IOC 0(PRINTER) ;NEW PAGE LD1 =1-L= ;<P1> J=1 LD2 =3= ; N=3 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON = ( Q > PRIME(K) ) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER , GO TO <P6> JMP 2B ; ELSE N IS PRIME!
38. Algorithm P Implementation getPrime * EXAMPLE PROGRAM ... TABLE OF PRIMES * RI1=J-500, RI2=N, RI3=K, RI4=B, RI5=M+50S L EQU 500 PRINTER EQU 18 PRIME EQU -1 BUF0 EQU 2000 BUF1 EQU BUF0+25 ORIG 3000 START IOC 0(PRINTER) ;NEW PAGE LD1 =1-L= ;<P1> J=1 LD2 =3= ; N=3 … MIX directive 인 EQU 에도 연산가능
39. Algorithm P Implementation getPrime * EXAMPLE PROGRAM ... TABLE OF PRIMES * RI1=J-500, RI2=N, RI3=K, RI4=B, RI5=M+50S L EQU 500 PRINTER EQU 18 PRIME EQU -1 BUF0 EQU 2000 BUF1 EQU BUF0+25 ORIG 3000 START IOC 0(PRINTER) ;NEW PAGE LD1 =1-L= ;<P1> J=1 LD2 =3= ; N=3 … 지정된 유닛PRINTER 가 준비상태가 아니면 기다렸다가 수행 PRINTER 를 다음 page 최상위로 넘긴다
40. Algorithm P Implementation getPrime * EXAMPLE PROGRAM ... TABLE OF PRIMES * RI1=J-500, RI2=N, RI3=K, RI4=B, RI5=M+50S L EQU 500 PRINTER EQU 18 PRIME EQU -1 BUF0 EQU 2000 BUF1 EQU BUF0+25 ORIG 3000 START IOC 0(PRINTER) ;NEW PAGE LD1 =1-L= ;<P1> J=1 LD2 =3= ; N=3 … Literal constant 리터럴상수. 어셈블러는 자동으로 내부이름을 생성하고 적절한 CON 절을 삽입해준다. 상수 1-L 즉 1-500 rI1 상수 3 rI2 MIX Assembler
41. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z2F ;<P3> IS FIND 500? 4HINC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6HENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2HOUT TITLE(PRINTER) ;<P9> PRINT TITLE Local symbol 원하는만큼 여러번 재정의가능한 특별한 기호. dB : 가장 가까운 이전장소dH dF : 가장 가까운 이후장소 dH (d 는 한자리 숫자)
42. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE (Address PRIME+L + rI1)의 값 rI2 (Address -1+500 + rI3)
43. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2HOUT TITLE(PRINTER) ;<P9> PRINT TITLE rI1 이 zero 이면 2F 로 Jump
44. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE rI2 를 2 만큼 increase
45. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE (Address 2) rI3
46. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE (Address 0) rIA (Address 0 + rI2) rX
47. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE rX / (Address PRIME + rI3) rX / (Address -1 + rI3) 계산결과의 몫 rA 계산결과의 나머지 rX
48. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4HINC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE rX가 zero 이면 4B 로 Jump
49. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE (Address PRIME + rI3)의 값 (Address -1 + rI3)의 값과 rIA 비교 comparison
50. Algorithm P Implementation getPrime 2H INC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6H ENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE rI3 를 1 만큼 increase
51. Algorithm P Implementation getPrime 2HINC1 1 ;<P2> N IS PRIME! J=J+1 ST2 PRIME+L,1 ; PRIME(J)=N J1Z 2F ;<P3> IS FIND 500? 4H INC2 2 ;<P4> GO TO NEXT N ENT3 2 ;<P5> K=2 6HENTA 0 ;<P6> PRIME(K)/N? ENTX 0,2 ; RAX=N DIV PRIME,3 ; RA=Q , RX=R JXZ 4B ; IF(R==0) GO <P4> CMPA PRIME,3 ;<P7> COMPARISON=(Q>PRIME(K)) INC3 1 ;<P8> GO TO NEXT K JG 6B ; IF COMPARISON GREATER,GO<P6> JMP 2B ; ELSE N IS PRIME! 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE Comparison 이 Greator이면 6B 로 Jump 아니면 2B 로 Jump
54. Algorithm P Print P9. [제목출력] 프린터를 다음 페이지로 넘긴다 BUFFER[0] 을 제목줄로 설정하고 그 줄을 출력 B=1, M=1 P10. [행 설정] PRIME[M], PRIME[50+M],…,PRIME[450+M] 을 BUFFER[B] 에 적절한 서식으로 집어넣는다 P11. [행 출력] BUFFER[B] 를 출력 B=1-B (다른 버퍼로 전환) M++ IF(M<=50), GOTO P10
56. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M(451,401,351,301,251,201,151,101,51,1) 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT
57. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M … TITLE ALF FIRST ALF FIVE ALF HUND ALF RED P ALF RIMES ORIG BUF0+24 CON BUF1+10 ORIG BUF1+24 CON BUF0+10 END START TITLE 을 PRINTER 에 출력
58. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT (Address BUF1+10) (Address BUF0+25+10) (Address 2000+25+10) rI4 (Address -50) rI5
59. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M(451,401,351,301,251,201,151,101,51,1) 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT rI5 를 L+1 만큼 rI5 를 500+1 만큼 increase
60. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT (Address PRIME + rI5)의 값 (Address -1 + rI3)의 값rIA
61. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT rA를 문자열로 변환
62. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT rX의 (1:4)(Address 0 + rI4)
63. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT rI4 를 1 만큼 decrease rI5 를 50 만큼 decrease
64. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4HLDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT rI5 가 positive 이면 4B 로 Jump
65. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT (Address 0 + rI4)의 값 을 출력
66. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2H INC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT (Address 24 + rI4)의 값 rI4
67. Algorithm P Implementation Print 2H OUT TITLE(PRINTER) ;<P9> PRINT TITLE ENT4 BUF1+10 ; B=1 ENT5 -50 ; M=0 2HINC5 L+1 ; M 4H LDA PRIME,5 ;<P10> SET THE ROW CHAR STX 0,4(1:4) DEC4 1 DEC5 50 ;RI5= RI5 - 50 J5P 4B OUT 0,4(PRINTER) ;<P11> PRINT THE ROWS LD4 24,4 ; CHANGE BUFFER J5N 2B ; IF( RI5==0 ) END! HLT rI5 가 negative 이면 2B 로 Jump
69. MIXAL 언어를 정의하는 비교적 소수의 규칙들 Rules 기호는 1~10개의 영문자들과 숫자로 구성된 문자열. 적어도 영문자가 하나는 존재해야한다. ex) PRIME, TEMP, 20BY20 단 dH, dF, dB 는 고유한 기호로 취급 2. 수. 1~10개의 숫자 ex) 00052 3. 한 기호의 출현은 정의된 기호defined symbol or 향후 참조future reference
70. MIXAL 언어를 정의하는 비교적 소수의 규칙들 Rules 4. 단위 표현식atomic expression 하나의 수, 하나의 정의된 기호, 별표 5. 표현식expression 하나의 단위 표현식, + - 기호 다음에 하나의 단위 표현식이 붙은 것, 표현식 이항연산자 표현식 한 표현식안의 연산들은 왼쪽에서 오른쪽 순서로 수행 -1+5*20/6 4*20/6 -> 80/6 -> 13 6. A 부분 하나의 표현식, 하나의 향후참조, 하나의 리터럴 상수
71. Rules 소수의 규칙들 7. 색인 부분 없음, 쉼표 다음에 표현식 하나 8. F 부분 없음, 왼쪽괄호 다음에 표현식하나 다음에 오른쪽 괄호 9. W 값 표현식 하나 다음에 하나의 F 부분 10. Location counter 어셈블리 공정에 사용, 초기에는 0, 음이 아닌 값.
72. Rules 소수의 규칙들 11. OP MIX 연산자, MIXAL Directive 12. Literal constant 10개 미만의 문자들로 된 W 값의 경우 = 기호로 감싸서 지정. 어셈블러는 내부적으로 새 기호를 만들고, 그 기호를 정의하는 CON 줄을 END 줄 바로 전에 삽입한다. 13. 동치값 모든 기호는 각자 고유하고 유일한 하나의 동치 값을 가진다.