어셈블리어 및 실습 #6
- 리얼모드 환경 설정
MASM32 설치하기
도스환경에서 어셈블러를 사용하기 위해서 기존 MASM32를 다운로드
http://www.masm32.com
◦ The MASM32 SDK version 10
◦ M32v10r.zip install.exe
Licence
◦ http://www.masm32.com/licence.htm
◦ Freeware
◦ write 32bit Microsoft Assembler
MASM32 설치하기
환경설정 하기 (윈도우 XP)
[내 컴퓨터] – [속성] – [고급] 탭
환경설정 하기 (윈도우 7)
[시작] – [컴퓨터] – [속성] – [고급 시스템 설정]
– [고급] 탭
환경 설정 (path 추가)
[고급] 탭에서 [환경변수] 클릭
Path에 C:\masm32\bin을 추가
환경설정 (bat파일 수정)
Masm32 설치 디렉토리
◦ C:\masm32\bin
◦ buildc.bat 열기
ML 부분 수정
◦ C:\masm32\bin\ml /c %1.asm
설치 확인
cmd 실행
Path 확인
ML 확인
실행 파일 생성 과정
기존의 과정(Irvine 이용)
변경된 과정
소스코드 작성 Make16 (ml + link)
소스코드 작성
어셈블
ml /c 파일명.asm
링크
Link16 파일명.obj
EXE파일 생성
EXE파일 생성
예제
1부터 10까지 더하는 프로그램
소스 설명(1) – Defined Segments
DSEG SEGMENT DSEG ENDS
SSEG SEGMENT STACK DW 100H DUP(?) SSEG END
CODE SEGMENT ‘CODE’
ASSUME CS:CSEG, DS:DESG SS:SSEG
데이터 세그먼트 정의
스택 세그먼트 정의
코드 세그먼트 정의
실제 세그먼트들과 연결
소스 설명(2) – START / AGAIN
START :
MOV DX, 0
MOV CX, 10
AGAIN :
ADD DX, CX
DEC CX
JNZ AGAIN
DX = 0
CX = 10
(DX에 덧셈할 수)
DX = DX + CX (덧셈 결과 누적)
CX = CX – 1
연산 결과가 Zero가 아니 면 AGAIN 으로 분기
소스 설명(3) – Dos로 복귀
MOV AX, 4C00H
INT 21H
CSEG ENDS
END START
AX = 4C00H
인터럽트 21H 호출
프로그램 종료
시작한 레이블과 일치 해야 함(‘START’)
소프트웨어 인터럽트 (int 21h)
AH 값 명칭 동작
1 키보드 입력 키보드에 한문자가 타이핑 될때 까지 기다린다.
문자가 입력되면 그 문자의 ASCII코드를 AL에 저장한다. 입력된 문자는 디스플레이에 나타난 다.
2 디스플레이 스크린 출력
레지스터 DL에 들어있는 ASCII코드의 문자를 디스플레이 스크린에 프린트 한다.
9 스트링 디스플레이 DX가 가르키는 스트링을 디스플레이 한다. 이때 스트링의 끝은 ‘$’ 기호가 있어야 한다.
4c DOS로 복귀 프로그램을 실행을 종료하고 제어를 DOS로 넘 긴다.
실행 파일 만들기
어셈블링(ML)
◦ object 파일이 생성 됨(.obj)
◦ ml /c [asm파일]
링크
◦ exe 파일이 생성 됨
◦ Link16 [obj파일]
ml /c ex_1007.asm
Link16 ex_1007.obj
디버그 하기
debug 파일명.exe
디버그 명령어
실습 디버그 테스트
예제 코드 사용
◦ Register : R [register]
◦ Trace : T [=address] [number]