2013-09-29 2 views
0

그래서 여기에 문제가 있습니다. 명령어 세트에 25 개의 명령어가 있습니다. (곱하기, 나누기, 빼기, 증가 명령어 없음). 지금은 바이너리 분할을 수행하려고합니다. 제 문제는 제수가 작고 배당이 둘 다 빼기 위해 (2의 칭찬 형식으로) 어떻게 알 수 있습니까?두 이진수의 나누기

취급 SET : enter image description here

+1

우리는 당신이 어떤 지시를했는지 모른다면 어떻게 말할 수 있습니까? – us2012

+0

@ us2012 ok가 업로드됩니다. –

+0

@ us2012 업데이트 됨, 좀보세요. –

답변

2

을 추가하여 2의 보수 산술에서 시뮬레이션 할 수는 레지스터 (누적)입니다. 그래서 당신이 필요로하는 것은 SPA 명령이고 AC는 두 숫자의 빼기 결과입니다. 또는 SNA는 무엇에서 뺄 것인가에 달려 있습니다.

다시 뺄셈을 사용하지 마십시오. 하나의 숫자와 음수를 추가하십시오. 페루 치오 (Ferruccio)가 말했듯이, 네거티브는 2를 더한 보수입니다.

편집 : AC가 양수/음수 일 경우 SPA/SNA는 다음 명령을 생략하여 작동합니다. 그래서 사소한 본문이있는 if 문을 사용하려면 Sxx와 BUN (무조건 분기)을 지정해야합니다. 조건이 참이면 분기는 건너 뜁니다. 조건이 거짓이면 분기가 실행됩니다.

일반적인 어셈블리 논리를 뒤집은 것입니다. 일반적으로 "조건이 참이면"분기입니다. 이 머신에서 조건이 거짓이면 "분기"입니다.

기록을 위해, 귀하의 명령 세트는 의도적으로 충격을 받았습니다. 실생활 CPU는 RISC 종류보다 프로그래머에게 친숙합니다.

+0

-Mano machine; 심지어 나는 SPA에 대해 확신하지 못한다. 아무 문서도! –

+0

참고 주셔서 감사합니다 :) –

2

많은 지침은 간단한 명령어로 분해 될 수있다.

compare 명령이 필요합니다.

compare 명령어가없는 경우 subtract을 사용하여 시뮬레이트하고 빼기 후에 프로세서 플래그의 상태를 확인할 수 있습니다.

subtract 명령어가 없으므로 빼기 값의 음수를 추가하여 시뮬레이션 할 수 있습니다. 당신이 negate 명령이없는 경우

, 당신은 모든 비트의 값을 내리고 내가 AC 있으리라 믿고있어 1

+0

2의 칭찬에서 제수가 적은지 어떻게 알 수 있습니까? 기호에 대해 추가 1 비트가 없습니까? –

+1

결과가 0보다 작 으면 제수가 배수보다 작 으면 배수에서 제수를 뺍니다. SPA 또는 SNA 지침을 사용할 수있는 것 같습니다. – Ferruccio

+0

나는 SPA와 SNA에 대해 확신하지 못한다. 0시 1 시가되어야한다. –