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