티스토리 뷰

https://github.com/TomerAberbach/mano-simulator

 

GitHub - TomerAberbach/mano-simulator: 🖥️ An assembler and hardware simulator for the Mano Basic Computer, a 16 bit compute

🖥️ An assembler and hardware simulator for the Mano Basic Computer, a 16 bit computer. - GitHub - TomerAberbach/mano-simulator: 🖥️ An assembler and hardware simulator for the Mano Basic Computer, a...

github.com

 

해당 사이트에서 mano-simulator를 다운 받을 수 있다.

releases 를 클릭한 후

mano-simulator-1.0-SNAPSHOT.jar 을 다운 받은 뒤

Java가 깔린 시스템의 명령어 창으로

java -jar mano-simulator-1.0-SNAPSHOT.jar 를 해주면 된다.

버전이 다를 수 있으므로 -jar 뒤에는 다운받은 jar의 이름을 넣어주면 된다.

오늘 해볼 프로그래밍은 최댓값 구하는 것이다.

40번지 주소에는 데이터의 개수가 저장되어 있다.

41번지 주소부터 데이터가 저장되어 있어서 41+N번지까지 데이터가 존재하게 된다.

Mano-CPU같은 경우에는 현재의 어셈블리어와 같이 CMP와 같은 명령어가 존재하지 않는다.

따라서 Max값에 저장된 값에서 데이터를 하나 읽어와 보수를 취한 다음 Max값과 더해주는 방식으로

Max - AC 를 해주어 Max 보다 큰지 작은지 비교해준다.

Max - AC < 0 이라면 Max < AC 이므로 값의 크기를 비교할 수 있다.

따라서 반복문을 통해서 위의 과정을 반복해주면 된다.

아래는 위에서 설명한 것을 코드로 구현한 것이다.

		ORG 0	/Origin of program is HEX 0
		LDA NUMB /Load Numb
		CMA /2's complement Numb
		INC 
		STA NBR /Store Numb to NBR
		CLA /Clear AC
LOP,	LDA PTR I /Load PTR Data
		CMA /2's complement Data
		INC
		ADD MAX
		SNA /If (PTR I)' + MAX >= 0
		BUN CON /Go to CON,
		LDA PTR I /Else
		STA MAX /Store (PTR I) to MAX
CON,	ISZ PTR 
		ISZ NBR
		BUN LOP	/Go LOP
		HLT
NBR,	hex 0
PTR,	hex 41

		ORG	40
NUMB,	dec 10
		/ Test Data 2
DATA,	hex 1234
		hex 2101
		hex 7000
		hex 4000
		hex 7569
		hex 6311
		hex 1D20
		hex 7821
		hex 2097
		hex 76FB
MAX,	hex 0
		END

 

'Computer Science > Mano-CPU' 카테고리의 다른 글

Mano-CPU sort 하기  (0) 2021.10.29