NCNU System Programming Final Exam |
|
XMAS |
START
|
1000 |
PRINT |
MACRO |
&CH |
$LOOP |
TD |
OUTDEV |
JEQ |
$LOOP |
|
LDCH |
#&CH |
|
WD |
OUTDEV |
|
MEND |
||
OUTDEV
|
BYTE |
x'06' |
HEIGHT |
WORD |
4 |
MARGIN |
WORD |
5 |
I |
RESW |
1 |
J |
RESW |
1 |
EXPR1 |
RESW |
1 |
FIRST |
LDA |
#1 |
L1B |
STA |
I |
COMP |
HEIGHT |
|
JGT |
L1E |
|
LDA |
I |
|
ADD |
#2 |
|
STA |
EXPR1 |
|
LDA |
I |
|
L2B |
STA |
J |
COMP |
EXPR1 |
|
JGT |
L2E |
|
LDA |
MARGIN |
|
ADD |
#1 |
|
SUB |
J |
|
RMO |
A,S |
|
LDX |
#1 |
|
L3B |
COMPR |
X,S |
JGT |
L3E |
|
PRINT |
32 |
|
TIXR |
X |
|
J |
L3B |
|
L3E |
LDA |
J |
MUL |
#2 |
|
SUB |
#1 |
|
RMO |
A,S |
|
LDX |
#1 |
|
L4B |
COMPR |
X,S |
JGT |
L4E |
|
PRINT |
42 |
|
TIXR |
X |
|
J |
L4B |
|
L4E |
PRINT |
00 |
LDA |
J |
|
ADD |
#1 |
|
J |
L2B |
|
L2E |
LDA |
I |
ADD |
#1 |
|
J |
L1B |
|
L1E |
LDA |
#1 |
L5B |
STA |
I |
COMP |
HEIGHT |
|
JGT |
L5E |
|
LDA |
MARGIN |
|
SUB |
#1 |
|
RMO |
A,S |
|
LDX |
#1 |
|
L6B |
COMPR |
X,S |
JGT |
L6E |
|
PRINT |
32 |
|
TIXR |
X |
|
J |
L6B |
|
L6E |
LDX |
#1 |
LDS |
#3 |
|
L7B |
COMPR |
X,S |
JGT |
L7E |
|
PRINT |
42 |
|
TIXR |
X |
|
J |
L7B |
|
L7E |
PRINT |
00 |
LDA |
I |
|
ADD |
#1 |
|
J |
L5B |
|
L5E |
RSUB |
|
END |
FIRST |
REF |
START |
1000 |
. Subroutine EXCH | ||
EXCH |
LDA |
@P1 |
STA |
TEMP |
|
LDA |
@P2 |
|
STA |
@P1 |
|
LDA |
TEMP |
|
STA |
@P2 |
|
RSUB |
||
P1 |
RESW |
1 |
P2 |
RESW |
1 |
TEMP |
RESW |
1 |
. Main program | ||
MAIN |
LDA |
#1 |
STA |
I |
|
LDA |
#3 |
|
STA |
J |
|
. Call a subroutine | ||
LDA |
#I |
|
STA |
P1 |
|
LDA |
#J |
|
STA |
P2 |
|
JSUB |
EXCH |
|
I |
RESW |
1 |
J |
RESW |
1 |
END |
MAIN |
#define ABSDIFF(X,Y) X > Y ? X - Y : Y - X
#define DISPLAY(EXPR) printf(#EXPR "= %d\n", EXPR)