[토끼] 어셈블리어 Load-EFFECTIVE ADDRESS, STRING DATA TRANSFERS, MISCELLANEOUS DATA TRANSFER 에뮬결과, 코드리뷰
- 최초 등록일
- 2013.02.03
- 최종 저작일
- 2009.09
- 5페이지/ 한컴오피스
- 가격 3,000원
소개글
어셈블리어 과제, 에뮬레이터 결과, 코드 리뷰 수록
목차
Example 4-3 Load-EFFECTIVE ADDRESS
Example 4-3 Load-EFFECTIVE ADDRESS (응용)
Example 4-4 STRING DATA TRANSFERS
Example 4-11 MISCELLANEOUS DATA TRANSFER INSTRUCTIONS
Example 4-12 MISCELLANEOUS DATA TRANSFER INSTRUCTIONS
Example 4-12 (응용) MISCELLANEOUS DATA TRANSFER INSTRUCTIONS
본문내용
Example 4-3 Load-EFFECTIVE ADDRESS
이 코드는 DATA2, DATA1, DI와 SI를 LOAD 하는 코드이다.
LEA 명령어는 16비트 혹은 32비트 레지스터를 OPERAND에 특성화된 데이터의 옵셋주소와 함께 로드하는 명령어이다. 참고적으로 `MOV BX,OFFSET LIST와 LEA BX,LIST‘ 가 있고 이 두 명령어는 서로 등가이다.
.MODEL SMALL // SMALL MODEL 을 선택 한다.
.DATA // 데이터 세그먼트를 시작한다.
DATA1 DW 2000H // 워드단위로 DATA1에 2000H를 정의 한다.
DATA2 DW 3000H // 워드단위로 DATA2에 3000H를 정의 한다.
.CODE // 코드 세그먼트를 시작한다.
.STARTUP // 프로그램을 시작한다.
LES SI,DATA1 // MOV SI,DATA1 MOV ES,DATA2
MOV DI,OFFSET DATA2 // 0002를 DI 에 넣는다.
MOV BX,[SI] // 2000번지의 해당 값을 BX 에 집어넣는다.
MOV CX,[DI] // 0002번지의 해당 값 3000을 CX에 집어넣는다.
MOV [SI],CX // 3000을 SI가 지정하는 주소 2000번지에 집어넣는다.
MOV [DI],BX // 3000을 DI가 지정하는 주소 0002번지에 집어넣는다.
.EXIT
END
컴파일을 해보면 IP의 경우 명령어가 실행할 때마다 해당명령어에 해당되는 걸로 추정되는 값만큼 증가하는 것을 알 수 있었다. 예를 들어 STARTUP은 5만큼, LES명령어는 LES명령어와 MOV명령어는 4만큼씩 증가하여 최종적으로 IP는 0017에서 끝이 났다. 수업시간에 LES 명령어는 MOV SI,DATA1 MOV ES,DATA2로 된다고 배웠는데 결과를 보면서 확인 할 수 있었다.
참고 자료
없음