프로그래밍[Univ]/하드웨어

[IA-32] LinkLibrary

Cloud Travel 2012. 5. 31. 11:28

* 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을 출력한다.