たとえば、これらのコード番号を含むファイル (codes.txt) があります。
CODE1 fcc "3392236"
CODE2 fcc "1234550"
CODE3 fcc "7654361"
CODE4 fcc "1212223"
CODE5 fcc "1233211"
CODE6 fcc "1232343"
次に、toInteger.asm と呼ばれる別のサブルーチンでこれらの数値の読み取りを支援する readCode_Driver と呼ばれるサブルーチン。readCode_Driver.asm ファイルは次のようになります。
NUMBEROFCODES equ 6 ; Six CODEs to process
LENGTHOFCODE equ 7 ; Each code is 7 digits
PROGRAMSTART equ $2000 ; Executable code as in (programming code) starts here
STORAGE1 equ $1000 ; Storage starts here for original code numbers
org STORAGE1
CODES
#include codes.txt
org ProgramStart
lds #ProgramStart
; Setup to use toInterger
ldx #CODES ; point to first digit of NUM1 ex: 3
ldab #LENGTHOFCODE ; code's length
clra ; loop counter
ConvertCODEs
psha
pshb
jsr toInteger ; Convert from ASCII to Integer
pulb ; Retrieve CODE's Length (called a POP)
pula ; Retrieve Loop Counter
inca ; Setup to loop again
cmpa #NUMBEROFCODES ; All six codes converted?
bne ConvertCODEs ; No, so continue on looping
swi ; All six CODEs converted?
#include toInteger.asm ; subroutine to test with this driver
end
これは私の toInteger.asm ファイルとその内容です:
toInteger ldaa 0,x ; get ASCII value
suba #$30 ; convert to an integer
staa 0,x ; store integer
inx ; point to next value
decb ; one less value to do
cmpb #0 ; Is this the last ASCII value?
bne toInteger ; No, more to do
rts ; Yes, so we're done
これらのコードを検証するには、addeven.asm という別のサブルーチンが必要です。このサブルーチンは、コードに偶数を追加することを想定しています。たとえば、CODE1 は 3392236 です。偶数はこの位置 0 1 2 3 4 5 6 から選択されます。CODE1 では、偶数は 3(pos 0)、9(pos 2)、2(pos 4)、および 6 になります。 (位置6)。オッズ番号は 3(post1)、2(pos3)、3(pos5) になります。
問題は、code1 の偶数を取得し、個々の偶数に 2 を掛けてから、それらをアセンブリ言語で加算するにはどうすればよいかということです。この 2*3,2*9,2*2,2*6 のようになり、6+1+8+4+1+2 のようにそれらを追加します。これらのコードでは、18 は 1 と 8 なので、1+8 のように追加しました。マイクロコントローラーはdragon 12 68hc12