본문 바로가기

Programming Language/Assembly

[Assembly] 어셈블리 Test17

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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


문제 : 출력하고자 하는 구구단 단수를 입력받아 해당 단수의 구구단을 출력

       반복적인 구구단 출력을 하고, 0을 입력하면 프로그램 종료


test17.asm

section .data


x db ' x '


lx equ $ -x




eq db ' = '


le equ $ -eq




ent db 0x0A




section .bss


num1 resb 1


num2 resb 1


res resb 2


t 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:


read num1,1


read t,1


mov al,[num1]


mov bl,'0'



_mul:


inc bl


mov [num1],al


mov [num2],bl


sub al,'0'


sub bl,'0'




mul bl



mov bl,10


div bl



add al,'0'


add ah,'0'


mov [res],al


mov [res+1],ah




write num1,1


write x,lx


write num2,1


write eq,le


write res,2


write ent,1




mov al,[num1]


mov bl,[num2]




cmp bl,'9'


je _exit




jmp _mul




_exit:


mov eax,1


int 0x80


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

[Assembly] 어셈블리 Test19  (0) 2016.12.05
[Assembly] 어셈블리 Test18  (0) 2016.12.05
[Assembly] 어셈블리 Test16  (0) 2016.12.05
[Assembly] 어셈블리 Test15  (0) 2016.12.05
[Assembly] 어셈블리 Test14  (0) 2016.12.05