본문 바로가기

Programming Language/Assembly

[Assembly] 어셈블리 Test1

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

- nasm -f elf64 파일명.asm -o 파일명.o  --> 목적파일을 만든다.

- ld 파일명.o -o 파일명  --> 실행파일을 만든다.


문제 : 두 개의 값을 두 개의 변수에 입력한 후 내용을 서로 교환하여 출력

       num1 = 1, num2 = 2

       num1 = 2, num2 = 1


test1.asm

section .data


first db "first : "


len1 equ $ -first


second db "second : "


len2 equ $ -second


tab db 0x20


newline db 0x0a




section .bss


num1 resb 1


num2 resb 1


temp resb 1




section .text


global _start




%macro write 2


mov eax,4


mov ebx,1


mov ecx,%1


mov edx,%2


int 0x80


%endmacro




%macro read 2


mov eax,3


mov ebx,1


mov ecx,%1


mov edx,%2


int 0x80


%endmacro




_start:


write first,len1


read num1,1


read temp,1


write second,len2


read num2,1


read temp,1




call _tempFunc




write num1,1


write tab,1


write num2,1


write newline,1




mov eax,1


int 0x80




_tempFunc:


mov al,[num1]


sub al,'0'


mov bl,[num2]


sub bl,'0'




mov [temp],al


mov al,bl


mov bl,[temp]



add al,'0'


add bl,'0'




mov [num1],al


mov [num2],bl


ret


'Programming Language > Assembly' 카테고리의 다른 글

[Assembly] 어셈블리 Test3  (0) 2016.12.04
[Assembly] 어셈블리 Test2  (0) 2016.12.04
[Assembly] 매크로를 이용한 구구단 출력  (0) 2016.12.04
[Assembly] 구구단 출력  (0) 2016.12.04
[Assembly] 재귀함수 구현  (0) 2016.12.04