Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 用C语言和汇编语言在液晶屏上制作GPS_Assembly_Gps_Subroutine_68hc12 - Fatal编程技术网

Assembly 用C语言和汇编语言在液晶屏上制作GPS

Assembly 用C语言和汇编语言在液晶屏上制作GPS,assembly,gps,subroutine,68hc12,Assembly,Gps,Subroutine,68hc12,我现在关心的一个问题是制作一些汇编语言子程序,这些子程序需要从C程序中调用,以便在LCD屏幕上对路由、findrootes或DisplayRoutes进行计数。 例如,这是保存路由地址的代码,对于第一个子例程CountRoutes,在找到-1并停止计数之前,它应该计算内存中有多少路由 这就是我到目前为止所做的,但它不起作用。我需要更改的是:忽略.byte空行(跳转到下面的两个字符串),验证您是否在strin的末尾(满足0),然后再次跳转,您将找到另一个.word 6或-1

我现在关心的一个问题是制作一些汇编语言子程序,这些子程序需要从C程序中调用,以便在LCD屏幕上对路由、findrootes或DisplayRoutes进行计数。 例如,这是保存路由地址的代码,对于第一个子例程CountRoutes,在找到-1并停止计数之前,它应该计算内存中有多少路由

这就是我到目前为止所做的,但它不起作用。我需要更改的是:忽略.byte空行(跳转到下面的两个字符串),验证您是否在strin的末尾(满足0),然后再次跳转,您将找到另一个.word 6或-1

            .word  4
            .byte  null
            .asciz "Dee Bridge"
            .asciz ""

            .word  5
            .byte  'x
            .asciz "Echt Terminus"
            .asciz "Express"

            .word  -1              ; route 0xffff terminates the data set

.area   text

_RouteCount::
            pshx
            tfr     d,y         ;
            ldx     #0          ; Clear index
Loop:       ldab    1,y+        ; Fetch next character; inc Y
            bmi     Done        ; If -1 is found, exit loop
            bra     Loop        ; Repeat loop 
            ldx     #1          ; Store no match flag in X
            beq
            bra     Loop
Done:       tfr     Y,D         ; Transfer index in D
            pulx
            rts   

这是一种什么样的汇编语言?它不是x86,我也不认为它是ARM。请更新标签。第二:描述它是如何不起作用的。或者,你的一段文字没有段落分隔符,这段文字的描述足以让人读懂你的asm。这就是为什么无论这是什么架构,你都应该用标签来标记你的问题…我很抱歉。。这是68hc12的si asm。我说的不工作是指它什么也没做。我在上面解释了应该做些什么更改来使用它。它应该跳过下一个字节,也就是地址,然后进入字符串并搜索0,依此类推,直到它到达下一个地址,或者-1退出循环并返回找到的地址数。void CountingRoutes(){RouteCount(0x3000);routes=RouteCount();lcd_clear();sprintf(buf,“%d条公交线路”,routes);lcd_putxy(0,0,buf);sprintf(buf,“菜单的任意键”);lcd_putxy(3,0,buf);}您可以编辑问题以修改标记并进行其他更改。(点击问题下方的“编辑”)。已经有一个68hc12标签。(虽然只有20个其他问题,但至少你会增加正确的人看到你的问题的机会。)正如我所说,也许你的问题对知道68ch12的人来说已经有意义了,但对我来说没有意义,因为我不知道:P我建议把那个大的开头部分分成几个单独的段落。第一:这是什么样的汇编语言?它不是x86,我也不认为它是ARM。请更新标签。第二:描述它是如何不起作用的。或者,你的一段文字没有段落分隔符,这段文字的描述足以让人读懂你的asm。这就是为什么无论这是什么架构,你都应该用标签来标记你的问题…我很抱歉。。这是68hc12的si asm。我说的不工作是指它什么也没做。我在上面解释了应该做些什么更改来使用它。它应该跳过下一个字节,也就是地址,然后进入字符串并搜索0,依此类推,直到它到达下一个地址,或者-1退出循环并返回找到的地址数。void CountingRoutes(){RouteCount(0x3000);routes=RouteCount();lcd_clear();sprintf(buf,“%d条公交线路”,routes);lcd_putxy(0,0,buf);sprintf(buf,“菜单的任意键”);lcd_putxy(3,0,buf);}您可以编辑问题以修改标记并进行其他更改。(点击问题下方的“编辑”)。已经有一个68hc12标签。(虽然只有20个其他问题,但至少你会增加正确的人看到你的问题的机会。)正如我所说,也许你的问题对知道68ch12的人来说已经有意义了,但对我来说没有意义,因为我不知道:P不过,我建议把开头的那一段分成几段。