A83: Re: First program
[Prev][Next][Index][Thread]
A83: Re: First program
You can't use the 16-bit registers in instructions that use an 8-bit register, unless you are trying to dereference a
16-bit pointer [ like ld a,(hl) ]. Also, you cannot do instructions like cp b+1. First you would have to inc b, then you
could cp it.
----- Original Message -----
From: "Andrew Oliver" <aoliver@techplus.com>
To: <assembly-83@lists.ticalc.org>
Sent: Monday, February 07, 2000 14:27
Subject: A83: First program
I've been quietly surfing the lists and reading all the ASM tutorials I could
get my hands on for about the last 3 months and decided I finally knew enough
to try converting one of my BASIC programs over. I have written the
re-written the basic function of the program in ASM, but I have a few problems
and questions.
Code:
;Degree Convertor v2.0
;---------------= header =--------------
.nolist
#include "ion.inc"
pgmio_exec .equ 50B2h
ASM_IND_CALL .equ 80C8h
.list
#ifdef TI83P
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
ret
jr nc,start
.db "Degree Convertor v2.0",0
;---------------= define =--------------
;---------------= get user input =--------------
start:
ld de,821ch
ld hl,prompt
ld bc,16
ldir
ld a,1
ld (ASM_IND_CALL),a
bcall(pgmio_exec)
ld bc,90d ;store 90 to b
bcall(_convop1)
ld a,de ;load op1 to accumulator
cp bc \ jr nc,small ;jump to "small" if b(90)>a
cp bc+1 \ jr nc,big ;jump to "big" if b(90)<a
ret
small:
sub bc ;subtract bc(90) from a
ld a,hl ;load a to hl
jp &display ;jump to display
big:
ld bc,450D ;load 450 into bc
sub bc ;subtract bc(450) from a
ld a,hl ;load a to hl
jp &display ;jump to display
display:
bcall(_newline)
bcall(_disphl)
ret
prompt: .db "Compass Deg: ",0
.end
.end
Questions:
1) Does everything look in order in regards to have I done all the commands
right?
2) When I try to compile it TASM thinks my registers are labels and complains
about not being able to find them..What have I done wrong?
3) Are my < > opperands right? They don't look right to me, I got them off
a tutorial and they compile fine..
4) I'm trying to keep my program 100% ION compatible, but am I allowed to
define and use pgmio_exec and ASM_IND_CALL?
5) Have I dont my input routine correct?
The formatting didn't quite copy right, I think I have all of the tab spacing
correct in my source.
I'm new to this so be critical!
Thanks
Andrew
aoliver@techplus.com
Follow-Ups:
References: