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

emu8086에서 DB 나 DW 등 사용시 주의해야 할 점.

by Redoutable 2019. 8. 17.
반응형

DB나 DW, DD 로 자료영역을 정의 할 때,

 

메인프로시저를 불러오기전에 먼저 선언해두면

프로그램이 제대로 작동이 안되는것을 확인했습니다.

 

그림처럼 메인프로시저를 불러오기전에(CALL MAIN)

NUM1 이라는 데이터 자료 영역을 정의해두면...

 

(박스친 코드가 CALL MAIN 이라는 코드 앞에 있지요?)

 

 

에뮬레이터로 살펴보면 NUM1자료영역코드가 노란색으로 하이라이트 되어 있는데

여기 수록된 명령이 실행되고 있다는 의미입니다.

 

 

얼핏보면 정상적인 동작같지만,

사실은 이 코드는 실행하지않고 건너뛰어야 하는 부분입니다.

예상과는 다르게 레지스터값을 엉망으로 만들어 버립니다.

 

이번엔 메인프로시저 시작한 후에(CALL MAIN 이후)

자료영역을 선언해 보겠습니다.

 

 

프로그램을 시작하면 메인프로시저 호출부터 시작합니다.

 

 

그 다음 네모칸 안의 명령을 시작하는데 NUM1을 건너뛴 것입니다.

건너뛰어야 프로그램이 제대로 동작합니다.

이러한 문제는 어셈블러가 오류로 알려주지 않는 문제이기때문에 주의하셔야합니다.

어셈블리어 프로그램에 문제가 있다면 꼭 점검해 보시기 바랍니다.

 


※ 프로그램에 CALL 이 많아질수록 데이터영역 선언시 매우 꼬이게 되는데요,

그럴때는 아예 맨 아래에 데이터영역을 선언해두는것도 방법입니다.

 

 

반응형

댓글