본문 바로가기
어셈블리어 공부용/emu8086 REPORT (오류보고)

emu8086 어셈블후에 실행시 라벨을 이용한 분기가 제대로 안될 때.

by Redoutable 2019. 8. 16.
반응형

 

어셈블러로 프로그래밍을 하다보면 라벨을 이용해서 분기가 필요한 시점이 있습니다.

하지만 emu8086에서 분기문을 사용할 때는 알아두어야할 사항이 있습니다.

 

 

위 코드에서 JL 분기문이 조건을 만족하면 ENND 라벨로 JMP하게 되어 있습니다.

 

 

 

하지만 코드를 실행해보면, 갑자기 뜬금없이 맨 처음으로 돌아가버립니다.

 

 

 

 

에뮬레이터에서 살펴보니 JL분기문이, 조건을 만족하면 JMP하는 주소가 100h.

즉, 맨 처음으로 돌아가게 되어 있습니다. 우리가 의도한 결과가 아닙니다.

 

 

 

 

 

원인은 바로 저 빨간 원에 있습니다...

'아니 어셈블도 링킹도 제대로 됐는데 뭐가 잘못됐단말인가?'

그건바로 '라벨과 콜론을 붙여쓰지 않았다는 것' 입니다.

이런문제는 오류로 알려주지 않기때문에, 상당히 곤란합니다.

 

 

라벨과 콜론을 붙여서 다시 어셈블 합니다.

 

 

 

그제야 JL분기문이 제대로된 주소를 가르키기 시작합니다.

어셈블하고나서 분기가 제대로 진행되지 않는다면

라벨과 콜론이 떨어져 있는건 아닌지 꼭 확인해보세요.

 

 

 

반응형

댓글