어셈블리언어로 프로그램을 만들기 위해서는 두가지 방법이 있다. 한가지는 TASM 또는 Turbo Assembler(of Borland)를 사용하는것과 하나는 디버거를 쓰는것이다. 이번 섹션에서는 디버거를 사용할것이다. 왜냐하면 MS-DOS가 깔려있는 PC에는 모두 디버거가 있기 때문이다. 디버거는 아래의 특성을 가지고 사용자가 컴퓨터에 접근할수 있게한다.

디버그는 .com 파일만 만든다. 이러한 특성때문에 이 종류의 프로그램은 64kb를 넘지 못한다. 그리고 특정 세그먼트의 오프셋 0100H memory direction에서부터 시작되어야 한다.

(they also must start with displacement, offset, or 0100H memory direction inside the specific segment.)

디버그는 명령을 수행할수 있도록 몇가지 명령어를 제공한다

A 어셈블리 명령어를 기계어로 번역한다

D 메모리 영역에 있는 내용을 출력한다

E 특정 위치의 메모리에 데이터를 입력한다.(Enter data into memory, beginning at a specific location)

G 메모리에 있는 프로그램을 실행한다

N 프로그램에 이름을 지정한다

P 관련된 명령어들을 실행, 진행시킨다

Q 디버그 프로그램을 종료한다

R 하나 또는 한개 이상의 레지스터의 자료를 출력한다

T 한 명령어의 내용을 추적한다 (Trace the contents of one instruction)

U 기계어를 상징적 코드로 번역한다

W 디스크에 프로그램을 쓴다.

CPU내부의 레지스터의 내용을 디버그 프로그램을 이용해서 볼수있다. 디버그 프로그램을 실행시키려면 컴퓨터 프롬프트에 다음 명령어를 입력해라. (cmd창에서 하면 될것이다)

 

C:\>Debug [Enter]

 

다음 라인에 막대기 하나가 나타날것이다. 이것은 디버그 프로그램이 실행된것을 나타내고 여기서 다음과 같이 디버그 명령어를 사용할수있다.

 

-r [Enter]

 

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0100 NV EI PL NZ NA PO NC
0D62:0100 2E CS:
0D62:0101 803ED3DF00 CMP BYTE PTR [DFD3],00 CS:DFD3=03

 

CPU내부의 모든 레지스터의 내용이 출력되었다. 이것들을 보는 또다른 방법은 보고싶은 레지스터의 이름을 파라미터로 사용해서 "r"명령어를 쓰는것이다. 예를들어,

 

-rbx

BX 0000

:

 

이 명령어는 BX레지스터만을 보여준다 그리고 디버그 지시자가 "-" 에서 ":"로 바뀐다.

프롬프트가 이런모양일때 레지스터의 내용을 바꿀수 있다는것을 의미한다. 새로운 값을 입력해서 레지스터 값을 바꿀수 있고 입력없이 엔터를 누르면 바뀌지 않는다.