MIX의 명령어(2)

- CMPA(Compare A). C=56, F=field.
rA를 메모리에 있는 내용과 비교하여 Comparison indicator를 Less, Equal, Greater로 설정합니다.


- CMPX(Compare X). C=63, F=field.
CMPA와 동일하나 rX를 사용합니다.


- CMPi(Compare i). C=56+i, F=field.
CMPA, CMPX와 동일하나 Index register를 사용합니다.


- JMP(Jump). C=39, F=0.
명령어의 (0:2) + Index register로 점프하고 rJ에 현재 명령어의 주소 + 1을 저장합니다.


- JSJ(Jump, samve J). C=39, F=1.
JMP와 동일하나 rJ는 변경되지 않습니다.


- JOV(Jump on overflow). C=39, F=2.
JMP와 동일하나 Overflow toggle이 on인 경우에만 점프를 하고 Overflow toggle은 off로 변경됩니다.


- JNOV(Jump on no overflow). C=39, F=3.
JOV와 동일하나 Overflow toggle이 off인 경우에만 점프를 합니다.


- JL, JE, JG, JGE, JNE, JLE(Jump on less, equal, greater, greater-or-equal, unequal, less-or-equal). C=39, F=4,5,6,7,8,9.
JMP와 동일하나 각각 Comparison indicator가 Less일 때, Equal일 때, Greater일 때, Greater이나 Equal, Equal이 아닐 때, Less나 Equal일 때만 점프합니다.


- JAN, JAZ, JAP, JANN, JANZ, JANP(Jump A negative, zero, positive, nonnegative, nonzero, nonpositive). C=40, F=0,1,2,3,4,5.
JMP와 동일하나 각각 rA가 음수일 때, 영일 때, 양수일 때, 음수가 아닐 때, 영이 아닐 때, 양수가 아닐 때만 점프합니다.


- JXN, JXZ, JXP, JXNN, JXNZ, JXNP(Jump X negative, zero, positive, nonnegative, nonzero, nonpositive). C=47, F=0,1,2,3,4,5.
JAN, JAZ, JAP, JANN, JANZ, JANP와 동일하나 rX를 사용합니다.


- JiN, JiZ, JiP, JiNN, JiNZ, JiNP(Jump i negative, zero, positive, nonnegative, nonzero, nonpositive). C=40+i, F=0,1,2,3,4,5.
JAN, JAZ, JAP, JANN, JANZ, JANP와 동일하나 Index register를 사용합니다.


- MOVE(Move). C=7, F=number.
명령어의 (0:2) + Index register에 있는 내용을 rI1이 가리키는 주소로 복사하고 rI1을 1 증가시키고 다음 번에는 명령어의 (0:2) + Index register + 1에 있는 내용을 복사합니다. 이런 식으로 명령어의 (4:4)에 있는 숫자만큼 워드를 복사합니다.


- SLA, SRA, SLAX, SRAX, SLC, SRC(Shift left A, Shift right A, Shift left AX, Shift right AX, Shift left AX circularly, Shift right AX circularly). C=6, F=0,1,2,3,4,5.
각각 명령어의 (0:2) + Index register만큼 rA를 왼쪽으로, rA를 오른쪽으로, rA 및 rX를 왼쪽으로, rA 및 rX를 오른쪽으로, rA 및 rX를 순환적으로 왼쪽으로, rA 및 rX를 순환적으로 바이트 단위로 밉니다. 예를 들어, rA 및 rX가 각각


+-+-+-+-+-+-+
|+|1|2|3|4|5|
+-+-+-+-+-+-+
+-+-+-+-+-+--+
|+|6|7|8|9|10|
+-+-+-+-+-+--+

일 때,

        SLA     1


을 실행하면,


+-+-+-+-+-+-+
|+|2|3|4|5|0|
+-+-+-+-+-+-+
+-+-+-+-+-+--+
|+|6|7|8|9|10|
+-+-+-+-+-+--+

이 되고, 초기 상태에서


        SRX     2


를 실행하면,

+-+-+-+-+-+-+
|+|2|3|4|5|0|
+-+-+-+-+-+-+
+-+-+-+--+-+-+
|+|8|9|10|0|0|
+-+-+-+--+-+-+

이 되고, 초기 상태에서

        SLAX    3


을 실행하면,


+-+-+-+-+-+-+
|+|4|5|6|7|8|
+-+-+-+-+-+-+
+-+-+--+-+-+-+
|+|9|10|0|0|0|
+-+-+--+-+-+-+

이 되고, 초기 상태에서

        SRC     4


를 실행하면,


+-+-+-+-+--+-+
|+|7|8|9|10|1|
+-+-+-+-+--+-+
+-+-+-+-+-+-+
|+|2|3|4|5|6|
+-+-+-+-+-+-+

이 됩니다.


- NOP(No operation). C=0.
아무 일도 일어나지 않습니다.


- HLT(Halt). C=5, F=2.
컴퓨터가 꺼집니다.


- IN(Input). C=36, F=unit.
명령어의 (4:4)가 가리키는 장치로부터 입력을 받아 명령어의 (0:2) + Index register가 가리키는 주소에 저장합니다. 단, 마그네틱 테이프는 100워드 단위로, 디스크나 드럼은 100워드 단위로, 카드 리더는 16워드 단위로, 타자기 및 종이 테이프는 14워드 단위로 입력을 받습니다.


- OUT(Output). C=37, F=unit.
명령어의 (0:2) + Index register가 가리키는 주소에 있는 내용을 명령어의 (4:4)가 가리키는 장치로 출력합니다. 단, 마그네틱 테이프는 100워드 단위로, 디스크나 드럼은 100워드 단위로, 카드 펀치는 16워드 단위로 입력, 프린터는 24워드 단위로, 종이 테이프는 14워드 단위로 출력합니다.


- IOC(Input-output control). C=35, F=unit.
마그네틱 테이프: 명령어의 (0:2)가 0이면 테이프를 되감고, 0보다 크면 그만큼 앞쪽으로 감고, 0보다 작으면 그만큼 뒤로 감습니다.
디스크나 드럼: 명령어의 (0:2)가 0이면 rX에 해당하는 곳으로 위치됩니다. 즉, 이후 IN이나 OUT 명령어를 쓰면, 현재 rX가 가리키는 곳에서 시작하게 됩니다.
프린터: 명령어의 (0:2)가 0이면 다음 페이지로 넘깁니다.
종이 테이프 리더: 명령어의 (0:2)가 0이면 테이프를 되감습니다.


- JRED(Jump ready). C=38, F=unit.
JMP와 동일하나 장치가 준비된 경우에만 점프합니다.


- JBUS(Jump busy). C=34, F=unit.
JMP와 동일하나 장치가 준비되지 않은 경우에만 점프합니다.


- NUM(Convert to numeric). C=5, F=0.
rA 및 rX에 있는 문자코드를 숫자코드로 변환하여 rA에 저장합니다. 예를 들어, rA 및 rX가 각각,


+-+--+--+--+--+--+
|+|30|30|31|32|33|
+-+--+--+--+--+--+
+-+--+--+--+--+--+
|+|34|35|36|37|38|
+-+--+--+--+--+--+

일 때,


        NUM     0


를 실행하면,


+-+--------+
|+|12345678|
+-+--------+
+-+--+--+--+--+--+
|+|34|35|36|37|38|
+-+--+--+--+--+--+

이 됩니다.


- CHAR(Convert to characters). C=5, F=1.
rA에 있는 숫자코드를 문자코드로 변환하여 rA 및 rX에 저장합니다. 예를 들어, rA 및 rX가 각각


+-+--------+
|+|87654321|
+-+--------+
+-+--+--+--+--+--+
|+|00|00|00|00|00|
+-+--+--+--+--+--+

일 때,


        CHAR    0


을 실행하면,


+-+--+--+--+--+--+
|+|30|30|38|37|36|
+-+--+--+--+--+--+
+-+--+--+--+--+--+
|+|35|34|33|32|31|
+-+--+--+--+--+--+

이 됩니다.


실행시간
ADD, SUB, 모든 Load 명령어, 모든 Store 명령어, 모든 Shirt 명령어, 모든 비교 명령어: 2 unit
MOVE: 복사하는 워드의 수 + 1 unit
MUL: 10 unit
DIV: 12 unit
IN, OUT, IOC, HLT를 제외한 모든 나머지 명령어: 1 unit


자, 이제 MIX 명령어를 다 배웠습니다~

by RedPain | 2010/05/29 17:33 | MIX | 트랙백 | 핑백(1) | 덧글(0)

트랙백 주소 : http://redpain.egloos.com/tb/3717924
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at MIX of The Art O.. at 2010/06/03 16:22

... 경로로 PDF 파일 다운 가능. 책을 전부 스캔해서 올린 본좌가 존재함. 응?1. HELLO WORLD on MIX2. MIX의 구성 3. MIX의 명령어(1) 4. MIX의 명령어(2) 5. Overflow toggle에 영향을 줄 수 있는 명령어는? ... more

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶