-
20140731 (Assembly loop, 배열, lea, pipe line)부산IT학원/스마트컨트롤러 2014. 7. 31. 10:24
114일차
--------------
Assembly
--------------
------- Conditional Jump Instruction 종류
--- 숫자 맞추기 게임을 통한 Assembly 예제 소스
------- loop Instruction
반복문
점프문과 비슷하나 일정 반복에 더 강점을 갖고 있다.
점프 범위는 -128 ~ 127 byte 이다.
이런식으로 사용한다.
ECX Reg와 관련이 있다.
(EAX, EDX는 계산 관련, EBX는 주소 관련 Reg이다.)
ECX의 값이 0이 될 때까지 계속 돈다.
--- 배열
지금까지 소스에서 문자열 배열을 가끔 봐 왔고
숫자 배열도 문자열 배열과 마찬가지로 선언한다.
Array DWORD 10 DUP (?)
C => int Array[10];
이렇게 사용한다.
--- lea Instruction
주소 값을 대입한다.
lea ebx , number1
C => ebx = &number1;
배열과 점프, lea 예제)
------- Pipe line
CPU가 명령을 실행하는 과정이 3가지가 있다.
- Fetch an instruction from memory 명령을 가져옴
- Decode the instruction 명령을 해석
- Execute the instruction 명령 실행
이것이 이어지는 것을 pipe line 이라고 한다.
그런데 여기서 문제가 jump문이 나올 때 이 pipe line이 깨지기 때문에
반복문, 제어문을 많이 사용하면 CPU의 효율이 떨어진다.
그렇다고 반복문, 제어문을 사용하지 않을 수 없으니
반복문과 제어문을 사용할 때 이런 것을 생각하고 작성해야 한다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140804 (Assembly procedure(함수 구현), call, ret, 지역변수, Entry Code, Exit Code) (0) 2014.08.04 20140801 (Assembly push, pop, pushad, popad, pushfd, popfd) (0) 2014.08.01 20140730 (rounding factor, adc, sbb, clc, stc, cmc, jmp, cmp) (0) 2014.07.30 20140729 (Assembly imul, idiv, div, cbw, cwd, cdq, cwde, movsx, movzx) (0) 2014.07.29 20140728 (add, sub, inc, dec, neg, mul) (0) 2014.07.28