在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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...