이번에는 멀티플렉서에 대해 알아보도록 할께요.
멀티플렉서란?
최선의 유효이용을 꾀하기 위하여 각 통신로(채널)의 필요 성분을 재배치하는 장치
-네이버 지식백과-
즉 여러개의 입력값이 들어왔을때 나에게 필요한 데이터로 입력값을 재정리하는 것을 말하는 겁니다.
이제 시작해보도록 하죠.
SIGNAL MULTIPLEXER SEGMENT로 들어가주세요.
네 이렇게 생긴녀석입니다.
들어가면 다음 화면이 뜰거에요.
확인을 해보면 입력값을 3개를 받고 출력값이 하나네요.
출력값을 보면 어떨때는 IN.A 값을, 어떨때는 IN.B값을 어떤때는 전혀 다른값을 출력합니다.
전혀다른 값이 어떤값인지를 알기위해서 문제를 읽어봐야 할 것 같군요.
READ VALUES FROM IN.A AND IN.B
READ A VALUE FROM IN.S
WRITE IN.A WHEN IN.S = -1
WRITE IN.B WHEN IN.S = 1
WRITE IN.A + IN.B WHEN IN.S = 0
IN.A 값과 IN.B의 값들을 받습니다.
그리고 IN.S의 값을 받아서
IN.S의 값이 -1이면 IN.A, IN.S의 값이 1이면 IN.B, IN.S의 값이 0이면 IN.A+IN.B의 값을 출력하는 군요.
즉 전혀다른 어떤값은 IN.A+IN.B의 값이었습니다.
위의 문제를 보면 IN.S의 값에 의해서 IN.A값인지 IN.B의 값인지 혹은 두 값을 더하는 건지가 결정 되는 것을 볼 수 있습니다.
이것에 유의해서 코드를 작성하면 다음과 같은 코드를 만들 수 있을거에요.
IN.S 만 일을 하는 코드입니다.
IN.A 와 IN.B는 입력된 값을 모두 IN.S로 넘겨주기만 하면 됩니다.
그리고 IN.S에서 일어나는 코드에 대해서 자세하게 보도록 하죠.
MOV UP,ACC // IN.S의 값을 ACC에 저장합니다.
JEZ EZ // ACC의 값이 0인지 확인하고 0이면 EZ: 로 이동합니다.
JGZ GZ // ACC의 값이 1ㅇ상인지 확인하고 1이상이면 GZ: 로 이동합니다.
MOV LEFT,DOWN // -1이하일경우 IN.A의 값을 아래로 보냅니다.
MOV RIGHT,NIL //IN.B의 값은 NIL 즉, NULL주소로 보내버립니다. (IN값 동기화를 위한 처리)
JRO -13 // 처음으로 이동합니다.
GZ: MOV RIGHT,DOWN //1이상일 경우에 시작되는 위치입니다. IN.B의 값을 아래로 보냅니다.
MOV LEFT,NIL // IN.A의 값은 NIL로 보냅니다.
JRO -13 //처음으로 이동합니다.
EZ:MOV LEFT,ACC //0일경우에 시작되는 위치입니다. IN.A값을 ACC에 넣습니다.
ADD RIGHT //IN.B의 값을 더합니다.
MOV ACC,DOWN //IN.A + IN.B 가 된 ACC값을 아래로 보냅니다.
이상으로 멀티플렉서에 대한 설명을 마치도록 하겠습니다.
'게임 > TIS-100' 카테고리의 다른 글
| [스팀게임]TIS-100 SEQUENCE COUNTER (0) | 2018.01.10 |
|---|---|
| [스팀게임]TIS-100 SEQUENCE GENERATOR (시퀀스 발생기) (0) | 2018.01.08 |
| [스팀게임]TIS-100 SIGNAL COMPARATOR (신호 비교기) (0) | 2018.01.06 |
| [스팀게임]TIS-100 DIFFERENTIAL CONVERTER (차등변환기) (0) | 2018.01.05 |
| [스팀게임]TIS-100 SIGNAL AMPLIFIER (증폭기) (0) | 2018.01.04 |