注册 登录
编程论坛 汇编论坛

显示结果怎么总是不对路?

qq459673705 发布于 2010-04-11 19:34, 458 次点击
DATAS SEGMENT
    nwe 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,可能与前面一样毛病
0 回复
1