Euclid II: HC11 Code Generation
RAM equ 0
EEPROM equ $f800
RESET equ $fffe
org RAM
gcd rmb 1 * int gcd;
tmp rmb 1 * temporary storage
org EEPROM
M fcb 15 * #define M 15
N fcb 10 * #define N 10
* * void euclid() {
euclid
ldaa M * a = M;
ldab N * b = N;
tloop tstb
beq gotgcd * while (b != 0) {
cba
blt altb * if (a >= b) {
sba * a = a - b;
bra bloop * } else {
altb staa tmp * tmp = a;
tba * a = b;
ldab tmp * b = tmp;
* * }
bloop
bra tloop * }
gotgcd
staa gcd * gcd = a;
endlp bra endlp * }
org RESET
fdb euclid