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