필자가 작성한 8086 어셈블러에 문제가 있습니다. 문제는 어셈블러 통과에 있습니다.어셈블러에서 문제가 발생합니다.
패스 1 동안 각 라벨의 세그먼트와 관련된 위치를 계산합니다.
이제 각 명령어의 크기를 계산하여 오프셋에 추가해야합니다.
레이블의 위치가 범위 내에 있으면 8086의 일부 지침이 더 작아야합니다. 예를 들어 "jmp _label"은 가능한 경우 짧은 점프를 선택하고 그렇지 않으면 점프 할 수 없습니다.
이제 문제는 1 번 레이블에 도달하지 않았기 때문에 "jmp short _label"이 "jmp near _label"명령보다 작기 때문에 명령어의 크기를 결정할 수 없습니다.
날씨를 "jmp _label"이 "jmp short _label"이되도록 어떻게 결정할 수 있습니까?
현재 명령 앞에 오프셋을 지정하기 전에 모든 명령의 크기를 알아야하기 때문에 세 번의 통과가 문제가 될 수도 있습니다.
감사
나는 가능한 해결책을 생각해 봤으면 동의 하는가? – NibbleBits
당신이 동의하면 가능한 해결책을 알았습니까? 내가 할 수있는 일은 추측을하고 짧은 점프를 선택하는 것입니다. 세그먼트에 대한 크기를 계산 한 후에는 추적을 수행하여 각 명령 오프셋을 수정하면 실수인지 여부를 확인합니다. 이 방법은 느리지 만 더 좋은 방법이 있으면 알려주세요. – NibbleBits
8086 용 어셈블러를 작성하고 있습니다. 거기에서 어셈블러로 생성하는 컴파일러를 작성 했으므로 어셈블러에서 컴퓨터 코드가 생성됩니다. – NibbleBits