两个16位二进制数相乘,会陷入死循环,但是查看变量,P1结果是有出来,而且正确
代码如下:
DDATA SEGMENT ;;数据段
D1 DW 1234H
D2 DW 5678H
P1 DD ?
P2 DD ? ; ;可删除!
DDATA ENDS
SSTACK SEGMENT STACK 'STACK'
STT DB 100 DUP (0)
TOP EQU LENGTH STT
SSTACK ENDS
CCODE SEGMENT
ASSUME CS:CCODE, DS:DDATA, SS:SSTACK
START: MOV AX,SSTACK ;;初始化SS
MOV SS,AX
MOV SP,100 ; ;初始化SP
PUSH DS ;
SUB AX,AX
PUSH AX
MOV AX,DDATA ; ;初始化DS
MOV DS,AX
L1: MOV AX,D1 ; ;D1×D2,积在(DX,AX)
MUL D2
MOV BX,OFFSET P1 ;;积→P2和P1所指向的存储单元
MOV [BX],AX
MOV [BX+2],DX
RET
CCODE ENDS
END START
而且,
PUSH DS ;返回DOS用
SUB AX,AX
PUSH AX
这三行也是看不懂,有什么意思?