Download presentation
Presentation is loading. Please wait.
Published by정태 진 Modified 8년 전
1
DEBUG 상지대학교컴퓨터정보공학부
2
Debug 시작하기 Windows XP 에서 “ 시작 ” 버턴을 클릭한다. 시작메뉴에서 “ 프로그램 ” 을 클릭하고, 보조프로그램을 선택한다. 보조프로그램에 “ 명령 프롬프트 ” 를 클릭한다. Window XP 에서 명령 프롬프트 창이 다음과 같이 나타난다.
3
Debug 기동 및 종료 명령 프롬프트 창에서 다음과 같이 타이핑한다. C:\>debug - -q C:\>_ 또 다른 방법은 화일명과 같이 기동하면 방법이다. C:\>debug {filename} [parameter] - -q C:\>_
4
Debug 기동 및 종료 ( 계속 ) Debug 가 메모리에 로드된 후 debug 는 사용 가능한 메모 리의 최하위 세그멘트의 오프세트 100H 번지 이후에 파 일명 {filename} 으로 지정된 파일을 로드하고, BX:CX 레 지스터에 로드한 파일의 바이트 수를 세트한다.
5
Debug 명령어 명 령명 령형 식형 식기 능 Help? Debug 명령어 리스트를 디스플레이 QuitQ Debug 종료 RegisterR [register] 레지스터 내용을 덤프하고 수정 DumpD [range] 지정된 range 의 메모리의 내용을 덤프 EnterE [address][list] 메모리의 address 부터 시작하여 메모리 의 내용을 list 에 지정된 값으로 입력 FillF [range][list] 지정된 range 의 메모리 내용을 list 에 지 정된 값으로 채움 MoveM [range][address] 지정된 range 의 메모리 내용을 address 에서 부터 시작되는 메모리의 위치에 이 동
6
Debug 명령어 ( 계속 ) 명 령명 령형 식형 식기 능 CompareC [range] [address] 지정된 range 의 메모리 내용과 address 에서 부터 시작하여 같은 범위의 메모리내용 비교 SearchS [range] [list] range 의 메모리 내용을 검색하여 list 의 값과 일치하는 메모리 위치 디스플레이 AssembleA [address] 어셈블리 명령어를 어셈블하여 기계어 코드 로 저장 UnassembleU [range] 지정된 범위의 기계어 코드를 어셈블리 명령 어로 변환하여 디스플레이 Go G [=address] [breakpoint addr] Address 로부터 시작하여 breakpoint addr 까 지 실행 TraceT[=address][value] Address 부터 시작하여 지정된 수 만큼 명령 어를 실행하고 레지스터 내용 디스플레이 NameN [filename] 파일이름을 지정
7
Debug 명령어 ( 계속 ) 명 령명 령형 식형 식기 능 LoadL [address] N 으로 지정된 파일로부터 BX:CX 크기 만큼의 바이트를 address 부터 시작하는 메모리 적재 WriteW [address] N 으로 지정된 파일에 address 부터 시작 하는 메모리의 BX:CX 크기 만큼의 바이 트 저장
8
Debug 명령어 C:\>debug -? Assemble : 명령을 1 행씩 어셈블하여 지정한 address 이후의 메모리 써 넣는 다. [ 서식 ] A [address] [ 예 1] –a1000 [ 예 2] –a mov ah, 02 mov dl, 41h int 21h int 20h
9
[ 예 3] –a mov ah, 9 mov dx, 109 int 21h int 20h 109 db ‘Sangji University’ Compare : 로 지정된 범위의 메모리 내용과 로 시작되는 같은 크기의 범위의 메모리 내용을 비교 [ 서식 ] C [ 예 ] –c 2000:0 7F 100
10
Dump : 메모리 내용을 16 진과 ASCII 로 나타낸다. [ 서식 ] D [ ] [ 예 1] d : -d 3dcf 3edf [ 예 2] d : -d100 [ 예 3] d : -d Enter : 지정된 의 메모리 내용 변경 [ 서식 ] E [list] [ 예 1] –e100 4d 53 2d 44 4f 53 [ 예 2] -e100 ‘Sangji University’ -d100 [ 예 3] –e100 : 0100 45. ^ 67. ( 는 키보드 입력부분, ^ 는 space bar)
11
Fill : 로 지정된 범위의 메모리를 로 지정된 값으 로 채운다. [ 서식 ] F [ 예 1] –f100 11f 0 : 0 으로 채운다. [ 예 2] –f120 150 41 42 43 44 : 반복적으로 채운다. Go : debug 상에서 메모리에 로드된 프로그램을 실행한다. [ 서식 ] G : address 1 = Start, address 2 = Break [ 예 1] -g =100 [ 예 2] -g [ 예 3] C:\>debug test.exe -g
12
Hex : 2 개의 16 진수 합과 차를 계산하여 화면으로 출력 [ 서식 ] H [ 예 1] –h 56a3 ef13 45B8 678E : 45B8 = 합, 678E = 차 [ 예 4] -a100 mov ah, 09 mov dx, 109 int 21h int 20h db ‘Sangji University’ -g=100 Input : 로 지정된 I/O port 에서 1 바이트 입력하고 화면에 표 시 [ 서식 ] I [ 예 1] -i90 : port address 90h 의 내용 표시 -i1036
13
Load : 파일 또는 디스크 레코드 내용을 메모리에 로드한다. [ 서식 ] L [ [ ]] [ 예 1] –l C:\>debug -n test -l2000 [ 예 2] -l [ 예 3] -l100 0 0 2 : address = 100, drive = A, record = 0, value = 2 sector [ 참고 ] 0 = A drive, 1 = B drive, 2 = C drive Move : 로 지정된 메모리 영역을 지정한 address 에서 시작하는 영역으로 이동한다. [ 서식 ] M [ 예 1] -m 140 15a 200 : 140 15a 는 범위
14
Name : FCD (file control block) 에 파일명을 세트한다. [ 서식 ] N [ ….. ] [ 예 1] -n [ 예 2] -n command.com -l -g Output : 로 지정된 address 의 I/O port 에 로 지정된 값을 출력 [ 서식 ] O [ 예 1] -oal 03 [ 예 2] –oe2ae 06 Quit : Debug 의 기능을 종료 [ 서식 ] Q [ 예 1] -q
15
Register : 레지스터의 내용을 설정 / 표시한다. [ 서식 ] R [ 예 1] -r [ 예 2] -rax AX 0000 : _____ ( 입력 ) [ 예 3] -rip [ 예 4] -rf : flag 의 내용 변경
16
Flag 의 내용 Flag 항목 PositiveNegative OverflowOV (overflow)NV (non-overflow) DirectionDN (down)UP (up) InterruptEI (enable int.)DI (disable int.) SignPL (positive)NG (negative) ZeroZR (zero)NZ (nonzero) Aux. CarryAC (aux. carry)NA (non aux. carry) ParityPE (even parity)PO (odd parity) CarryCY (carry)NC (non carry)
17
Search : 로 지정된 범위로 지정된 를 검색한다. [ 서식 ] S [ 예 1] -s 100 200 cd 21 : 100h ~ 200h 사이에 CD 21 을 검색 Trace : 레지스터나 flag 및 실행 중인 명령의 니모닉을 표시하면서 한 명령식 프로그램을 실행 [ 서식 ] T [= ] [ 예 1] -t=100 5 : 100 번지부터 5 step 씩 증가하여 실행 [ 예 2] -t2 : 2 step 씩 증가하여 실행
18
Unassemble : 로 지정된 범위의 메모리 내용을 역 어셈블해서 표시 [ 서식 ] U [ ] [ 예 1] -u C:\>debug format.com -u 129 140 -u 100, 140 [ 예 2] -u [ 예 3] -u 100 Write : 로 지정된 메모리 영역의 내용을 드라이버에 저장 [ 서식 ] W [ ] [ ] [ 예 1] -w [ ]
19
Write 명령 사용방법 C:\>debug -a mov ah, 09 mov dx, 109 int 21 int 20 db ‘Sangji University$’ db ‘School of Computer$’ -rcx CX 0000 : 45 -ntest.com -w -q C:\>test : 프로그램 실행
20
Computer 종류보기 -d F000:FFF5 L 8 mm/dd/yy : Computer 종류 -d F000:FFFE L 1 FF : PC FE : XT and Portable PC FD : PCjr FC : AT 2D : Compaq 9A : Compaq Plus 웃음문자 출력 프로그램 -a100 mov dl, 1 mov ah, 2 int 21 int 20 -g : 프로그램 실행
21
한 문자 출력 프로그램 -a100 mov dl, 58 mov ah, 02 int 21 int 20 -g X program terminated normally
22
문자연속 표시 프로그램 -a100 mov dl, 0 mov ah, 2 int 21 inc dl jmp 102 -u100, 109 : 입력 프로그램 확인 -rbx BX 0000 (BX Register 의 값 ) : ( 기존의 값을 변경하지 않음 ) -rcx CX 0000 : a ( 기존의 값을 a(=10) 으로 변경함 ) -nascii.com -w writing 000A bytes -q C:\>ascii : 프로그램 실행
23
음향발생 프로그램 -1 -a100 in al, 61 and al, fc xor al, 2 out 61, al mov cx, 140 loop 10b jmp 104 -u100, 109 -nsound.com -rbx BX 0000 (BX Register 의 값 ) : 음향발생 프로그램 ( 계속 ) -rcx CX 0000 : f -w writing 000F bytes -q C:\>ascii : 프로그램 실행 [ 실행을 중지시키는 방법 : Alt + Ctrl + Del ]
24
음향발생 프로그램 -2 -a100 in al, 61 and al, fc xor al, 02 out 61, al mov cx, 0100 loop 10b jmp 104 -u100, 109 -nsound-2.com -rbx BX 0000 (BX Register 의 값 ) : 음향발생 프로그램 ( 계속 ) -rcx CX 0000 : f -w writing 000F bytes -q C:\>ascii : 프로그 램 실행 [ 실행을 중지시키는 방법 : Alt + Ctrl + Del ]
25
ASCII 출력 프로그램 -a100 mov cx, 100 mov dl, 0 mov ah, 02 int 21h inc dl loop 105 int 20h -u100, 109 -nmascii.com -rbx BX 0000 (BX Register 의 값 ) : ASCII 출력 프로그램 ( 계속 ) -rcx CX 0000 : f -w writing 000F bytes -q C:\>mascii : 프로그램 실행
Similar presentations