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

홈페이지HOME

PHP

JavaScript

HTML

CSS

드롭다운메뉴

제로보드4

도   움   말

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

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

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

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

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

관주성경 TTS 일반파일 TTS

바이블로 Bible_ro 다운로드

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

[도움말 보기] 바로가기

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


asm_74.


제 5 절  간접지정 방식의 조합법


     13 이형문 buju8t 12/21 1189

     6 간접지정 방식의 조합법을 알아봅시다.







1. 프로그램 소스

다음에 소개하는 프로그램은 내용은 앞 강의에서 보았던 프로그램과 동일하지만

구조를 약간 바꾸어 데이터를 별도로 데이터 세그먼트에 정의한 것이다.


     1. MAIN  SEGMENT

     2. ASSUME CS:MAIN,DS:DATA

     3. MOV AX,DATA

     4. MOV DS,AX

     5. MOV BX,OFFSET

    XXX

     6. MOV DL,[BX]

     7. MOV AH,2

     8. INT 21H

     9. MOV DL,[BX+1]

    10. MOV AH,2

    11. INT 21H

    12. MOV DL,[BX+2]

    13. MOV AH,2

    14. INT 21H

    15. MOV AH,4CH

    16. INT 21H

    17. ;

    18. MAIN  ENDS  

    19.

    20. DATA  SEGMENT

    21. XXX DB  'ABC'

    22. DATA  ENDS

    23. END







이미 다 알겠지만 이 프로그램의 전체적인 모양을 요약하면 다음과 같다.


    main  segment ......main  ends

    ASSUME

    CS:MAIN,DS:DATA

    data  segment ......data  ends

    end


각 세그먼트의 시작은 <이름 segment>로 하고 끝은 <이름 ends>로

해 준다.


이후의 문장 스타일로 보아, 이후의 내용은 필자가 정리하지 못하고 이형문 님의

글을 베껴 둔 것 같은 생각이 든다.


간접 지정방식에서 사용되는 레지스터를 알아 봅시다.

간접 지정방식에 사용되는 레지스터는


    BX(베이스 레지스터) SI(소스 인덱스)

    BP(베이스 포인터) DI(데스티 네이션 인덱스)


입니다.

이들 레지스터를 사용해  실행할 수있는 간접 지정은


    [BX] ,  [SI]  라는 것 외에

    [BX+DI],[BX+SI+1]


와 같은 이들 끼리의 조합지정이 가능합니다.

예를 들어


    BX=1000H,SI=1234H


라 하면


    [ BX+SI+4 ] ;1000H+1234H+4=2238H


이므로 2238H번지의데이터를 꺼내거나 저장할 수 있읍니다.






간접지정 조합법의 규칙


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

     BX  SI

    16비트

    숫자

     BP  + DI

    + 8비트

    숫자  

    없음  없음

    없음


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


이표에서 알 수 있듯이


    * [BX+BP],[SI,DI] 등의 조합형은 있을 수가 없다.

    * [BP]  는 사용할수없읍니다.


(이 것은 단순히 기계적 제약에서 오는 것으로  8086의  간접 지정방식은

모두 24가지 밖에 없기 때문입니다.(기계어 코드가 모자릅니다.)

사용하기 위해서는  [ BP + 0 ] 이라고 해야 합니다.

간접 번지 지정법에서는 데이터는 데이터 세그먼트에 있는 것으로 해석되는데,간접지정에

사용하는 레지스터에 BP 레지스터가 포함되는 경우에는 스택 세그먼트에 데이터가

있는 것으로 해석됩니다.그러므로 보통 BP레지스터를 사용한 간접 지정은 피하는

것이 좋읍니다.






* 메모리에서 저장된 문자열 "ABCDEFGG"중 네번째,다섯번째 문자 DF를

출력하는 프로그램


    MAIN  SEGMENT

    ASSUME CS:MAIN, DS:DATA

    MOV AX,DATA

    MOV DS,AX

    MOV BX,OFFSET AA

    MOV SI,3

    MOV DL,[BX+SI]

    MOV AH,2

    INT 21H

    MOV DL,[BX+SI+1]

    MOV AH,2

    INT 21H

    MOV AH,4CH

    INT 21H

    ;

    MAIN  ENDS

    ;

    DATA  SEGMENT

    AA  DB 'ABCDEFG'

    ;

    DATA  ENDS

    END




ID:
PW:

     0 분
     1 분

자유게시판

건강백과 HOME

홈페이지 HOME

조   약     HOME

생활지혜 HOME

서식양식 HOME

법원 전산양식 검색

In Na zum

비공개 HOME

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

◁ 2002.9.1.~2018.8.16. ▷

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