显示结果怎么总是不对路?
DATAS SEGMENTnwe db 4;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
DW 64 DUP(?);此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET nwe
MOV AX,[si]
CALL ZXCXC
MOV DL,AL
ADD DL,37H
MOV AH,02H
INT 21H
;此处输入代码段代码
MOV AH,4CH
INT 21H
ZXCXC PROC
MOV DX,AX
CMP AX,0
JZ NEXT
DEC AX
CALL ZXCXC
MUL DX
POP DX
RET
NEXT:
MOV AX,1
POP DX
RET
ZXCXC ENDP
CODES ENDS
END START
想将键盘上按下的按键的ascll值用二进制显示出来,可是结果不知道为什么总是显示00001010 ,同样的问题已经出现了好几次了,可是到几个论坛都没有解决,求救啊!想向后面的内容继续前进可是遇到这个绊脚石实在让人心里不舒服,各位大侠帮忙了!谢谢了!
附:
DATAS SEGMENT
DATA1 DD 22563241H
DATA2 DD 34563465H
DATA3 DD ?;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
CALL MADD;此处输入代码段代码
MOV AH,4CH
INT 21H
MADD PROC
MOV SI,0
MOV CX,2
NEXT:
MOV AX,WORD PTR DATA1[SI]
ADC AX,WORD PTR DATA2[SI]
MOV WORD PTR DATA3[SI],AX
INC SI
INC SI
LOOP NEXT
MOV AL,0
ADC AL,0
MOV BYTE PTR DATA3[SI],AL
RET
MADD ENDP
CODES ENDS
END START
双精度数相加不知为什么结果总是显示0,可能与前面一样毛病