【问题标题】:Unable to determine error with this basic assembler program? [closed]无法确定这个基本汇编程序的错误? [关闭]
【发布时间】:2013-07-29 18:16:10
【问题描述】:

我是汇编程序新手,在大学里得到了这个简单的程序,但我不明白为什么它不起作用。我真的无法解释更多,就像我说的,这周我几乎是从这种语言开始的。

list        p=16f690        ; list directive to define processor
        #include    <P16F690.inc>       ; processor specific variable definitions
        __CONFIG    _CP_OFF & _CPD_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _FCMEN_OFF & _IESO_OFF


    main
        cblock  0x20
                num1,.250
        endc       
        org 0x00 ; Set code at program memory address 0x00
            goto init
        org 0x04 ; Put code at program memory address 0x04
            nop
            retfie
    count:
        movf num1,w
        addwf .150,w
    init:

        bcf STATUS, RP0
        bcf STATUS, RP1
        movlw 0xFF
        movwf PORTA
        bsf STATUS, RP0
        clrf TRISA
    run:

        nop
        goto run
        END                       ; directive 'end of program'

【问题讨论】:

  • 您是否真的要求我们调试一个没有 cmets 甚至没有关于它用于什么架构的标签的汇编语言程序?
  • 是什么让你觉得它不起作用?
  • 除了@CarlNorum 的评论之外,“不起作用”是什么意思?在什么情况下它不起作用?
  • 程序应该做什么?
  • 什么不起作用?你得到汇编错误吗?预期的结果是什么?裸露的、不常见的汇编器本身并不是那么有用。 :) 顺便说一句,对于那些在家关注的人:ww1.microchip.com/downloads/en/DeviceDoc/…

标签: assembly pic


【解决方案1】:

好吧,我有点同情你了:

你的init 标签设置了一堆寄存器并进入运行状态,它永远处于一个非常紧密的循环中。美好的。问题是,count 应该如何被调用?没有任何内容引用它,您最初的 goto 会跳过它。它周围没有中断类型的返回值,因此不能被中断调用。您的代码基本上设置了一些寄存器,并且永远什么都不做。不是很有趣。

我猜你希望它以某种方式计数,但你需要以某种方式实际调用它。您可以选择如何操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多