LAB‎ > ‎

Lab 12

1) Lab 10에 있는 프로그램을 수정하여 V09의 7 세그먼트에서 출력되도록 하시오.
- V09가 연결되면 좌측에서 "+ 7 세그먼트 장치"를 눌러 장치를 추가한다. 이 때 IO 주소를 정해주어야 하는데 기존 프로그램과 맞추려면 10으로 하면 된다.
- MMIO_BASE 를 100으로 수정하여야 한다. (아래에 수정된 프로그램이 있음)

2) 긴 메세지가 있을 때 이를 10개 씩 끊어서 차례로 출력하는 프로그램을 만드시오.
- 이 때 앞의 문자는 한자리씩 좌로 이동하면서 사라지고 새로운 문자는 오른쪽 끝 세그멘트에서 나타나도록 하시오.
- 다음 라인은 어셈블러가 알아서 여러개의 ASCII 코드 값으로 변환해준다.
    LONGMSG  BOX  "12345678901234567890"

3) 영문자도 출력되도록 확장하시오.
- 0~9 까지 숫자의 ASCII 코드값을 7Segment 코드로 변환하는 표를 참고 하여 a~z, A~Z 의 ASCII 코드값을 7Segment 코드로 변환하는 표를 만들어야 한다.


// 7 segments IO, V09
//$DEV SEVEN-SEGMENT 10 10 1
SEG_IO START 0
JMP MAIN
MMIO_BASE EQU 100
MMIO_SEG_DATA EQU MMIO_BASE+10 // IO Address for 7 segments
MMIO_SEG_STATE EQU MMIO_BASE+11
MMIO_SEG_CMD EQU MMIO_BASE+12
ORG 200
MAIN
LD A MASK_READY
MOV C A
LOOP_READY1 LD A MMIO_SEG_STATE
AND A C
SKNE
JMP LOOP_READY1 // wait until ready
LD A SEG_ON_ALL // Turn on 7 segments device
ST A MMIO_SEG_CMD
LD A ="0"
MOV D2 A
LD A ="9"
MOV D3 A
LD A #0
MOV X A // i=0
DO_WHILE
LD  A MSG_LENGTH
CMP X A // i < MSG_LENGTH
SKN
JMP END_WHILE
// IF
LD A @MSG // A <- *MSG (or MSG[i])
MOV D0 A
CMP D0 D2 // Char >= BASE
SKZP
JMP ELSE
CMP D0 D3 // Char <= END
SKZN
JMP ELSE
// THEN
MOV A D2
NEG A
ADD A D0 // A <- Char-BASE
MOV D1 A
LD A P_SEG_CONV
ADD D1 A // D1 <- &SEG_CONV+(Char-BASE)
MOV D0 *D1 // D0 <- SEG_CONV[Char-BASE]
JMP END_IF
ELSE
LD A =0b01000000 // 하이픈 '-'
MOV D0 A
END_IF
LD A MASK_READY
MOV C A
LOOP_READY2 LD A MMIO_SEG_STATE
AND A C
SKNE
JMP LOOP_READY2 // wait until ready
MOV A D0
ST A MMIO_SEG_DATA
LD A SEG_WRITE
ADD A X
ST A MMIO_SEG_CMD
INC X // i++
JMP DO_WHILE
END_WHILE
COB
P_SEG_CONV BOX SEG_CONV
SEG_CONV BOX 0b00111111 //0
BOX 0b00000110 //1
BOX 0b01011011 //2
BOX 0b01001111 //3
BOX 0b01100110 //4
BOX 0b01101101 //5
BOX 0b01111101 //6
BOX 0b00000111 //7
BOX 0b01111111 //8
BOX 0b01101111 //9
MSG BOX "20181015"
MSG_LENGTH BOX $-MSG
// Command for 7 segments
SEG_WRITE BOX 0100
SEG_ON BOX 0200
SEG_OFF BOX 0300
SEG_ON_ALL BOX 0992
SEG_OFF_ALL BOX 0993
MASK_READY BOX 001 // Mask bits 
LTORG
END

Comments