GET_DEC byte, where
10진수를 받아올건데 byte 어디에 받아올건가?
PRINT_DEC 1, al
al을 1byte만큼 출력
더하기 연산
add a, b ;(a = a + b)
a는 레지스터 or 메모리
b는 레지스터 or 메모리 or 상수
단! a, b 모두 메모리는 X
add al, 1 ; 레지스터 + 상수
PRINT_DEC 1, al ; 1 + 1 = 2
NEWLINE
add al, [num] ;레지스터 + 메모리( []안쓰면 주소라서 써야된다)
PRINT_DEC 1, al
NEWLINE
mov bl, 3
add al, bl ;레지스터 + 레지스터
PRINT_DEC 1, al
NEWLINE
add [num], byte 1 ; 메모리 + 상수 num자체는 쌩 메모리 주소라서 얼마만큼 쓸지 해줘야함
PRINT_DEC 1, [num]
NEWLINE
add [num], al ; 메모리 + 레지스터
PRINT_DEC 1, [num]
NEWLINE
sub a, b ;( a = a - b)
mul reg
곱하기는 규칙이 있다
mul bl -> al * bl
연산결과를 ax에 저장
mul bx => ax * bx
연산 결과는 dx(상위 16비트) ax(하위 16비트)에 저장
mul ebx => eax * ebx
ex) 5 * 8 은?
mov ax, 0
mov al, 5
mov bl, 8
mul bl
PRINT_DEC 2, ax
NEWLINE
div reg
나누기도 규칙이 있다
div bl => ax/bl
연산결과는 al(몫) ah(나머지)
ex) 100 / 3 은?
mov ax, 100
mov bl, 3
div bl
PRINT_DEC 1, al
NEWLINE
mov al, ah ; 해주는 이유는 ah는 PRINT_DEC안되서
PRINT_DEC 1, al