본문 바로가기

IT/어셈블리어

(1주차-1)어셈블리어 연산 및 문장출력

간단한 문장출력

%include "io.inc"

section .text
global CMAIN
CMAIN:
PRINT_STRING 'Assembly'      ;PRINT_STRING에 저장된 문자열을 출력하는 명령어 
PRINT_STRING 'Language'

xor eax, eax                 ;eax는 연산의 결과를 저장하는 레지스터로 메모리 상 쓰레기값이 있을수 있으므로 초기화 시켜준다
ret

결과


숫자 대입하고 더하기

%include "io.inc"
section .data     ; 변수선언
a dw 0            ; a라는 변수를 double word 로 할당 후 0으로 초기화
d dw 0            

section .text
global CMAIN
CMAIN:
    GET_DEC 2,[a]     ; 사용자의 입력 값을 변수 [a]에 저장
    GET_DEC 2,[b]     
        
    mov eax, [a]      ; 사용자가 입력한 a의 값을 eax에 저장
    add eax, [b]      ; 사용자가 입력한 b의 값과 eax에 저장된 값과 더하기 연산

    PRINT_DEC 2, eax  ; eax에 저장된 값을 출력
    xor eax, eax      ; eax는 연산의 결과를 저장하는 레지스터이며 메모리 상의 쓰레기값이 있을 수 있으므로 초기화 시킨다
    ret

결과


삼칙연산

%include "io.inc"
section .data      ; 변수를 입력
      a dw 0             ; a라는 변수를 선언하고 word로 공간 할당하고 0으로 초기화
      b dw 0
      c dw 0
      y dw 0
 section .text
global CMAIN
 CMAIN:
      GET_DEC 2, [a]    ;사용자가 값을 지정할수있게하기
      GET_DEC 2, [b]
      GET_DEC 2, [c]
    
      mov eax, [a]      ;사용자가 입력한 a의 값을 eax에 저장
      add eax, [b]      ;사용자가 입력한 b의 값을 eax에 저장된 값과 덧셈
      imul eax, [c]     ;사용자가 입력한 c의 값을 eax에 저장된 값과 곱셈
      mov [y], eax      ;eax에 저장된 값을 y에 저장 

    PRINT_DEC 2, [y]    ;y의 값을 출력하기
    xor eax, eax
    ret

결과