사칙연산

이번 범위 관련 명령

GET_DEC 1, al  ;al에 1바이트 입력받음
GET_DEC 1, num  ;num에 1바이트 입력받음
    
PRINT_DEC 1, al  ;al의 값 십진수로 출력
NEWLINE  ;개행

더하기 연산

문법: add a, b
의미: a = a + b
a = Register or Memory
b = Register or Memory or Constant (a, b 모두 메모리는 안됨)

add al, 1  ;Register + Constant
add al, [num] ;Register + Memory, 그냥 num을 쓸경우 주소값을 더하게 되어서 크래쉬발생

mov bl, 3
add al, bl ;Register + Register

add [num], byte 1 ;Memory + Constant, 상수를 더할 때는 크기 지정이 필요하다

add [num], al ;Memory + Register

빼기 연산

빼기 연산의 경우 위 더하기 연산과 완전히 같은 형태이다.
add 만 sub로 바꿔주면 완전히 동일

곱하기 연산

문법: mul reg
의미: al에 reg를 곱해서 ax에 저장한다.

어셈블리 언어에서 곱셈(mul)은 하나의 값을 입력하여 al의 값과 곱해주게 된다.

그러므로 원하는 결과를 얻기 위해서는 아래의 코드처럼 al에 미리 원하는 값을 넣어줄 필요가 있다.

; 5 * 8을 수행하는 코드
mov ax, 0
mov al, 5
mov bl, 8
mul bl

나누기 연산

문법: div reg
의미: ax를 bl로 나눈 결과를 각각 al(몫), ah(나머지)에 저장한다.

; 100 / 3을 수행하는 코드
mov ax, 100
mov bl, 3
div bl

좋은 웹페이지 즐겨찾기