- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- GPIO
- API
- Python
- 메소드
- 쉘 스크립트 기초
- 쉘 스크립트
- 프로젝트
- nginx
- Java
- Android
- 그라파나
- Linux
- RaspberryPi
- Tkinter
- GUI
- 리눅스
- 클라우드
- docker
- synology
- JSP
- 라즈베리파이
- LEVIATHAN
- 안드로이드
- 쉘 스크립트 if문
- 자바
- Shell script
- System
- centos docker
- 네트워크
- ACL
- Today
- Total
IT창고
System 어셈블리어 반복문 본문
어셈블리어의 반복문(for, while, do_while)에 대해 알아보겠습니다.
어셈블리어에서 분기문과 반복문의 차이는 jmp명령어를 사용해서 반복시켜주는가 아닌가로 나눠집니다. 분기문과 반복문의 차이가 거의 없습니다.
어셈블리어에서 증감명령어가 있는데 inc, dec 명령어가 있습니다.
inc 명령어는 메모리나 레지스터 값을 1씩 증가 시킵니다.
dec 명령어는 메모리나 레지스터 값을 1씩 감소 시킵니다.
먼저 간단한 반복문을 만들어보겠습니다.
C언어로 만든 소스입니다.
10값에서 1씩 감소하는 프로그램입니다.
이와 같은 기능을 가진 어셈블리어를 만들어보겠습니다.
반복문과 분기문의 차이는 코드가 반복되는가 아닌가의 차이입니다. 무한루프에 빠지지않도록 조건 분기를 꼭 주어야 합니다.
C언어로 for문을 확인하면 아래의 코드와 같습니다.
int cnt = 10;
int main(){
for( ; cnt > 0 ; cnt -- ){
printf("%d\n",cnt);
cnt--; //inc(++), dec(--)
}
return 0;
}
실행결과는 while문과 똑같고 위에 만든 어셈블리어의 결과와도 같습니다.
이번에는 문자열을 입력받아서 거꾸로 출력하는 어셈블리어 프로그램을 작성하겠습니다.
입력은 scanf, gets, fgets, 등 어떤것이든 상관없습니다. 단 문자열 길이가 1024byte를 넘으면 안됩니다.
우선 C언어로 구성해보았습니다. 이제 어셈블리어로 만들어보겠습니다.
어셈블리어로 만들경우 유효주소를 이용한 연산을 할때 [] 안에서 메모리와 메모리는 +를 이용한 연산이 불가능하기에 뮨자열 길이를 담고있는 레이블 주소 buffer의 값을 레지스터에 옮겨서 연산을 해야합니다.
'보안 > System' 카테고리의 다른 글
System main함수의 인자와 시스템콜 (0) | 2018.01.23 |
---|---|
System 메모리구조와 어셈블리어 함수 (0) | 2018.01.22 |
System 명령어와 분기문 (0) | 2018.01.17 |
System 어셈블리어 사칙연산 (1) | 2018.01.17 |
System 레지스터(Register) (0) | 2018.01.16 |