본문 바로가기

Assemble

어셈블러 디버거와 보수.. ㅋㅋ

어셈블러 디버거가 이제서야 보이기 시작했다.. ㅋㅋ
흠.. 명령어 머 많이 알고 있지는 않지만.. 그래도 쓸만한거
두개는 알아냈네..
-u 라는 옵셥과 -t  라는 옵션이다.. ㅋ
-u 는 역 어셈블러 하는 것 같고.. 아마 디스어셈블러가 아닐까 싶다..
-t 옵션은 한줄씩 실행하라는 명령어이다.. ㅎ
실행화면을 보자.. -u 는 빼고 -t 명령어 ㅋ

사용자 삽입 이미지

 계속 t 를 눌러서 한줄씩 실행하고 있다.. 그러면 AX, BX 레지스터라든지 SP,BP 등이 변하는게
보인다.. DS 레지스터도 변하게 되는데 화면 맨 오른쪽 부분에 이상한 식으로
튀어 나온게 보인다.. 여기 있는 DS 레지스터와 앞에 있는 DS 레지스터는 머가 다를려나..
정확한 차이는 모르겠지만.. 어셈블리어를 작성하다보면
나중 부분에 "DATA SEGMENT " 부분이 있다..
거기서 변수 선언후 값을 넣게 되는데 그 부분에 대하여 조금 자세히 나오는데 저기 오른쪽으로
튀어 나온 DS에 잘 쓰여져 있다.. 앞의 DS 레지스터 값은 그냥 시작 값에 불가할지도.. ㅋ
저걸 안 순간.. 하~ 라는 감동의 숨결.. ㅎㅎ
별로 어렵지도 않다고 생각할 수도 있지만.. 난 기뻤다 ㅋ

그리고 보수다.. 흠.. 이건 예전에 배울때 별로 중요하게 생각하지 않았었지만
막상 어셈에서는 중요하다고들 한다.. ㅎㅎ
보수 표현을 이용하면.. 원래는 40H 와 50H 를 더하면 90H 가 되는데..
이건 보수표현에서는 -70H 가 된다고 한단다.. 이진수로 나열하면
그렇게 나오니 궁금하면 해보시는게 좋을듯.. ㅋㅋㅋ
이러니 보수에 대해 조금 더 공부가 필요할듯..
다음 팁 한개.. 8비트와 16비트..
------------
|       AX     |
------------
| AH   |  AL |
------------
| 미정|   41  |
-------------
이것은 이렇게 입력하면 나온다...           ->     MOV     AX,41H
------------
|       AX     |
------------
| AH   |  AL |
------------
| 00    |   41  |
-------------
이것은 이렇게 입력하면 나온다...          ->   MOV     AX,0041H

이것은 AH 레지스터에 0을 대입, 8비트 데이터를 16비트 데이터로 확장 한 개념이다..
조금 이해가 갈려나.. ㅎㅎ 난 이부분을 보고 조금 알았다.. ㅋ
근데 내가 아는게 맞나 몰라 ㅎㅎ 흠.. 갑자기 자신이 약해지는데 ㅋㅋ