반응형

1. 사칙연산


1). 덧셈 : ADD (al, ax, eax 레지스터를 씁니다)



덧셈 예제)



[실습] a와 b를 더해서 30을 출력하시오



mov는 메모리, 메모리가 나올 수 없기 때문에 저렇게 코드를 짰습니다.


2). 뺄셈 : SUB


3). 곱셈


 - MUL(unsigned) 인자가 한개

 크기가 커지면 나눠서 곱해집니다


곱셉 예제)



앞에서 앞 16비트를 뭘 썼는지 모르므로 eax를 0으로 초기화 해줘야합니다




상위 edx는 왼쪽으로 16비트 밀어줘야합니다 그리고 eax값을 더하면 곱한값을 구할 수 있습니다.


- IMUL(signed) 인자가 한개부터 세개




4). 나눗셈


 - DIV(unsigned)


몫과 나머지나 나뉘어서 들어갑니다.


나눗셈 예제)



나누기 예제) 100000을 46으로 나누기



나머지가 6 몫이 21739가 잘 나옴을 알 수 있습니다.


 - IDIV(signed)



[실습] 두 정수를 입력 받아서 덧셈, 뺄셈, 곱셈, 나눗셈(몫과 나머지) 출력하는 어셈블리 프로그램을 작성


! 입력값의 크기는 8비트로 제한



*간과하면 안되는것들


ax에 피제수를 넣는것!


ax dx 나눠지는것을 유의할것


!div 명령어  사용할 때


 - Floating Point Error 발생


 - DIV 명령어 전에 다음의 명령어 중에 하나를 사용


 - CBW :Convert Byte to word (ax <-al)


 - CWD :Convert word to double Word(dx:ax <- ax)


 - CDQ :Convert double word to quad Word(edx:eax <-eax)


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기