크리에이티브 커먼즈 라이센스

홈페이지HOME

PHP

JavaScript

HTML

CSS

드롭다운메뉴

제로보드4

도   움   말

백지 건강강좌/자가임상체험

물박사(자가면역질환...)^미러

전동명(천연물질사전)^미러

竹田 장승옥(블로그)^글목록

계산환산(계산기)^ 단위변환

관주성경 TTS 일반파일 TTS

바이블로 Bible_ro 다운로드

다운로드>폰에 복사
>파일선택...설치됩니다.

[도움말 보기] 바로가기

개선 요구, 충고는
아래 관리자 연락
전화/메일 부탁 드립니다.
최대한 빨리 처리하고
업데이트 올리겠습니다.


asm_80.


R,U,G,Q 커맨드


     22 이형문 buju8t 12/28 1251

    11 디버거를 알자.. R,U,G,Q 커맨드



 이형문 (buju8t  )

디버거를 알자.. R,U,G,Q 커맨드 12/28

17:00 164 line






디버거의 사용법


BUG란  잘못된 부분,원래는 벌레라는 뜻입니다.

DEBUG 이란 벌레를 잡는다 즉, 잘못된 부분을 잡는다는 뜻입니다.


결국,


디버그(DEBUG)란  " 프로그램에서 잘못된 부분을 찾아내어

프로그램을

 수정하는

작업"을 말합니다.


 버그의 종류에는 리스트를 보는 것만으로 수정할 수 있는 것과 실행해

보지 않으면 발견할 수 없는 버그도 있읍니다.

그래서 디버거가 필요합니다.






디버거란


 프로그램을 조금씩 실행시키면서 레지스터나 메모리의 내용을 살피는

것으로 서 ,프로그램이 기대한대로 동작하고 있는가를 살피기 위한

툴(TOOL,도구)입니다.


MS-DOS 에는 이러한 디버그 작업을 하기 위해서 DEBUG.COM이라는 프로

그램이 있읍니다.



* 다음 프로그램을  SAMPLE.ASM 로 저장한 후 컴파일 해봅시다.


;THIS IS SAMPLE PROGRAM

MAIN  SEGMENT

ASSUME CS:MAIN

;

START:  MOV DL,21H

NEXT: MOV AH,2

INT 21H

INC DL

CMP DL,7FH

JBE NEXT

;

MOV AH,4CH

INT 21H

MAIN  ENDS

END  START


그럼  디버거를 기동시켜 봅시다.






"-" 는 디버거의 프롬프트입니다.

"R" 은 프로그램이 읽어드린 직후의 레지스터의 내용이 어떻게 되어

있는지

 알아보기 위한 명령입니다.


C:ASM>DEBUG SAMPLE.EXE

-R

AX=0000  BX=0000  CX=0011  DX=0000  SP=0000  BP=0000

 SI=0000  DI=0000


DS=4AE0  ES=4AE0  SS=4AF0  CS=4AF0  IP=0000 NV

UP EI PL NZ NA PO NC  


4AF0:0000 B221  MOV

DL,21  



"R" 명령을 입력하게 되면 각 레지스터의 내용이 표시됨과 동시에 CS와

IP

에 의해나타나는 번지에 저장되어 있는 명령  하나 역어셈블 되어 표시

됩니다

IP 는 소스화일 중의 END 문에 의해 지정된 "프로그램의 실행개시 번지"

를 나타냅니다 이경우에는 명령의 선두가 시작번지 이므로 IP=0 으로 되어

있읍니다.지정하지 않았을 경우에도 IP=0 으로 시작합니다.

그래서 프로그램 개시번지는  CS 의값 4AF0 과 IP 의 값 0000 에 의해


 " 4AF0:0000 B221  MOV DL,21 "


입니다.






여기서 세그먼트 레지스터 의 값을 보면 다음과 같읍니다.

DS=ES=4AE0H

SS=CS=4AF0H

EXE 모델은 앞에서 설명한 것과 같이 PSP 가 100H 바이트가 있어서

DS,ES가 PSP의 선두를 SS,CS 가 PSP보다 100H바이트 앞의 프로그램의

선두 번지를 나타내도록 설정된 후 실행이 개시되므로 DS,ES와 SS,CS와의

세그먼트 베이스의 차이는 항상 10 만큼 차이가 남니다.오프셋 번지로

따지면  항상 100H 바이트 만큼 차이가 납니다.


역 어셈블리에는  U 커맨드를 사용합니다.(번지와 바이트를 주의)


U0  ---코드 세그먼트의 오프셋 번지 0 으로부터 20H 바이트 분을

역 어셈블 하라( U0,1F 와 U0L20 와 같은

명령)

U0,20---0H 번지로 부터 20 번지 까지 역어셈블 하라는 명령

( U0L21 과 같은명령)

U0L20-- 0H 번지로 부터 20 바이트 분을 역어셈블 하라는 명령


-U0  

 

4DB0:0000 B221  MOV

DL,21

4DB0:0002 B402  MOV

AH,02

4DB0:0004 CD21  INT

21  

4DB0:0006 FEC2  INC

DL  

4DB0:0008 80FA7F  CMP DL,7F

 

4DB0:000B 76F5  JBE

0002  

4DB0:000D B44C  MOV

AH,4C

4DB0:000F CD21  INT

21  

4DB0:0011 65  DB

 65  

4DB0:0012 0D0A00  OR  AX,000A


4DB0:0015 3339  XOR

DI,[BX+DI]  

4DB0:0017 7944  JNS

005D  

4DB0:0019 7B44  JPO

005F  

4DB0:001B 49  DEC

CX  

4DB0:001C 6E  DB

 6E  

4DB0:001D 7661  JBE

0080  

4DB0:001F 6C  DB

 6C  

-U0,20  

4DB0:0000 B221  MOV

DL,21  

4DB0:0002 B402  MOV

AH,02

4DB0:0004 CD21  INT

21  

4DB0:0006 FEC2  INC

DL  

4DB0:0008 80FA7F  CMP DL,7F


4DB0:000B 76F5  JBE

0002  

4DB0:000D B44C  MOV

AH,4C

4DB0:000F CD21  INT

21  

4DB0:0011 65  DB

 65  

4DB0:0012 0D0A00  OR  AX,000A


4DB0:0015 3339  XOR

DI,[BX+DI]  

4DB0:0017 7944  JNS

005D  

4DB0:0019 7B44  JPO

005F  

4DB0:001B 49  DEC

CX  

4DB0:001C 6E  DB

 6E  

4DB0:001D 7661  JBE

0080  

4DB0:001F 6C  DB

 6C  

4DB0:0020 69  DB

 69  

-






프로그램을 실행할 때는 G 커맨드를 씁니다.

000FH 번지에 "INT 21"이 마지막 명령이므로 이 명령이 있는 번지를


종료 번지로 사용합니다.


G=0,F  ; 0000H번지 부터 000FH 번지까지 수행하라는 명령


디버거에 의하여 프로그램의 0 번지부터 0FH 번지의 직전까지 실행이

됩니다. 즉, 0FH 번지에 있는 INT 21 은 실행이 되지 않읍니다.


-G=0,F  

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdef

ghijklmnopqrstuvwxyz{}  

 

AX=4C7F  BX=0000  CX=0011  DX=0080  SP=0000  BP=0000

 SI=0000  DI=0000

DS=8A92  ES=8A92  SS=8AA2  CS=8AA2  IP=000F OV

UP EI PL NZ AC PO NC

8AA2:000F CD21  INT

21  

-Q

종료번지는 반드시 역어셈블 리스트에 나타난 명령의 번지를 지정하여야 할

필요가 있읍니다.만일 종료 명령을 지정하지 않고 실행하면 다시 디버거를

기동시켜야 합니다.

다음은 종료 번지를 안 주고 실행한 경우 입니다.


-G=0  

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdef

qrstuvwxyz{}

Program terminated normally

-G=0

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdef

qrstuvwxyz{}

C:ASM>






디버거를 마칠 때는 Q 커맨드를 사용합니다.


-Q

C:ASM>



ID:
PW:

     0 분
     5 분

자유게시판

건강백과 HOME

홈페이지 HOME

조   약     HOME

생활지혜 HOME

서식양식 HOME

법원 전산양식 검색

In Na zum

비공개 HOME

백과넷 포탈 : 건강/법률(메인)/홈피/서식/조약/생활지혜

◁ 2002.9.1.~2021.4.11. ▷

관리자 연락(저작권 의심 신고) : 김병희 010-6204-4973 k8z7@hanmail.net