2017. 10. 24. 21:28ㆍSystemHacking/Assembly
C언어 반복문을 어셈블리로 직접 작성해보자
[ C언어 ]
- 문자열의 끝을 파악해서 문자개수를 세고, 문자열의 뒤에서부터 출력한다
str buffer[1024] ; scanf("%s",string); while( string[i] != null ){
for( i=index; i >= 0 ; i-- ){
|
[ 어셈블리 ]
str string[1024]; while( string[i] != null ){ index = i; while( i < 0 ){
section .data section .bss section .text while: jz while_end ; Jump Zero, 두 비교값이 같으면 Jump ! inc dword [len] ; jz가 실행되지 않아 코드가 순서대로 진행 ( +1 ) while_end: ; eax 레지스터에 문자의 뒤에서부터 한글자씩 입력되어진다 push eax cmp dword [len], 0 ; 인덱스와 0 을 비교, 문자의 처음으로 도착했다면 end: |
[ 코드 실행 결과 ]
'SystemHacking > Assembly' 카테고리의 다른 글
[9] 어셈블리 스택 메모리를 이용한 간단한 덧셈 ( leave, ret, call ) (0) | 2017.10.27 |
---|---|
프로세스의 메모리 구조 ( + ESP, EBP ) (0) | 2017.10.25 |
[7] 어셈블리 분기문 ( if, switch ) +cmp, jmp (1) | 2017.10.23 |
[6] 어셈블리 비트연산 ( shift, and, or, not ) (0) | 2017.10.20 |
[5] 어셈블리 계산기 , scanf , printf (0) | 2017.10.19 |