필기--제2장

1663 단어
#(독서노트) [어셈블리 언어, 왕상]

선행지식

  • 8086 레지스터는 16비트로 이전의 8비트 구조의 CPU와 호환되기 위해 레지스터를 논리적으로 고위와 저위로 나눌 수 있다.예를 들어 유니버설 레지스터 AX, BX, CX와 DX는 모두 AH, AL, BH, BL, CH, CL, DH와 DL로 나눌 수 있다.
  • 따라서 CPU는 두 가지 크기의 데이터를 한 번에 처리할 수 있습니다.하나는 바이트(Byte)로 8비트 구조, 즉 8개bit로 구성된다.다른 하나는 글자(word)로 두 바이트로 구성되어 있으며, 이를 높은 바이트와 낮은 바이트로 나누어 16자리로 나눈다.그래서 8086의 레지스터에는 한 번에 한 글자나 두 바이트를 저장할 수 있다.00101010 11010001 이 2진 코드는 앞쪽은 높은 위치이고 뒤쪽은 낮은 위치입니다.0자리는 0이 아니라 오른쪽에서 왼쪽으로 세는 것이다.
  • 도 글자와 바이트가 다르기 때문에 어셈블리 명령은 조작수의 비트가 일치해야 한다는 것을 주의해야 한다.예를 들어 MOV AX, BL은 잘못된 것이다. 왜냐하면 BL은 8자리이고 AX는 16자리이기 때문이다.
  • 주의해야 할 것은 우리가 알을 조작할 때 알은 독립된 8비트 레지스터로ah와 관계가 없다는 것이다.예를 들어al과 어떤 수를 더하기 위해 진위가 필요할 때 레지스터는ah에 1을 더하지 않는다.그러나 만약에 ax가 가감을 한다면 알과ah 사이에는 진위와 퇴위가 있을 것이다.어쨌든 간단하게 ax=ah+al이라고 생각하지 마세요.

  • 물리적 주소


    메모리 수요가 비교적 많기 때문에 필요한 주소 버스는 CPU 내부 버스보다 많다.8086에서 주소 버스는 20비트이고 CPU는 한 번에 16비트만 처리할 수 있습니다.20비트의 메모리 주소를 합성하기 위해 세그먼트 주소 * 16 + 편이 주소 = 물리 주소의 메커니즘을 설계했다.
  • 물리적 주소는 모든 메모리 단원이 컴퓨터 시스템의 메모리 공간에서 유일한 메모리 주소를 가리킨다.

  • 세그먼트 레지스터


    CS:IP


    코드 세그먼트 레지스터입니다.CS는 현재 명령이 있는 물리 주소의 세그먼트 주소를 대표하고, ip는 편이 주소를 대표한다.이것은 기본적인 쌍이므로 수정이라고 볼 수 없습니다.
    따라서 명령 실행의 구체적인 과정은 CS와 IP에서 데이터를 읽고 CPU에 보내는 주소 가법기에서 물리적 주소를 얻은 다음에 외부 주소 버스를 통해 이 물리적 주소가 가리키는 메모리 단원을 찾아 명령을 CPU에 보내는 명령 버퍼에 읽고 IP에 이 명령의 길이를 더해 현재 실행할 명령을 가리키는 메모리 주소에서 다음 명령을 가리키는 메모리 주소로 바꾸는 것이다.마지막으로 컨트롤러를 통해 명령을 실행합니다.
    참고 IP를 변경한 다음 명령을 실행합니다.이 점은 명령에 IP 값을 변경하는 명령이 있을 때 특히 중요하다.IP를 바꾸려면 MOV를 사용할 수 없고 jmp를 사용해야 합니다.

    구문 코드 예

    mov ax,2000h
    mov cs,ax  //  cs  
    
    jmp 2ae3:3  //   cs=2ae3,ip=3
    jmp ax  //   ip ax   
    

    좋은 웹페이지 즐겨찾기