[ Assemble ] 어셈블리 곱셈(mul)/ 나눗셈(div) 연산 실습(1byte)

2020. 4. 15. 17:27·Archive/Hacking
728x90
반응형

 

SASM 환경에서 진행합니다.

 

 

 

Assemble 곱셈 실습

 

어셈블리어에서의 곱셈/나눗셈은 덧셈, 뺄셈보다 조금 복잡합니다.

이번 포스팅은 1byte 곱셈 / 1byte 나눗셈만 다뤄보겠습니다.

 

우선, AX 라는 레지스터는 AH 와 AL 로 나눌 수 있습니다.

이걸 알고 넘어가야 이해할 수 있습니다.

 

AX
AH AL

 

 

곱셈의 형식은 이러합니다.

 

mul 파라미터

 

 

우리가 아는 곱셈의 형식은 피연산자가 2개인, A*B 의 형태입니다.

하지만 어셈블리어에서는 마치 피연산자가 1개인 것 처럼 보입니다.

 

 

핵심만 말하겠습니다.

mul 뒤에 붙는 파라미터 값은 AL 과 곱해져 AL에 저장됩니다.

 

 

AL에 저장된다는 것은, AX에서도 그 값을 볼 수 있다는 말입니다.

 

말로는 조금 어려우니, 코드로 볼까요?

 

 

 

 

 

ax에 0이 들어있는 상황에서, al에 2를, bl에 3을 넣어줍니다.

그리고 mul 을 이용하여 bx와 곱해줍니다.

 

 

 

 

mul bx 만 보도록 하겠습니다.

 

저것은 AX=AL*BL 과 같은 말입니다.

 

al 과 파라미터(bl) 을 곱해준 값을 ax에 넣었습니다.

 

출력하면, 6이 나오는 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

Assemble 나눗셈 실습

 

 

AX
AH AL
나머지 몫

 

AH는 나머지를, AL 은 몫을 표현하는데에 쓰입니다.

 

 

나눗셈의 형식은 이러합니다.

 

div 파라미터

 

 

 

나눗셈도 핵심만 말하겠습니다.

div 뒤에 붙는 파라미터 값은 AL을 나누는 수로, 몫은 AL에, 나머지는 AH에 저장됩니다.

 

 

 

 

나누어지는 값은 반드시 AX 레지스터 안에 있는 값이여야합니다.

코드로 확인해보시죠.

 

 

 

 

ax에 7, bx 에 2를 넣고

div 연산을 해줍니다.

 

 

al 을 확인해보니 몫이 제대로 나온 것을 확인할 수 있고,

ah값을 bl 로 옮겨 확인해보니 나머지도 제대로 연산이 된 것을 확인할 수 있었습니다.

 

 

 

 

 

728x90
반응형

'Archive > Hacking' 카테고리의 다른 글

[ Register ] 범용 레지스터 종류 & 범용 레지스터 역할  (0) 2020.04.19
[ Pwnable ] pwnable.kr 1번 fd 풀이  (2) 2020.04.15
[ Assemble ] 어셈블리어 덧셈(add)/뺄셈(sub) 실습  (1) 2020.04.15
[ Assemble ] 어셈블리 입력 매크로함수  (2) 2020.04.15
[ Assemble ] 문자열 변수 선언 & 출력  (0) 2020.04.15
'Archive/Hacking' 카테고리의 다른 글
  • [ Register ] 범용 레지스터 종류 & 범용 레지스터 역할
  • [ Pwnable ] pwnable.kr 1번 fd 풀이
  • [ Assemble ] 어셈블리어 덧셈(add)/뺄셈(sub) 실습
  • [ Assemble ] 어셈블리 입력 매크로함수
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    Git
    오라클
    보안뉴스
    백준 파이썬
    파이썬
    백준
    코드업 파이썬 기초 100제
    코드업 기초
    C++
    oracle db
    백준 풀이
    파이썬 백준
    javascript
    카카오 100일 프로젝트
    Oracle
    백준 문제풀이
    코드업
    비박스
    docker
    Codeup
    Python
    파이썬 기초 문제
    파이썬 문제
    자바스크립트 객체
    파이썬 기초
    파이썬 알고리즘
    Django
    장고
    자바스크립트
    자바스크립트 API
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Assemble ] 어셈블리 곱셈(mul)/ 나눗셈(div) 연산 실습(1byte)
상단으로

티스토리툴바