2014-06-14 3 views
0

BIOS 인터럽트 int 10h을 사용하여 간단한 0 종료 문자열 인쇄 기능을 구현하고 있습니다. 다음과 같이BX 전용 인덱싱 제한 극복

절차는 다음과 같습니다 dx로 스택에서

  • 팝, 이것은 우리의 문자열이
  • [dx + cx]에서 바이트를 검색 cx
  • 에서 카운터를 설정 시작하는 위치입니다. 0, 반환, 다른 mov 증가 cx
  • int 10h
  • al과 문제는 NASM은 나 인덱스 레지스터로 bx을 사용하게됩니다이다 다시 점 3

로 이동합니다. 나는이 제한의 목적이 누군가의 삶을 더 어렵게 만드는 것이 아니라고 생각하며, 이는 나의 구현에 뭔가 잘못된 것이 있음을 암시한다. 나는 그것을 어떻게 극복 할 수 있는가?

답변

2

16 비트 모드에서는 BX를 사용해야합니다. 예 : see here :

주소 16 비트, 오프셋 값은 세 개의 레지스터 중 하나 일 수 있습니다 경우 : BX, SI, 또는 DI

그 유일한 옵션 인 경우 가
+0

음, 어떻게 변경할 수 있습니다 이 제한을 우회하는 나의 구현? – szczurcio

+0

@szczurcio : 값을 BX로 복사 하시겠습니까? –

+0

음, 물론. 실례합니다, 제 뇌는 그 10 분 동안 멈췄을 것입니다. – szczurcio