실행환경
- cpu : 인텔계열(64bit)
- 컴파일러 : nasm
- 리눅스 : ubuntu 16.04 LTS
설치방법
- sudo apt-get install nasm
컴파일
- nasm -f elf64 파일명.asm -o 파일명.o --> 목적파일을 만든다.
- ld 파일명.o -o 파일명 --> 실행파일을 만든다.
4. 구구단을 만들어라
1*1=1 2*1=2 3*1=3 4*1=4 5*1=5
1*2=2 2*2=4 3*2=6 4*2=8 5*2=10
1*3=3 2*3=5 3*3=9 4*3=12 5*3=15
//등등
6*1=6 7*1=7 8*1=8 9*1=9
6*2=12 7*2=14 8*2=16 9*2=18
6*3=18 7*3=21 8*3=24 9*3=27
exam4.asm
section .data
x db 'x'
e db '='
ent db 0x0A
space db ' '
section .bss
n1 resb 1
n2 resb 1
re resb 2
buf resb 1
buf2 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:
mov rcx,9
mov rdx,2
push rdx
_fir:
mov bl,'1'
mov al,'1'
mov [buf],al
mov al,5
mov [buf2],al
jmp _lp
_sec:
mov rcx,9
mov bl,'1'
mov al,'6'
mov [buf],al
mov al,4
mov [buf2],al
_lp:
mov al,[buf]
push rcx
mov rcx,[buf2]
_lp2:
push rcx
mov [n1],al
mov [n2],bl
sub al,'0'
sub bl,'0'
mul bl
call _div
call _print
mov al,[n1]
mov bl,[n2]
inc al
pop rcx
loop _lp2
write ent,1
mov al,[n1]
mov bl,[n2]
inc bl
pop rcx
loop _lp
pop rdx
dec rdx
cmp rdx,0
je _exit
jmp _sec
_div:
mov bl,10
div bl
add al,'0'
add ah,'0'
mov [re],al
mov [re+1],ah
ret
_print:
write n1,1
write x,1
write n2,1
write e,1
write re,2
write space,1
ret
_exit:
mov eax,1
int 0x80
'Programming Language > Assembly' 카테고리의 다른 글
[Assembly] 어셈블리 문제6 (0) | 2016.12.05 |
---|---|
[Assembly] 어셈블리 문제5 (0) | 2016.12.05 |
[Assembly] 어셈블리 문제3 (0) | 2016.12.05 |
[Assembly] 어셈블리 문제2 (0) | 2016.12.05 |
[Assembly] 어셈블리 문제1 (0) | 2016.12.05 |