| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 598 人关注过本帖
标题:让你一次都不CALL
只看楼主 加入收藏
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
 问题点数:0 回复次数:1 
让你一次都不CALL

;***********************************************
NAME BOOK_PAGE272
TITLE TEXT_5_16
;***********************************************
DATA SEGMENT
WEEK DB 'MON','TUE','WED','THU','FRI','SAT','SUN'
STR1 DB 'Please Input a number in 1 to 7:$'
STR2 DB 'Press any key to continue...$'
STR3 DB 'The number you enter is not in 1 to 7 !$'
DAY DB ?
DATA ENDS
;***********************************************
STACK1 SEGMENT PARA STACK
DB 10H DUP(0)
STACK1 ENDS
;***********************************************
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;***********************************************
;以下是在屏幕上输出字符串STR1的提示信息:
;please Input a number in 1 to 7:
;***********************************************
MOV DX,OFFSET STR1
MOV AH,09H;输出字符串STR1
INT 21H
;***********************************************
;以下是暂停接收用户输入的一个数字(1<=数字<=7)
;***********************************************
MOV AH,01H;暂停接收一个数字
INT 21H
;***********************************************
;以下是处理输入数字的合法性
;***********************************************
SUB AL,30H;将ASCII码转换为数字
CMP AL,1 ;和1比较结果不保存只影响标志位
JB LQ ;若AL<1,则跳转到LQ
CMP AL,7 ;和7比较结果不保存只影响标志位
JA LQ ;若AL>7,则跳转到LQ
MOV DAY,AL;若输入数字合法则赋给变量DAY并则跳转到LKP
MOV CX,47
JMP LKP
;***********************************************
;以下是输入数字不合法之后在屏幕上显示字符串STR3的
;提示信息:The number you enter is not in 1 to 9 !
;***********************************************
LQ: MOV CX,47
LKP2: MOV DL,20H;输出空格达到换行的目的
MOV AH,02H
INT 21H
LOOP LKP2
MOV DX,OFFSET STR3;
MOV AH,09H;输出字符串STR3
INT 21H
MOV AH,01H;暂停接收一个数字
INT 21H
JMP EXIT
;***********************************************
;以下是输出空格达到换行的目的空格个数由CX中的值确定
;***********************************************
LKP: MOV DL,20H;输出空格达到换行的目的
MOV AH,02H
INT 21H
LOOP LKP


;***********************************************
;以下是将DAY的值转化为相对于WEEK中的偏移量并存入BL中
;***********************************************
FUN: XOR BX,BX ;将BX清零
MOV BL,DAY;BL<-DAY
DEC BL ;BL<-(BL-1)相当于BL=(DAY-1)
MOV AL,BL ;将BL中的值(DAY-1)保存到AL中相当于AL=DAY-1
SAL BL,1 ;将BL左移1位相当于BL=2*(DAY-1)
ADD BL,AL ;将BL中的值2*(DAY-1)与AL中的值(DAY-1)相加
;相当于BL=2*(DAY-1)
MOV CX,3 ;将CX中赋值为3为下面的LOOP循环作准备
;***********************************************
;以下是输出WEEK+BX中的字符如:若BL=3则输出WED
;***********************************************
LOP: MOV DL,WEEK[BX]
MOV AH,02H;输出DL中的内容
INT 21H
INC BX
LOOP LOP

MOV CX,77 ;
LKP1: MOV DL,20H;输出空格达到换行的目的
MOV AH,02H
INT 21H
LOOP LKP1
;***********************************************
;以下是在屏幕上显示字符串STR2的提示信息:
;Press any key to continue...
;***********************************************
MOV DX,OFFSET STR2 ;
MOV AH,09H;输出字符串STR3
INT 21H
MOV AH,01H;暂停接收一个数字
INT 21H
;***********************************************
;以下是退出程序返回dos
;***********************************************
EXIT: MOV AH,4CH;退出程序返回dos
INT 21H
CODE ENDS
END START

搜索更多相关主题的帖子: CALL 
2006-12-09 18:28
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
给点意见啥

♂ 死后定当长眠,生前何须久睡。♀
2006-12-10 18:36
快速回复:让你一次都不CALL
数据加载中...
 
   



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

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