将字符串转换为int程序集

时间:2016-03-13 22:12:00

标签: assembly 68hc12

我一直在尝试编写代码数小时。我的算法是读取字符串char-by-char,减去#$30,这意味着'0'并将其保存在地址中。保持另一个随机地址,其中填充0.然后直到字符串结尾,乘以随机地址的10个内容,并通过减去#$30添加用于转换int的地址的内容。我真的很累,很难实现我的算法。顺便说一下,我不知道是否可能,但我认为我不能使用默认乘数EMUL,因为它使用和写入Y和D寄存器。

有些假:

num = num*10 + conv(next digit).
var * 10:
res = var
res << 1 (shift left)
res << 1
res = res + var
res << 1

Now res equals var*10

我被困的代码:

MYSTR   FCC   "1337"
Entry:

             LDX   #MYSTR
             CLRA
             STAA  $1900    ; random address
loop:
             LDAA  1, x+    ; pointer to string
             CMPA  #0       ; check end of string
             BEQ   halt     ; if end of string end the program
             BRA   atoi     ; num in accumulator A is converted to int
             ;BRA halt

atoi:
             STAA  $1300
             LDAB  $1300
             SUBB  #$30
             ;----- number - '0' converts to int
             JSR   mult 
             BRA   loop

mult:
             CLRB
             STAB  $1350
             MOVB  $1350, $1351 ; copy content of 1350(var) to 1351(res)
             ASL   $1351
             ASL   $1351
             LDAA  $1351
             ADDA  $1350   ; res += var;
             ASLA  ; res << 1

             RTS

halt:
            SWI           

0 个答案:

没有答案