0-6. 사칙연산

Crat3 ㅣ 2023. 4. 27. 19:23

1. GET_DEC

GET_DEC 1, al      ; 입력부
GET_DEC 1, num

PRINT_DEC 1, al   ; 출력부
NEWLINE
PRINT_DEC 1, num

GET_DEC [byte] [reg]

 

 

2. 사칙연산

(1) 더하기

add a, b

a는 레지스터 혹은 메모리

b는 레지스터 혹은 메모리 혹은 상수

단 a와 b가 둘 다 메모리일 수 없음.

add al, 1 ; 레지스터 + 상수
PRINT_DEC 1, al
NEWLINE

add al, [num] ; 레지스터 + 메모리
PRINT_DEC 1, al
NEWLINE

mov bl, 3
add al, bl ; 레지스터 + 레지스터
PRINT_DEC 1, al
NEWLINE

add [num], byte 1 ; 메모리 + 상수
PRINT_DEC 1, [num]
NEWLINE

add [num], al ; 메모리 + 레지스터
PRINT_DEC 1, [num]
NEWLINE

 

(2) 곱하기

mul reg

mul bl => al * bl

연산 결과를 ax에 저장

mul bx => ax * bx

연산 결과를 dx(상위 16비트) ax(하위 16비트)에 저장

mov ax, 0
mov al, 5
mov bl, 8
mul bl ; al * bl
PRINT_DEC 2, ax

 

(3) 나누기

div reg

div bl => ax / bl

연산결과를 al(몫) ah(나머지)에 저장

mov ax, 100
mov bl, 3
div bl
PRINT_DEC 1, al
NEWLINE
mov al, ah
PRINT_DEC 1, al  ; ah를 Print 할 수 없기 때문

'어셈블리' 카테고리의 다른 글

0-8. 분기문(If)  (0) 2023.04.28
0-7. 시프트 연산과 논리 연산  (0) 2023.04.28
0-5. 문자와 엔디안  (0) 2023.04.27
0-4. 변수와 레지스터  (0) 2023.04.27
0-3. 레지스터 기초  (0) 2023.04.26