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


;***********************************************
; 下面程序是根据DAY字节存储单元中的内容(1~7)
; 从表WEEK中查出对应的星期一至星期日的英文缩写
; 并用2号功能调用(单个字符)显示输出
; 适当的增加了一些输入提示以及输入合法性的检验
;***********************************************
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
;***********************************************
;以下是主程序入口
;***********************************************
MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
CALL OUTPUTSTR1;
MOV CX,47
CALL ENTER
CALL TURN
MOV CX,77
CALL ENTER
CALL OUTPUTSTR2
CALL EXIT
RET
MAIN ENDP

;***********************************************
; 六个子程序OUTPUTSTR1,OUTPUTSTR2,
; OUTPUTSTR3,ENTER,TURN,EXIT的定义如下:
;***********************************************


; 1.子程序OUTPUTSTR1的定义
;功能:在屏幕上输出字符串STR1
;提示信息:please Input a number in 1 to 7:
;***********************************************
OUTPUTSTR1 PROC
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并则跳转到LKP1
JMP LKP1
LQ: MOV CX,47
CALL ENTER
CALL OUTPUTSTR3
MOV CX,41
CALL ENTER
CALL OUTPUTSTR2
CALL EXIT
LKP1: RET
OUTPUTSTR1 ENDP
;***********************************************


; 2.子程序OUTPUTSTR2的定义
;功能:在屏幕上输出字符串STR2
;提示信息:Press any key to continue...
;***********************************************
OUTPUTSTR2 PROC
MOV DX,OFFSET STR2 ;
MOV AH,09H;输出字符串STR2
INT 21H
MOV AH,01H;暂停接收一个数字
INT 21H
RET
OUTPUTSTR2 ENDP
;***********************************************


; 3.子程序OUTPUTSTR2的定义
;功能:在屏幕上输出字符串STR3
;提示信息:Press any key to continue...
;***********************************************
OUTPUTSTR3 PROC
MOV DX,OFFSET STR3;
MOV AH,09H;输出字符串STR3
INT 21H
RET
OUTPUTSTR3 ENDP
;***********************************************


; 4.子程序ENTER的定义
;功能:输出由CX中的值确定个数的空格达到换行的目
;***********************************************
ENTER PROC
LKP: MOV DL,20H;输出空格达到换行的目的
MOV AH,02H
INT 21H
LOOP LKP
RET
ENTER ENDP
;***********************************************

; 5.子程序TURN的定义
;功能:将DAY的值转化为相对于WEEK中的偏移量并存入BL中
;***********************************************
TURN PROC
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
RET
TURN ENDP
;***********************************************

; 6.子程序EXIT的定义
;功能:退出程序返回DOS
;***********************************************
EXIT PROC
MOV AH,4CH;退出程序返回dos
INT 21H
RET
EXIT ENDP

CODE ENDS
END START

搜索更多相关主题的帖子: CALL 
2006-12-09 18:17
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
我想这个程序大家应该能看懂吧?我已经尽力给出了好些注释了.呵呵!有什么意见或是好的建议说出来啊!

♂ 死后定当长眠,生前何须久睡。♀
2006-12-10 18:40
oliverypf
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2009-7-17
收藏
得分:0 
没看明白注释写的是什么
2009-07-17 13:54
快速回复:让你一次CALL个够
数据加载中...
 
   



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

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