86 lines
972 B
Markdown
86 lines
972 B
Markdown
|
|
# 어셈블러작성
|
|
|
|
|
|
## LED 프로그램작성
|
|
|
|
LED 를 제어하는 데 필요한 명령어를 구성을 한다.
|
|
|
|
### C 언어 표현
|
|
|
|
C 언어로 작성된 프로그램은 다음과 같이 동작하는 프로그램
|
|
|
|
```c
|
|
|
|
#include <stdint.h>
|
|
|
|
void LED_ON(void);
|
|
void LED_OFF(void);
|
|
void DELAY(uint32_t ms);
|
|
|
|
int main(void)
|
|
{
|
|
int R0;
|
|
|
|
R0 = 10;
|
|
|
|
LOOP:
|
|
LED_ON();
|
|
DELAY(1000);
|
|
|
|
LED_OFF();
|
|
DELAY(1000);
|
|
|
|
R0--;
|
|
|
|
if (R0 != 0)
|
|
goto LOOP;
|
|
|
|
END_ON:
|
|
LED_ON();
|
|
|
|
while (1)
|
|
{
|
|
// JMP END_ON
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
```
|
|
|
|
### ASM 언어 표현
|
|
|
|
- [led.asm 다운로드](files/led.asm)
|
|
|
|
|
|
```asm
|
|
|
|
LOAD 10 ; R0 = 5
|
|
|
|
LOOP:
|
|
LED_ON ; LED 켜기
|
|
DELAY 1000 ; 대기
|
|
|
|
LED_OFF ; LED 끄기
|
|
DELAY 1000 ; 대기
|
|
|
|
DEC ; R0 = R0 - 1
|
|
|
|
JNZ LOOP ; R0 != 0이면 LOOP로 이동
|
|
|
|
JZ END_ON ; R0 == 0이면 END_ON으로 이동
|
|
|
|
END_ON:
|
|
LED_ON ; LED 켠 상태 유지
|
|
JMP END_ON ; 무한 반복
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|