* LinkLibrary
- clrscr : console 창을 비우고, 커서를 왼쪽 상단에 위치시킨다.
- crlf : 연속된 Output의 끝을 찍는다.(엔터후 왼쪽으로 커서이동)
- gotoxy : cursor를 (dl,dh)로 이동시킨다.
dl : 0~79 / dh : 0~24
- DumpMem : "ESI(시작주소)"부터 "EBX(간격)"씩 이동하며, "ECX(개수)"개의 16진수를 출력한다.
ex) .data
Array dword 10h,20h,30h
.code
mov esi, offset Array
mov ecx, lengthof Array
mov ebx, type Array
DumpMem ;10h 20h 30h
- DumpRegs : 현재 Register의 상태와 Flag상태를 보여준다
- GetMsecond : "EAX"로 현재시간 값을 return한다.
실행시간 측정시 사용하면 유용하다.
- Delay : 프로그램을 "EAX"(n)만큼 millisecond단위로 쉰다.
- GetCommandtail : program의 command line의 Arguments를 Byte Array에 넣는다.
> ProgramName input.txt output.txt
실행시 input, output등의 파일의 위치를 지정해준다.
프로그램실행시 이 정보를 저장하기 위해서 사용된다.
ex)
.data
cmdTail byte 129 dup(0)
.code
mov edx, offset cmdTail
call GetCommandtail ; edx부터 command argument를 저장한다.
call WriteString ; edx부터 String 출력 : input.txt output.txt
- Random32 : 32bit Random integer값을 "EAX"로 return한다.
- RandomRange : "EAX"에 들어있는 수를 n이라고하면, 0~(n-1)까지 random한 결과를 EAX로 return
- Randomiz : random32, randomRange 실행시 항상 다른 값(다른 Seed)이 나오게 한다.
> 맨위에 한번만 부르면 지속적으로 적용이 된다.
- ReadChar : 사용자로부터 single character를 입력받는다. 받은 값은 "al"에 저장된다.
- ReadHex : 사용자로부터 16진수 값을 입력 받는다. 받은 값은 "EAX"에 저장된다.
- ReadInt : 사용자로부터 32bit signed integer값을 받는다. 받은 값은 "EAX"에 저장된다.
- ReadString : 사용자로부터 String을 받아 들인다.
입력된 Byte의 수(String length)는 "EAX"에 저장된다.
"EDX"로 input을 저장할 시작 위치를 저장한다.
"ECX"로 받을 수 있는 최대 input양을 저장한다.
ex) .data
stringBuf BYTE 30 DUP(10)
stringLen DWORD ?
.code
mov edx, offset stringBuf
mov ecx, (sizeof stringBuf)-1 ; 0가 들어갈 자리 1개를 비워둬야 한다!
call ReadString
mov stringLen, eax ; 0을 제외한 입력받는 char개수
- setTextColor : 출력될 text의 foreground, background 색을 지정한다. eax에 저장
mov eax, whilte+(blue*16) ; 16 = 2^4, 4bit 왼쪽으로 mask 시킨후 더한다. bbbbwwww 형식
setTextColor ; blue의 background색, white의 foreground색을 가진다.
- writeMsg : "Press [enter] to continue..."메세지를 출력후 enter키 입력을 기다린다.
- writeBin : "EAX"값을 2진수로 출력한다.
- writeChar : "al"값을 single character형태로 출력한다.
- writeDec : "EAX"값을 10진수로 출력한다.(부호X)
- writeHex : "EAX"값을 16진수로 출력한다.
- writeInt : "EAX"값을 부호있는 10진수로 출력한다.
- writeString : "EDX"부터 0값이 나올때까지 String을 출력한다.