[어셈블리언어] E07. 16비트 어셈블리 / INT 21h
- 최초 등록일
- 2010.07.11
- 최종 저작일
- 2010.06
- 압축파일
- 가격 2,000원
소개글
과제목적 : INT 21h의 Function을 사용. 레지스터 출력
스택을 활용, 입력받은 문자열을 거꾸로 출력 / 공백의 수 카운트
int 21h와 프로시저의 사용에 중점
소스 참고를 위해서는 상관 없지만 실행을 해보려면, 약간의 공부가 필요합니다.
소스 실행을 위해서는 IrvineExamples6thVS2008.exe 라는 파일이 필요하며
통합패치가 필요합니다.
http://www.kipirvine.com
컴파일 실행환경
1. 실습환경(OS, 장소)
2. 구현의 접근방법
3. 코드
4. 결과
5. 후기
본문내용
2. 구현의 접근방법
문제의 요구사항은 세 가지이다. 그 중 두 가지는 Practice 03과 동일하게 문자열을 입력 받고 그 문자열을 뒤집어 출력하는 것과 그 문자열에 공백이 몇 개나 포함되어 있는지를 알아 내는 것이고, 나머지 한 가지는 라이브러리를 사용하지 않고 INT 21h의 Function을 응용하여 입출력프로시저를 작성하는 것이다.
문자열을 뒤집는 것은 Stack을 이용하는데, 문자열을 입력 받을 때 스택에 문자 하나 하나를 push 한 후, pop하여 출력해 주면 된다. 여기서 string이라는 배열을 사용하여 push&pop을 한 후에 적절한 프로시저를 이용하여 화면에 출력하였다. 공백이 몇 개 있는지 알아내는 방법은, push나 pop같이 문자 하나 하나를 다루는 부분에서 각각의 문자를 공백(아스키코드32)과 비교해주면 된다. cmp와 je를 사용하여 해당 문자가 공백이라면 카운트를 해주고, 카운트 한 숫자를 마지막에 문자열과 함께 출력해 주면 된다.
바뀌는 레지스터의 값들을 관찰하기 위하여 showReg라는 프로시저를 만들어 사용하였고, 문장들을 출력하기 위하여 각각의 프로시저들을 만들었다. MS-DOS 프로그래밍의 인터럽트 21h를 사용하여 각각의 프로시저의 역할을 지정해 주었다.
커맨드창에서 MAKE16.BAT를 이용하여 파일들을 만들고, 실행시켜야 했다.
압축파일 내 파일목록
P07.doc
Termproj/termproj.asm
Termproj/termproj.exe
Termproj/termproj.lst
Termproj/termproj.obj
참고 자료
어셈블리 언어 : 인텔 기반 컴퓨터를 위한 (제5판) KIP R.IRVINE 저
http://www.kipirvine.com