크리에이티브 커먼즈 라이센스

홈페이지HOME

PHP

JavaScript

HTML

CSS

드롭다운메뉴

제로보드4

도   움   말

백지 건강강좌/자가임상체험

물박사(자가면역질환...)^미러

전동명(천연물질사전)^미러

竹田 장승옥(블로그)^글목록

계산환산(계산기)^ 단위변환

관주성경 TTS 일반파일 TTS

바이블로 Bible_ro 다운로드

다운로드>폰에 복사
>파일선택...설치됩니다.

[도움말 보기] 바로가기

개선 요구, 충고는
아래 관리자 연락
전화/메일 부탁 드립니다.
최대한 빨리 처리하고
업데이트 올리겠습니다.


asm_85.


곱셈명령 MUL,IMUL


     33 이형문 buju8t 01/07 801

     8 곱셈명령을 알자.....MUL,IMUL







곱셈 명령 MUL 에서는 8 비트 * 8 비트 혹은 16 비트 * 16 비트를 계산할 수가

있읍니다.결과는 8비트 곱셈은 16비트,16비트 곱셈은 32비트로 대폭 자릿수가 증가합니다.이

때문에 사용 할 때에는 몇가지 제한이 있게 됩니다.  

우선 곱셈할 한쪽은 반드시 AL레지스터(혹은 AX레지스터)에 넣어 두지 않으면

안됩니다. 결과는 AX 레지스터(혹은 DX 레지스터를 상위 16비트 ,AX 레지스터를 하위

16비트로 간주한 32 비트 레지스터)에 저장됩니다.

이와 같이 한쪽 레지스터가 AL,AX 레지스터로 이미 정의되어 있기 때문에 곱셈

명령은

MUL AL,BL

와 같이 오퍼랜드 두개를 지정해 줄 필요가 없고,한쪽레지스터 혹은 한쪽 메모리만을

지정하여

MUL BL

과 같은 식으로 지정합니다.

여기서 지정한 오퍼랜드의 크기가 바이트 단위이면  다른 한쪽의 오퍼랜드의

크기는 AL 레지스터,워드단위면  AX 레지스터로 정해집니다.

곱셈 명령에는 부호없이 숫자를 취급하기 위한명령 MUL 과 IMUL 명령이 있다.

+---------------------------------------+

 MUL --+

범용 레지스터

(8/16비트)  

 貧霽

 ( "  )

 

 IMUL--+

+---------------------------------------+

명령을 사용할 때 오퍼랜드가  메모리 이고 메모리가 바이트단위인지 워드

단위인지 불확실할 때, 꼭 바이트 단위 인지 워드 단위인지를 명시해야 됩니다.






MUL 3 ;곱셈명령에서는 직접 숫자(상수)하고는 곱셈할 수 없다.

--->  MOV BL,3

MUL BL

* 부호없는 두개의 메모리 끼리, 부호있는 두 메모리끼리 곱셈 보기

CODE  SEGMENT

ASSUME CS:CODE,DS:CODE

;

MOV AX,CS

 MOV DS,A X

MOV AL,DATA_1A

MUL DATA_1B

 DATA-1B

는 변수이름이고 ,바이트형의 속성을 가지고 있으므로

 BYTE PTR

의 지정을  생략할 수 있으며 여기서는 AL 레지스터와

 연산이

이루어진다.

MOV ANS1,AX  

MOV AX,DATA_2A  

MUL DATA_2B  

 DATA_2B가

워드형의 속성을 가지고 있으므로 결과가 DX:AX레지

 스터쌍에

의한 32바이트 레지스터에 저장됩니다.

MOV ANS2_A,DX

MOV ANS2_B,AX

;

MOV AL,DATA_3A

MOV BL,DATA_3B

DATA_3B

는 EQU 문장에 의해 상수로 정의되어 있기 때문에 BL

레지스터에

전송한후 계산합니다.

IMUL BL

MOV ANS3,AX

MOV AX,DATA_4A

MOV BX,OFFSET DATA_4B

IMUL WORD PTR [BX]

MOV DI,OFFSET ANS4

MOV [DI],DX

MOV [DI+2],AX

;

MOV AH,4CH

INT 21H

;

DATA_1A DB 0F0H ;변수이름이나

상수이름으로 "?","@","_","$"

DATA_1B DB 11H 등을

사용할 수있으며 길이는 처음부터 31 번째

DATA_2A DW 1234H 문자까지만

구별할 수있읍니다.

DATA_2B DW 2001H

DATA_3A DB -10H

DATA_3B EQU 11H  

DATA_4A DW -1000H

DATA_4B DW 1234H

;

ANS1  DW  ?

ANS2_A  DW  ?

ANS2_B  DW  ?

ANS3  DW  ?

ANS4  DD  ?

;

CODE  ENDS

END]

메크로 어셈블러는 소스 프로그램을 기계어로 번역할 때 전체를 선두로 부 2번

반복해서 읽고 지나가면서 작업을 해나갑니다.






DATA_3B 는 첫번째 읽고 지나갈 때에는 기계어를 결정할 수가 없으므로 최대 바이트인

4바이트를 확보해 둡니다.그리고 마지막쪽에 DATA_3B 가 상수이고 그 값이 11H라는

것을 알 수있읍니다.그래서 두번째 번역 작업을 할 때에 미정이었던 기계어를 결정할

수가 있읍니다. 그러나 완성된 기계어는 2바이트이므로 확보해둔 4바이트 중 2바이트가

남게되고  그래서 불필요한 2바이트에는 NOP(=no operation:아무 것도 하지

않는 것)에 상당하는 90H를 삽입합니다.이와같이 첫번째 읽었을 때 아직 정의되지

않은 라벨이(상수이름,변수이름 등)이 나타나는 것을 "전방참조"라 합니다.

전방참조가 있으면 프로그램의 효율이나쁘게 될 뿐만아니라 최악의 경우 어셈블 에러를

일으킵니다.그래서 어셈블러의 어디에서도 놓을 수가 있지만 가능한한 EQU 문은 프로그램의

선두에 놓도록 합니다.


-G=0,3A


AX=4C00  BX=0045  CX=0053  DX=FEDC  SP=0000  BP=0000

 SI=0000  DI=004F

DS=4FC5  ES=4FB5  SS=4FC5  CS=4FC5  IP=003A OV

UP EI NG NZ NA PE CY

4FC5:003A CD21  INT

21  

-D47,53  

4FC5:0040 F0-0F

46 02 34 92 F0 FE DC  ..

4FC5:0050  FE 00 C0 04 ....


-Q  

같은 수치의 곱셈이라도 부호있는 곱셈과 부호 없는 곱셈은  많은 차이가

난다.  -10 의 보수표현은 F0 이므로 다음은 똑같은 형태를 취하고 있으나 결과

다릅니다.

 ANS1 F0 * 11 = 0FF0

 ANS3  -10 * 11 = FEF0



ID:
PW:

     0 분
     0 분

자유게시판

건강백과 HOME

홈페이지 HOME

조   약     HOME

생활지혜 HOME

서식양식 HOME

법원 전산양식 검색

In Na zum

비공개 HOME

백과넷 포탈 : 건강/법률(메인)/홈피/서식/조약/생활지혜

◁ 2002.9.1.~2019.11.22. ▷

관리자 연락(저작권 의심 신고) : 김병희 010-6204-4973 k8z7@hanmail.net