在z80模拟器组件中乘2个数据8位,"invalid argument of the instruction"出现错误,该怎么办?


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

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

相关内容

最新更新