지금 프로그래밍을 하면서, 어셈블러를 다루는 사람은 그다지(?) 많지를 않다...
특정분야... 에서는 아직도 많이 쓰이긴 하지만...
일단 정리를 해두자.
필요한 파일들.
간단한 196asm 파일들이다.
압출을 풀면, bin 디렉토리 안에
asm96.exe, oh.exe 두 파일이 있는데, 이넘들만 있으면,
간단하나마 hex 코드로 만들수 있다.
먼저 간단한 소스를 만든다.
이전의 mde kit에서 사용한 lcd 제어 소스를 이용한다.
이 소스를 메모장에 작성해서 lcd.a96으로 저장한다.
----------------------------------------
R0 EQU 0000H
SP EQU 18H
BREG1 EQU 20H
BREG2 EQU 21H
BREG3 EQU 22H
WBUF EQU 24H
WREG EQU 26H
LCDC EQU 0F000H
LCDD EQU LCDC+2
LCDS EQU LCDC+4
CSEG AT 4000H
LD SP,#00E0H
START:
SCALL ALLCLR
LD WBUF,#DATA1
SCALL STR_0
SCALL LN21
LD WBUF,#DATA2
SCALL STR_0
SCALL LN31
LD WBUF,#DATA3
SCALL STR_0
SCALL LN41
LD WBUF,#DATA4
SCALL STR_0
LOOP:
SCALL SH_L
SCALL TIMER
SJMP LOOP
DATA1: DCB ' 80196 KIT~~',00H
DATA2: DCB ' It is funny.',00H
DATA3: DCB ' It is MDE kit',00H
DATA4: DCB ' Good bye~ ' ,00H
STR_0:
LDB BREG1,[WBUF]+
CMPB BREG1,#0
JE STR_01
SCALL CHAROUT
SJMP STR_0
STR_01:
RET
CHAROUT:
CALL BUSY
STB BREG1,LCDD[R0]
RET
ALLCLR:
LDB BREG2,#1
SJMP LNXX
LN11:
LDB BREG2,#2
SJMP LNXX
LN21:
LDB BREG2,#0C0H
SJMP LNXX
LN31:
LDB BREG2,#11010000B
SJMP LNXX
LN41:
LDB BREG2,#11010000B
SJMP LNXX
SH_L:
LDB BREG2,#00011000B
LNXX:
SCALL BUSY
STB BREG2,LCDC[R0]
RET
BUSY:
PUSH BREG1
BUSY1:
LDB BREG2,LCDS[R0]
JBS BREG2,7,BUSY1
POP BREG1
RET
TIMER:
LD WREG,#60000
TIMER1:
NOP
NOP
NOP
NOP
NOP
DJNZW WREG,TIMER1
RET
END
-----------------------------
윈도우의 실행에 가서 cmd창을 불러온다.
컴파일러를 넣은 디렉토리로 가서
asm96 lcd.a96
명령어를 입력, 오브젝트파일이 생성된다.
이 오브젝트파일을 처리한다.
oh lcd.obj
해당 디렉토리에서 lcd.hex 파일을 확인할수 있다.
이파일을 하이퍼터미널이나 다른 시리얼통신 프로그램을 이용해서,
kit로 전송시키면 끝.