NASM - 2

Programming/OS Development 2009. 6. 29. 17:03
11. jc
    -> jc read : 에러가 나면 다시 read로 가서 수행.
                     CF bit의 Set 여부 체크. Set 되어 있을 경우 Read 로 점프 하여 다시 디스크를 읽는다.

12. call
      -> call printf : printf 함수 호출

13. xor
     -> xor ax, ax : 같은걸 xor하면 0으로 만들어짐.  다르면 1, 같으면 0 으로 셋팅.
 
14. or
     -> or  :  같은 것을 or하면 같은 값 나옴.
 
15. ret
     -> 함수 호출 한 부분으로 돌아가기. Stack의 최상위 부분의 return 값으로 돌아간다.
     iret ( Interrupt return ) 16-bit operand size / iretd : 32-bit / iretq : 64-bit
     -> 예외나 인터럽트 핸들러 로 부터 복귀 할 때 사용하는 명령어. or nested task 로 부터 돌아오는 명령어( call 명령어에 의해 nested task 발생 - Task Switching 시에 NT 비트가 1로 Set )

16. lea
     -> lea esi, [msgKernel] : msgKernel 문자열이 있는 곳의 주소를 구한다.

17. cli <-> sti
     -> EFLAGS Register 의 IF( interrupt flag ) 비트를 0으로 clear
     -> sti : IF 비트를 1로 set. Interrupt 활성화.
 
18. cld
     -> EFLAGS Register 의 DF( direction flag ) 비트를 0으로 clear

19. lgdt
     -> gdtr 포인터에 따라 GDT를 등록시키는 명령어

20. rep movsb
     -> DS : ESI -> ES : EDI 방향으로 cx 값 만큼 복사 수행. cx 8이면 8byte.
         Move (E)CX bytes from DS:[(E)SI] to ES:[(E)DI].
     rep stosd
     -> Fill (E)CX doublewords at ES:[(E)DI] with EAX.
 

'Programming > OS Development' 카테고리의 다른 글

RGB 색상 코드 표  (2) 2009.07.19
NASM - 3  (0) 2009.06.29
VGA 관련  (0) 2009.06.19
하드 디스크 드라이버 ( Hard Disk Driver )  (0) 2009.05.29
OS 제작의 원리 그리고 Codes - Ch 6. Memory Management  (1) 2009.05.19

설정

트랙백

댓글