본문 바로가기

Programming Language/Assembly

[Assembly] 어셈블리 문제5

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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


문제5 : 4개의 값을 입력받고 최대값 최소값을 test파일을 생성한뒤 저장하고 화면에 읽어 출력하시오.


exam5.asm

section .data


ma db 'max : '


lma equ $ -ma


mi db 'min : '


lmi equ $ -mi


fname db 'test',0


lf equ $ -fname


space db ' '


ent db 0x0A




section .bss


n1 resb 1


n2 resb 1


n3 resb 1


n4 resb 1


t resb 1


max resb 1


min resb 1


fd resb 1


buf resb 20




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:


mov eax,8


mov ebx,fname


mov ecx,777o


mov edx,lf


int 0x80



mov [fd],eax




read n1,1


read t,1


read n2,1


read t,1


read n3,1


read t,1


read n4,1


read t,1




_max:


mov al,[n1]


cmp al,[n2]


jg _max2




mov al,[n2]


_max2:


cmp al,[n3]


jg _max3




mov al,[n3]


_max3:


cmp al,[n4]


jg _max4




mov al,[n4]


_max4:


mov [max],al



mov eax,4


mov ebx,[fd]


mov ecx,ma


mov edx,lma


int 0x80




mov eax,4


mov ebx,[fd]


mov ecx,max


mov edx,1


int 0x80



_min:


mov al,[n1]


cmp al,[n2]


jl _min2




mov al,[n2]


_min2:


cmp al,[n3]


jl _min3




mov al,[n3]




_min3:


cmp al,[n4]


jl _min4




mov al,[n4]


_min4:


mov [min],al




mov eax,4


mov ebx,[fd]


mov ecx,ent


mov edx,1


int 0x80




mov eax,4


mov ebx,[fd]


mov ecx,mi


mov edx,lmi


int 0x80




mov eax,4


mov ebx,[fd]


mov ecx,min


mov edx,1


int 0x80




_file:


mov eax,5


mov ebx,fname


mov ecx,0x00


mov edx,700o


int 0x80




mov [fd],eax




mov eax,3


mov ebx,[fd]


mov ecx,buf


mov edx,20


int 0x80




write ent,1


write buf,20


write ent,1


_exit:


mov eax,1


int 0x80




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

[Assembly] 어셈블리 문제7  (0) 2016.12.05
[Assembly] 어셈블리 문제6  (0) 2016.12.05
[Assembly] 어셈블리 문제4  (0) 2016.12.05
[Assembly] 어셈블리 문제3  (0) 2016.12.05
[Assembly] 어셈블리 문제2  (0) 2016.12.05