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

看看这个程序那里有问题

lilian 发布于 2007-06-18 23:21, 634 次点击
DATA SEGMENT
DATA1 DB 25, 7, 1
DATA ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA
START:
MOV AX,DATA
MOV AH,2AH
INT 21H
MOV DS,AX
MOV SI,offset DATA
MOV AL,DATA1[SI]
START1:
MOV AH,0
INT 16H
CMP AL,0
JB START1
CMP DL,AL
JB NEXT1
SUB DL,AL
NEXT1:
ADD DL,30
SUB DL,AL
DEC DH
MOV [DI],DL
MOV AX,[DI]
PUSH AX
INC SI
START2:
MOV AL,DATA1[SI]
MOV AH,0
INT 16H
CMP AL,0
JB START2
CMP DH,AL
JB NEXT2
SUB DH,AL
NEXT2:
ADD DH,12
SUB DH,AL
DEC CX
MOV [DI],DH
MOV BX,[DI]
PUSH BX
INC SI
START3:
MOV AL,DATA1[SI]
MOV AH,0
INT 16H
CMP AL,0
JB START3
MOV [BP],AL
CMP CX,[BP]
JB START3
SUB CX,[BP]
PUSH CX
POP CX
POP BX
POP AX
DONE:
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
2 回复
#2
lilian2007-06-18 23:39
这个程序是为了计算生日
#3
chaogang2007-06-19 18:18
就看了这几行 发现有点问题 个人意见
MOV AX,DATA
MOV AH,2AH //经过这个操作,已经改变AH值,相当于已经改变 AX值了
INT 21H
MOV DS,AX //所以这里的赋给 DS的地址(即AX的值)已经不是原先的DATA的地址了

个人建议应该这样:
MOV AX,DATA
MOV DS,AX
MOV AH,2AH
INT 21H
你试试,我也没运行 我这里没这个软件了...
下面的没看...
1