검색결과 리스트
글
어셈블리언어로 프로그램을 만들기 위해서는 두가지 방법이 있다. 한가지는 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레지스터만을 보여준다 그리고 디버그 지시자가 "-" 에서 ":"로 바뀐다.
프롬프트가 이런모양일때 레지스터의 내용을 바꿀수 있다는것을 의미한다. 새로운 값을 입력해서 레지스터 값을 바꿀수 있고 입력없이 엔터를 누르면 바뀌지 않는다.
설정
트랙백
댓글
글
CPU는 4개의 내부 레지스터를 가지고 있다. 각각은 16비트 이다. 보통 AX, BX, CX, DX로 불리고 8비트로 두개의 레지스터로 나누면 AX는 high byte인 AH와 low byte인 AL 레지스터로 나뉜다. BX, CX, DX도 마찬가지로 적용된다.
레지스터들은 각각의 고유한 이름이 있다:
AX Accumlator
BX Base register
CX Counting register
DX Data register
DS Data segment register
ES Extra segment register
SS Battery segment register
CS Code segment register
BP Base pointers register
SI Source index register
DI Destiny index register
SP Battery pointer register
IP Next instruction pointer register
F Flag register
설정
트랙백
댓글
글
1>ASCII 코드
ASCII 는 American Standard Code for Information Interchange의 약자이다. 이 코드는 각각의 알파벳과 숫자와 기호들을 2진수 7자리까지 나타내고 8번째는 0으로 처리해서 나타낸것이다. 이 방식에서는 각각의 알파벳, 숫자, 기호들은 컴퓨터 메모리 1바이트를 차지한다.
우리는 이 데이터 표현방식이 숫자적 관점에서 볼때 매우 비효율적이라는걸 알수있다. 2진법은 1바이트로 0에서 255까지의 숫자를 나타낼수 있다. 그러나 ASCII의 1바이트는 오직 하나의 숫자만 표현할수있다. 이러한 비효율성대문에 ASCII코드는 주로 텍스트를 저장하는데에 쓰인다.
2> BCD 방식
BCD는 Binary Coded Decimal 의 약자이다. 이 표현방식은 4비트가 0에서 9까지의 숫자를 나타내는데에 쓰인다. 이 방식으로 1바이트당 2개의 숫자를 표현할수있다.
이 방식이 ASCII에 비해서 훨씬 효율적으로 보이지만 2진법보다 효율적이지 못하다. 왜냐하면 BCD는 0에서 99까지밖에 표현할 수 없기때문이다.
이 방식은 상업적인 어플리케이션에서 아주 큰 숫자를 나타내는데 쓰인다. 왜냐하면 이 방식은 계산에서의 오류를 방지하는데 효과적이기 때문이다.
3>부동 소숫점 방식
이 방식은 과학적 표기에 기초해있다. 이 방식은 숫자를 밑과 지수로 나타낸다.
예를들어 1234000은 1.234*10^6으로 나타내어진다. 여기서 지수는 원래 값을 얻기 위해 소숫점이 얼마나 움직여야할지를 가리킨다.
지수가 음수일때는 왼쪽, 양수일때는 오른쪽으로 소숫점이 이동한다
RECENT COMMENT