간접주소지정방식(Indirect Addressing Mode)에 관한 질문

gyxor의 이미지

Computer System Architecture 라는 책에서는
주소지정모드를 10가지로 구분하고 있습니다.
그중
*레지스터 모드(Register Mode)는
MOV AX,BX 처럼 레지스터값이 opprand값이 되는경우를 의미하고

*레지스터 간접 모드(Register Indirect Mode)는
MOV AX,[BX] 처럼 레지스터 값이 주소값으로 사용되는 겨우입니다.

*직접 주소 모드(Direct Address Mode)는
MOV AX,[1002H] 처럼 주소값이 직접 주어지는 경우이고

*간접 주소 모드(Indirect Address Mode)는
MOV AX,[1002H],I 처럼
opperand의 값을 주소값으로해서 해당위치에 최종값이 존재하는 방식입니다.
다시말해 직접주소모드에 비해서 메모리 참조가 1번 더 일어나게 됩니다.

이 4가지 중에서 간접주소모드가 헷갈립니다.
왜냐면..
IBM PC Assembly Language and Programming 이라는 책에서는
(직접주소지정은
MOV CX,DS:[38B0H] 이런식으로 위의 정의에 맞게 설명되어있습니다..
Immediate Addressing 이나 Register Addressing 등도 맞게 나와있습니다.)
하지만
간접주소지정은
MOV [BX],25
ADD CL,[BX] 이 예로 나와있습니다.
이는 위에 설명된 레지스터 간접 주소지정방식이 되는데요..

또한 프로그래밍 언어론이라는 책에서도
"스택동적 지역변수의 접근은 간접주소방식이다. 한편 정적 지역 변수의 접근은 직접주소 방식이다"
이렇게 설명하고 있습니다.
실제로 해당 어셈블리코드를 보면 스택동적 지역변수의 경우 레지스터 간접모드입니다.

또한..

#include<iostream>
using namespace std;

int a=10;
int *b = &a;
int **c = &b;
int ***d = &c;

int main()
{
 cout << ***d;

    return 0;
}
위 코드중 ***d 참조부분을 보면

00401558   mov         eax,[d (00473dcc)]
0040155D   mov         ecx,dword ptr [eax]
0040155F   mov         edx,dword ptr [ecx]
00401561   mov         eax,dword ptr [edx]
00401563   push        eax
레지스터 간접주소지정만.. 3번을 하고 있습니다.

어셈블리어에서 간접주소지정모드에 해당하는 지시자 ",I" 가 있는것도 아니고 간접주소지정이
구현이 안되어있기 때문에..
레지스터간접주소지정방식을 간접주소지정방식으로 보는것인가요?

책에 나온 내용대로 레지스터간접주소지정방식과 간접주소지정방식을 구분하는것은 의미가 없는것인가요?

어떻게 결론을 내려야 할지 모르겠습니다.
설명부탁드립니다.

Fe.head의 이미지

*직접 주소 모드(Direct Address Mode)는
MOV AX,[1002H]

*간접 주소 모드(Indirect Address Mode)는
MOV BX,1002H
MOV AX,[BX]

즉 레지스터 간접 모드(Register Indirect Mode)와 같다라고 배웠습니다.^^

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

gyxor의 이미지

그런데
예로드신..
MOV BX,1002H
이것은 즉시주소지정방식(Immediate addressing)
아닌가요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.