INT(Interrupt)와 NOP(No Operation)
INT(Interrupt)
소프트웨어 인터럽트를 발생시켜 운영체제의 서브루틴을 호출한다.
인터럽트 LIst (http://stanislavs.org/helppc/) - Interrupt Services DOS/BIOS/EMS/Mouse
자세한 내용은 다음에 다뤄보도록 하겠습니다.
양식으로는 상수만 사용할 수 있다.
INT imm
Ex) INT 10
NOP(No Operation)
아무 일도 하지 않는 명령어이며, 리버싱 작업에서 목적에 따라 유용하게 사용 될 수 있다.
실습 환경
VMware Workstation 15 Player (FREE 버전)
Windows XP Professional SP3 (32Bit)
CMD창을 열어 debug 명령어를 입력합니다.
-a 100
:0100 MOV AH, 9
:0102 MOV AL, 41
:0104 MOV BL, 4
:0106 MOV CX, 1
:0109 INT 10
:010B
-g 10b (명령어 친 후 - 나오면 입력하시면 됩니다.)
INT 명령어를 사용할 때는 INT 10, XX으로 인식을 하게 되는데 이 때 XX에는 AH의 값이 들어가게 됩니다. AH=AX(상위8Bit)
그래서 실제로 INT 명령어가 실행이 되면 INT 10, 9에 해당하는 인터럽트가 발생하게 됩니다.
그림을 자세히 보시면 -g 10b와 AX=0941 사이에 “A”라는 글자가 인터럽트에 의해 출력이 되었습니다.
LOOP
반복문으로 동일한 명령어를 계속적으로 나열하지 않고, 반복하고자 하는 내용을 그룹화하고 LOOP 명령어를 통해 반복 내용을 묶습니다.
LOOP 명령어는 CX(카운터) 레지스터를 사용합니다. CX 레지스터의 값만큼 반복합니다.
이상으로 Interrupt, No Operation, LOOP에 대하여 알아보았습니다.
감사합니다.
'어셈블리어와 악성코드' 카테고리의 다른 글
어셈블리어를 이용하여 1부터 100까지의 합을 구해보자 (0) | 2018.11.23 |
---|---|
레지스터와 메모리에 대하여 알아보기 (0) | 2018.11.22 |
스택(Stack), PUSH, POP (0) | 2018.11.20 |
어셈블리어 명령어 [SHL, SHR]과 Flag (0) | 2018.11.19 |
어셈블리어 XOR을 이용하여 값 바꾸기 (0) | 2018.11.19 |