| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 494 人关注过本帖
标题:什么情况下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
拜托拜托搞到现在都半夜了还是出错
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
等 级:版主
威 望:10
帖 子:204
专家分:1362
注 册: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







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

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