L o g o
TVM ver. 2.03 최종보고서
www.deu.ac.kr
L o g o
www.deu.ac.krwww.deu.ac.kr
Contents
프로그램 개요1
프로그램 사양2
프로그램 구성요소3
프로젝트 구동4
L o g o
www.deu.ac.krwww.deu.ac.kr
Hot Tip
What is TVM?
TVM 이란 하드웨어를 구성하는
레지스터 , 데이터메모리 , 코드메모리를
기반으로 가상컴퓨터 (Vitual Machine) 의
기계어 (Machine Language)
인터프리터 (Interpreter) 를 말한다 .
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 개요
레지스터
레지스터는
데이터메모리에 있는
자료들을 입출력하고
연산하는 기능을 함 .
Hardware하드웨어
코드메모리코드메모리는 사용자가
정한 명령들이
집합되어있는 장소로
순차적으로 실행되면서
프로그램을 작동시킨
다 .
데이터메모리
데이터메모리는
데이터가 저장되는
장소로 레지스터와
상호교환 한다 .
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 사양
메모리메모리메모리메모리코드메모리 100 개까지 사용 가능 함확장하지 않은 이유는 100 개 이상 사용할 일이 없다고 판단되었기 때문
정수정수정수정수 정수의 출력범위를 -32768 부터 +32768 까지사용 가능하게 코딩 했음 .
문자문자문자문자 Getchar() 를 이용하여 문자를 입력받는데 ,대소문자 변형 기능을 내장하고 있음 .
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic 의미
0000 End 프로그램 종료
01DS Load reg[D] = reg[S]
명령어 Mnemonic 의미
1DM Load 단 , R=0,1,2,3 reg[R] = data[M];
1DN Load 단 , R=4,5,6,7 reg[R-4] = N + 32768
명령어 Mnemonic 의미
2SM Store data[M] = reg[S];
2SN Store reg[S-4] = M;
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic 의미
3R0S ADD reg[D] += reg[S];
3RN ADD 단 , R=4,5,6,7 reg[R-4] += N;
38DS ADD reg[D] += reg[S] (32768을 더하지않음 )
명령어 Mnemonic 의미
4R0S SUB reg[R] -= reg[S];
4RN SUB 단 , R=4,5,6,7 reg[R-4] -= N;
명령어 Mnemonic 의미
5R0S MUL reg[R] *= reg[S];
5RN MUL 단 , R=4,5,6,7 reg[R-4] *= N;
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic 의미
6R0S DIV reg[R] /= reg[S];
61RS DIV 단 , R=4,5,6,7 reg[R-4] /= N;
68XX MOD reg[0] = reg[2] % reg[1];
명령어 Mnemonic 의미
7RM JUMPreg[R] 의 값이 0 이면 , 명령어의 실행을 code[M] 으로 이동 ;
7RN JUMP단 , R=4,5,6,7 reg[R-4] == 32768 이면 code[M] 으로 이동 ;
78N JUMP if reg[0] != 32768 -> pc = code[pc];
79N JUMP if reg[0] != 0 -> pc = code[pc];
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic 의미
80M JUMP 명령어의 실행을 code[M]으로 이동 ;
81N JUMP PC = N if (reg[0]==reg[1]);
82N JUMP PC = N if (reg[0]!=reg[1]);
83N JUMP PC = N if (reg[0]<reg[1]);
84N JUMP PC = N if (reg[0]<=reg[1]);
85N JUMP PC = N if (reg[0]>reg[1]);
86N JUMP PC = N if (reg[0]>=reg[1]);
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic
의미
910R IN표준입력으로부터 하나의 정수 n 을 읽어서 reg[R]에 저장 ;reg[R] = n;
911R IN 표준입력으로부터 하나의 정수를 받음 (32768 더하지않음 )
920R OUT reg[R]의 값을 출력하기
921R OUT reg[R]의 값 출력하기 (32768 빼지 않음 )
930R char IN 문자 하나를 reg[R]에 저장 ; reg[R] = getchar();
940Rchar OUT
reg[R]에 있는 문자를 출력 ; cout << reg[R];
950R PUSH reg[R]의 값을 STACK에 PUSH(저장하기 )
970Rchange IN
문자하나를 대소문자 바꾸어 reg[R] 에 저장 ; reg[R] = getchar();
980Rchange OUT
reg[R] 에 있는 문자를 대소문자 바꾸어 출력 ; cout << reg[R];
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
N의
약수
를 출
력약
수 출
력
순서
뒤집
기문
자열
순서
변환
숫자
들의
최대
값최
대값
출력
N + …
+ M 합
N부
터 M
까지
합
1 2 3 4
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동문자열
거꾸로출력
00020406081012141618202224
0132510930093008114360195008004722496009400460180140000
입력입력입력입력 A B C D E F G
출력출력출력출력 G F E D C B A
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
입력입력입력입력 A B C D E F G
출력출력출력출력 g f e d c b a
문자열 거꾸로대소 변환출력
00020406081012141618202224
0132510930093008114360195008004722496009800460180140000
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
입력입력입력입력 5( 갯수 ) 20 40 1000 5 98
출력출력출력출력 1000
최대값 출력
00020406081012141618
0102400910276164601910186040101800492000000
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
입력입력입력입력 12
출력출력출력출력 12 6 4 3 2 1
정수를 입력받아정수의 약수 출력
000204060810121416
09
911201126800791092114501711680040000
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
입력입력입력입력 10 1
출력출력출력출력 10 9 8 7 6 5 4 3 2 1
처음 입력 값부터마지막 값까지
출력 ( 내림차순 )
000204060810
21016
100011019200440178040000
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
입력입력입력입력 1 10
출력출력출력출력 55
N 부터 M 까지의 정수의 합
000204060810121416
09
911291100112811435013821800692120000
L o g o
www.deu.ac.krwww.deu.ac.kr
프로그램 구동
입력입력입력입력 i am a boy, I am A boy
출력출력출력출력 I AM A BOY, i AM a BOY
문자대 / 소문자로
바꾸기
00020406081012
07
2510930093008112980080040000
L o g o
Click to edit company slogan .
www.deu.ac.kr