옵션 |
|
OFFSET EQU 30H
SEGMNT EQU 31H
;
ORG 0000H ; 프로그램 시작
JMP START
;
START: MOV OFFSET,#02H ; OFFSET을 2로 지정
CALL LOOKUP ; 룩업 테이블 호출
SJMP $
;
LOOKUP: MOV DPTR,#TABLE
MOV A,OFFSET
MOVC A,@A+DPTR
MOV SEGMNT,A
RET
;
TABLE: DB 03H ; "0" 데이터
DB 9FH ; "1" 데이터
DB 25H ; "2" 데이터
DB 0DH ; "3" 데이터
DB 99H ; "4" 데이터
DB 49H ; "5" 데이터
DB 41H ; "6" 데이터
DB 1FH ; "7" 데이터
DB 01H ; "8" 데이터
DB 09H ; "9" 데이터
END ; 프로그램 끝
=================
#TABLE의 DB들은 7-세그먼트에 대한 코드입니다.
제가 궁금한것은 EQU가 C에서는 define 역할을 하는 것으로 알고있는데
왜 START루프로 들어가서 OFFSET을 왜 갑자기 2로 지정해주는지..
LOOKUP으로 들어가서 DPTR에 #TABLE을 넣어주는데 #TABLE은 뭐가들어가는지..(아니면 제가 지정하던지)
그리고 마지막 SJMP에서 $는 무엇인지..
어셈블을 다시 C로 바꿔야하는데 코드 분석에서 막혀버렸습니다 ㅠㅠ