例如,我有一个包含这些代码编号的文件(codes.txt)
CODE1 fcc "3392236"
CODE2 fcc "1234550"
CODE3 fcc "7654361"
CODE4 fcc "1212223"
CODE5 fcc "1233211"
CODE6 fcc "1232343"
接下来是一个名为 readCode_Driver 的子程序,其工作是通过另一个名为 toInteger.asm 的子程序帮助读取这些数字。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。微控制器是龙12 68hc12