옵션 |
|
ORG 0000H ; 프로그램 시작
JMP START
;
START:
MOV R0,#30H ; 데이터가 들어있는 최초의 주소를 R0에 저장
MOV R1,#3FH ; 비교할 횟수 저장
MOV R2,#00H ; 공간값계산을위해 0으로 초기화 --> 이 부분을 0으로 초기화하는데 #00H가 맞는지?
MOV MAX,@R0 ;MAX에 최초의 데이터를 저장
MOV R4, MAX ; R4=MAX --> R4에 MAX값 저장
LOOP:
MOV MAX, R4 ; 이부분은 도대체 왜 필요한것입니까? 버려도 무관한것 같은데...
INC R0 ;주소값 1 증가
INC R2 ;공간값 계산을 위해 루프를 돌때마다 ++시킴
CLR C
SUBB MAX,@R0 ; MAX와 R0가 지시하는 번지의 내용을 비교
JNC GREAT ; MAX가 더 크면 GREAT로 점프
MOV MAX,@R0 ; 작으면 R0가 지시하는 번지의 내용을 MAX에 저장
MOV R4, MAX ;
GREAT: DJNZ R1,LOOP
MOV 70H, MAX
MOV R3, @R1-1 ;이건 직접 작성해본건데.. R3에 마지막주소값을 넣는 것입니다. 그 주소의 데이터가아니라 그 주소숫자자체!!
END ; 프로그램 끝
====================================================
그냥 C언어, 어셈블이라면 이해가 쉽겠는데
8051로 하려니 조금씩 달라져버려서 너무 혼란스럽니다..
궁금한 점은 모두 굵은 글씨로 처리해봤어요..ㅠㅠ