我不知道在DISPLAY_IN_DECIMAL中我的编码有什么问题。 他们一直给我这个错误。
Assembling: coa.asm
coa.asm(314) : error A2006:undefined symbol : decimalArray
DISPLAY_IN_DECIMAL(3): Macro Called From
coa.asm(314): Main Line Code
Press any key to continue . . .
我认为我的decimalArray可能有问题,但我不确定是什么。
这是我完成所有二进制显示的代码部分。似乎没有错。
counter db 0
X db 00000000B
Y db 00000000B
deciamlArray byte 8 DUP (' ')
decimalResult db ?
dec1 db ?
.code
DISPLAY_IN_BINARY MACRO result
local L5, printBinary, print0, print1, nextBit
PUSH ax
MOV al, result
MOV cx, 8
printBinary:
TEST al, 10000000b ;1 in 10000000b indicate that the bit to be compare and print out
JZ print0
JNZ print1
print1:
displayResult1 ;If bit of result not equal to 0 ,print 1
SHL al, 1
JMP nextBit
print0: ;If bit of result = 0,print 0
displayResult0
SHL al, 1
JMP nextBit
nextBit:
LOOP printBinary
POP ax
ENDM
但是当我尝试使用我的小数时,他们给了我刚才上面说的错误。 我认为我的decimalArray可能有问题,但我不确定。
DISPLAY_IN_DECIMAL MACRO result
local L1,L2,L3
MOV SI, OFFSET result
MOV DI, OFFSET decimalArray
MOV decimalResult, 0
MOV CX, 8
L1:
MOV AL, [SI]
CMP AL, '1'
JE L2
JMP L3
L2 :
MOV AL, 0
MOV AL, [DI]
ADD decimalResult, AL
JMP L3
L3:
INC SI
INC DI
LOOP L1
MOVZX AX, decimalResult
MOV BL, 10
DIV BL
MOV BX, AX
MOV DH, BH
MOV dec1, BL
MOVZX AX, dec1
MOV BL, 10
DIV BL
MOV BX, AX
MOV AH, 02H ; print results
MOV DL, BL
ADD DL, 30H
INT 21H
MOV DL, BH
ADD DL, 30H
INT 21H
MOV DL, DH
ADD DL, 30H
INT 21H
ENDM
答案 0 :(得分:2)
您的代码中存在拼写错误:
deciamlArray byte 8 DUP (' ')
应该是:
decimalArray byte 8 DUP (' ')