标题:什么情况下MONTH=2,AX的值还是30,求教!
只看楼主
怡寶想睡覺啊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-6-9
结帖率:100%
 问题点数:0 回复次数:3 
什么情况下MONTH=2,AX的值还是30,求教!
GETMD   PROC      
        MOV     BX,MONTH  
        DEC     BX
        MOV     AX,28
        CMP     BX,1
        JE         GETMDF  
GETMDG:    MOV     AX,30
GETMDF: RET
GETMD   ENDP

我把MONTH变为数字字符输出是02
然而执行上述子程序后AX的值是30
拜托拜托搞到现在都半夜了还是出错
搜索更多相关主题的帖子: MOV 字符 执行 子程序 出错 
2018-06-10 03:10
怡寶想睡覺啊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-6-9
得分:0 
算了,我重写吧
2018-06-10 03:41
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:0 
楼主的提问,遇着不知情者,实在无从回答起吧....

我猜这是上一题的延续,一个GetMd的子程序,输入月份1-12,回转是适当月天数,是不?
不考虑闰年的情况下,可以有多种写法,下面是其中一种,

使用方法:
mov ax,月份 ;  1-12
call GetMd
;  输出 :cf=1,ax=-1,失败,因为输入ax=0或 ax>12
;  输出 :cf=0 ax=该月天数(不考虑闰年,2月=28)
;  jnc 成功则跳到...
;  或jc 失败则跳到...


...
...
mov ax,2 ;例子,2
call GetMd ; 例子,cf=0,且ax=28
..
..
..






GETMD proc near
 jmp short MyMd
 monthday db 31,28,31,30,31,30,31,31,30,31,30,31
MyMd:
 push ds
 push bx
 push cs
 pop ds
 lea bx,monthday
 dec ax
 cmp ax,11
 ja MdErr
 xlatb
 clc
 jmp short MdOk
MdErr:
 mov ax,-1
 stc
MdOk:
 pop bx
 pop ds
 ret
GETMD endp
2018-06-10 06:39
怡寶想睡覺啊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-6-9
得分:0 
回复 3楼 Valenciax
啊,又是你帮我,谢谢谢谢!
不过我的问题解决了,
我输出出错是因为提取输入数字的宏有问题导致MONTH的值不对,
我重写了那一段宏就输出就对了。
最后还是谢谢帮忙,非常感谢~
2018-06-10 12:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487768-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.557590 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved