마이크로프로세서 프로그램 소스 정리
본 자료는 8페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
해당 자료는 8페이지 까지만 미리보기를 제공합니다.
8페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

마이크로프로세서 프로그램 소스 정리에 대한 보고서 자료입니다.

본문내용

BCD 표현 서브루틴
MOVX@DPTR, A; (DPTR) <- BCD 표현값
INC R1; R1값 갱신
INC DPTR; 저장위치 갱신
DJNZR2, LOOP; R2값을 1씩 감소시키면서 0이 될 때까지 LOOP사이 반복
;
MOV PSW, #0H; BANK 0
JMP 0057H; 모니터 프로그램으로
;
; BCD 표현 서브루틴
; 10으로 나누어 10자리와 1자리를 구함
; 16진 입력값 R1, BCD 표현 출력값 : A
BCDDP:MOV A, R1
MOV B, #10
DIV AB
SWAPA; 몫을 상위 4비트로 이동
ORL A, B; 10자리(상위4비트) 1자리(하위4비트)
RET
;
END
------------------------------------------------------------------------------------------------
; SUBR3.ASM
ORG 4000H
MOV PSW, #08H; BANK 1
;
MOV R0, #30H; R0 <- 소수값 저장초기위치
MOV R1, #2; R1 <- 조사할 초기값
MOV R2, #98; R2 <- 조사횟수
LOOP:CALLSOTEST; 소수 판정 루틴
JZ LEND; A=0이면 LEND로 점프
;
CALLBCDDSP; BCD 표현 서브루틴 콜
;
MOV @R0, A; (R0) <- BCD표현 소수값
INC R0; 저장위치 갱신
LEND:INC R1; 조사할 값 갱신
DJNZR2, LOOP; R2값을 1씩 감소시키면서 0이 될 때까지 LOOP사이 반복
;
MOV PSW, #0H; BANK 0
JMP 0057H; 모니터 프로그램으로
;
; 소수 판정 루틴
; 조사할 입력값 R1, 출력값 소수이면 A=1, 아니면 A=0
; 소수 : 1과 자기자신이외의 수로는 나누어지지 않는 수
; 2부터 (R1-1)까지의 수로 나누어지는 수가 하나라도 있으면 소수가 아님.
SOTEST:MOV A, R1
CJNEA, #2, SOTST1
SJMPSOSU; 조사할 수가 2이면 소수
; 2이외의 수 소수판정 루틴
SOTST1:MOV R4, #2 ; R4 <- 나누어 조사할 초기값
CLR C
SUBBA, #2
MOV R5, A; 조사할 횟수 (R1-2)
SLOOP1:MOV A, R1; A <- 조사할 값
MOV B, R4; B <- 나눌값
DIV AB; 나누기
MOV A, B; A <- 나머지
JZ NOSOSU; 나머지가 0이면 소수가 아님
INC R4; 다음에 나눌수 갱신
DJNZR5, SLOOP1; R2값을 1씩 감소시키면서 0이 될 때까지 SLOOP1사이 반복
SOSU:MOV A, #1; 소수이면 A에 1 저장
JMP SOEND
NOSOSU:MOV A, #0; 소수가 아니면 A에 0 저장
SOEND:RET; 소수판정 루틴 종료
;
; BCD 표현 서브루틴
; 1씩 더해가며 10진 보정
; 16진 입력값 R1, BCD 표현 출력값 : A
BCDDSP:MOV A, R1
MOV R4, A; R4 <- R1
CLR A; A <- 0
BCDLOP:ADD A, #1; A <- A + 1
DA A; 10진 보정
DJNZR4, BCDLOP; R4값을 1씩 감소시키면서 0이 될 때까지 BCDLOP사이 반복
RET; BCD 표현 서브루틴 종료
;
END
------------------------------------------------------------------------------------------------
; SUBR_EXCISE1.ASM
ORG 4000H
MOV PSW, #08H; BANK 1
;
MOV 20H, #1FH; (20H) <- 1FH
;
CALLASCII; 서브루틴 ASCII 콜
MOV 21H, B; (21H) <- '1'->31H(ASCII 코드값)
MOV 22H, A; (22H) <- 'F'->46H(ASCII 코드값)
;
MOV PSW, #0H; BANK 0
JMP 0057H; 모니터 프로그램으로
;
; 서브루틴 ASCII
; 각 자리를 추출해서 기준 ASCII 코드값을 더해준다.
; 10자리(상위 4비트): '0'-> 30H(ASCII 코드값)
ASCII:MOV A, 20H
ANL A, #0F0H; 상위 4비트 마스크 처리
SWAPA; 상위 4비트 <-> 하위 4비트
;
ADD A, #30H; A <- 01H + 30H
MOV B, A; B레지스터 <- 31H
; 1자리(하위 4비트): 'A'-> 41H(ASCII 코드값)
MOV A, 20H
ANL A, #0FH; 하위 4비트 마스크 처리
;
CLR C
SUBBA, #0AH; A <- 0FH - 0AH
ADD A, #41H; A <- 05H + 41H
RET
;
END
------------------------------------------------------------------------------------------------
; SUBR_EXCISE2.ASM
ORG 4000H
MOV PSW, #08H; BANK 1
;
MOV 21H, #'1'; (21H) <- '1'->31H(ASCII 코드값)
MOV 22H, #'F'; (22H) <- 'F'->46H(ASCII 코드값)
;
CALLHEX; 서브루틴 HEX 콜
MOV 20H, A; (20H) <- 1FH
;
MOV PSW, #0H; BANK 0
JMP 0057H; 모니터 프로그램으로
;
; 서브루틴 HEX
; 각 레지스터 값을 HEX값로 변환한다.
; 변환한 HEX값을 10자리와 1자리로 구분한 후 더해준다.
; 10자리(상위 4비트): '1'-> 10H(HEX값)
HEX:MOV B, 21H; B레지스터 <- 31H
MOV A, B
CLR C
SUBBA, #30H; A <- 31H - 30H
;
SWAPA; 상위 4비트 <-> 하위 4비트
MOV B, A; B레지스터 <- 10H
; 1자리(하위 4비트): 'F'-> 0FH(HEX값)
MOV A, 22H; A <- 31H
CLR C
SUBBA, #41H; A <- 46H - 41H
ADD A, #0AH; A <- 05H + 0AH
; 10자리 + 1자리
ORL A, B; A <- 0FH + 10H
RET
;
END
  • 가격1,000
  • 페이지수25페이지
  • 등록일2007.01.21
  • 저작시기2006.10
  • 파일형식한글(hwp)
  • 자료번호#389921
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니