如何解决在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
错误消息:
- 指令的无效参数。 'NOADD'
- 无效的指令参数。 '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 举报,一经查实,本站将立刻删除。