본문 바로가기

Programming Language/Assembly

[Assembly] 숫자 곱하기

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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


mul.asm

section .data

first db 'first : '

len1 equ $ -first

second db 'second : '

len2 equ $ -second

end db 0x0a


section .bss

num1 resb      5

num2 resb      5

result resb     5

result1 resb 5


section .text

global _start


_start:

;first 출력

mov eax,4

mov ebx,1

mov ecx,first

mov edx,len1

int 0x80


;first 입력

mov eax,3

mov ebx,1

mov ecx,num1

mov edx,len1

int 0x80


;second 출력

mov eax,4

mov ebx,1

mov ecx,second

mov edx,len2

int 0x80


;second 입력

mov eax,3

mov ebx,1

mov ecx,num2

mov edx,len2

int 0x80


mov al,[num1]

sub al,'0'

mov bl,[num2]

sub bl,'0'


mul bl

mov [result],al


mov al,[result]

mov bl,10


div bl


add al,'0'

add ah,'0'

mov [result1],al

mov [result1+1],ah


mov eax,4

mov ebx,1

mov ecx,result1

mov edx,2

int 0x80

mov eax,4

mov ebx,1

mov ecx,end

mov edx,1

int 0x80


mov eax,1

int 0x80