微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在z80模拟器程序集中将2个数据乘以8位,出现错误“指令的自变量”,我该怎么办?

如何解决在z80模拟器程序集中将2个数据乘以8位,出现错误“指令的自变量”,我该怎么办?

  LD   BC,(1900H)
  LD   B,8
  LD   DE,(1901H)
  LD   D,0
  LD   HL,0
  SRL  C 
  JR   NC,NOADD
  ADD  HL,DE
  SLA  E 
  RL   D
  DEC  B
  JP   NZ,MULT
  LD   (1902H),HL
  HALT
  .END

错误消息:

  1. 指令的无效参数。 'NOADD'
  2. 无效的指令参数。 'MULT'

解决方法

您需要为希望这些说明跳转到的地址定义标签。否则,汇编器将不知道要使用哪个地址。

,

以下是适合您的16x16-> 16的示例:

; MUL16 - MULTIPLY TWO SIXTEEN BIT NUMBERS WITH A 16 BIT RESULT.
;         DE = MULTIPLICAND
;         BC = MULTIPLIER
;         HL = PRODUCT
;
;         DE*BC=HL
;
        EXPORT  MUL16
MUL16
        LD      A,C             ; MULTIPLIER LOW PLACED IN A
        LD      C,B             ; MULTIPLIER HIGH PLACED IN C
        LD      B,16D           ; COUNTER (16 BITS)
        LD      HL,0            ;
MULT
        SRL     C               ; RIGHT SHIFT MULTIPLIER HIGH
        RRA                     ; ROTATE RIGHT MULTIPLIER LOW
        JR      NC,NOADD        ; TEST CARRY
        ADD     HL,DE           ; ADD MULTIPLICAND TO RESULT
NOADD
        EX      DE,HL
        ADD     HL,HL           ; SHIFT MULTIPLICAND LEFT
        EX      DE,HL           ;
        DJNZ    MULT            ;
        RET

请注意,您的汇编器(我们未知)可能要求标签和/或注释的语法不同。汇编程序的文档是找到这些详细信息的最佳位置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。