본문 바로가기

Computer Science/컴퓨터구조

[컴퓨터 구조] 입출력 프로그래밍

이 글은 www.youtube.com/watch?v=pbl4bp5g0yo&list=PLc8fQ-m7b1hD4jqccMlfQpWgDVdalXFbH&index=30&t=1s 보고 공부한 글입니다.

 

입출력 프로그래밍

인풋, 아웃풋 레지스터가 있고 인풋이 되는지 아웃풋이 되는지 FGI, FGO 플레그를 쓴다.

 

FGI가 1이 될 때까지 BUN CIF, INP를 계속 돈다.

Flag = 1인 뜻은 키보드로부터 버퍼에 데이터가 들어온다는 의미

STA CHR – AC에 있는 값을 CHR라는 메모리 번지에 저장한다.

 

 

 

출력

 

 

 

 

 

2개 문자의 패킹


8bit ASCII -> 16bit UniCode
로 바꾸는 게 매우 유용하다.
SH4
서브루틴 왼쪽으로 4비트 미는 서브루틴

 

SKI, BUN, FST INP - 로 캐릭터를 받는다.

BSA SH4왼쪽으로 4비트를 민다.

SCD새로운 값을 받는다.

왼쪽으로 민 값에 오른쪽에 붙어서 출력된다.

 

 

 

 

 

 

 

버퍼에 문자 저장

LDA ADS – ADS에 시작 주소를 load 한다.

STA PTR – PTR 변수에 넣는다.

IN2 - 2개의 문자를 패킹하는 프로그램

ISZ PTR포인터를 증가

 

 

 

두 워드의 비교

결과가 0인 경우 두 워드는 동일

데이터 감산을 통한 비교(빼본다)
WD1
을 가져와서 2 의보 수로 만든다.
WD2
와 더한다.

0이면 EQL로 가고
같지 않으면 UEQ으로 간다.

 

 

 

 

 

 

 

 

 

프로그램 인터럽트

104 번지를 실행하기 전에 인터럽터 서비스 루틴으로 간다.
0
번지에 104 주소가 들어간다.
200
번지부터 밴 끝까지 인터럽트 서비스 루틴을 수행한다.
인터럽트 서비스 루틴은 마지막에 ION이 꼭 on을 해야 한다.

 

1. 레지스터들의 내용을 저장
M [xx] <- REGs
IEN <- 0 (by IOFF)

 

2. FGi/FGo Flag들의 값 체크

 

3. 인터럽트 서비스 루틴 수행

 

4. 레지스터 내용 원상 복구
REGS <= M[xx]

 

5. 인터럽터 기능 ON
IEN <= 1 (by ION)

 

6. 원래 프로그램으로 복귀

 

 

728x90