分支与循环程序设计实验文档格式.docx
- 文档编号:21314900
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:173.01KB
分支与循环程序设计实验文档格式.docx
《分支与循环程序设计实验文档格式.docx》由会员分享,可在线阅读,更多相关《分支与循环程序设计实验文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。
字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。
2、
流程图及程序框图
(1)流程图
(2)程序框架
DATASEGMENT
INFOR1DB0AH,0DH,"
PleasePressAnyKeytoinputaletter:
$"
INFOR2DB0AH,0DH,"
YouInputaLowercaseLetter!
INFOR3DB0AH,0DH,"
YouInputaUppercaseLetter!
INFOR4DB0AH,0DH,"
YouInputaDigit!
INFOR5DB0AH,0DH,"
YouInputOtherLetter!
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
显示信息“PleasePressAnyKeytoinputaletter”的指令序列以及接收从键盘输入一个字符的指令序列
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H
CMPAL,'
0'
JBOTHER
9'
JBEDIGIT
A'
JBOTHER
Z'
JBEUPPER
a'
z'
JBELOWER
JMPPEND
显示“YouInputaLowercaseLetter!
”的指令序列
LOWER:
JMPPEND;
注意执行完一个分支后应使程序跳出
显示“YouInputaUppercaseLetter”的指令序列
UPPER:
显示“YouInputaDigit!
DIGIT:
MOVDX,OFFSETINFOR4
JMPPEND
显示“YouInputOtherLetter!
OTHER:
PEND:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3、课后习题
在屏幕上显示信息“Areyoureallywanttoexit?
”,然后从键盘输入一个字符,若输入“Y”或“y”,则显示“Thankyouforyourusing!
”后程序结束;
若输入“N”或“n”,则显示“"
Let'
scontinue!
若输入其它字符,则显示“Youpressanerrorkey!
”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
(二)循环程序设计实验
(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。
将键盘输入的十进制数转换为二进制数的程序清单如下:
INF1DB"
Pleaseinputanumber(0-65535):
IBUFDB7,0,6DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINF1
MOVAH,09H
INT21H
MOVDX,OFFSETIBUF;
键入一个十进制数(<
65535)
MOVAH,0AH
INT21H
MOVCL,IBUF+1;
十进制数的位数送CX
MOVCH,0
MOVSI,OFFSETIBUF+2;
指向输入的第一个字符(最高位)
MOVAX,0;
开始将十进制数转换为二进制数
AGAIN:
MOVDX,10;
((010+a4)10+…)10+a0
MULDX
ANDBYTEPTR[SI],0FH
ADDAL,[SI]
ADCAH,0
INCSI
LOOPAGAIN
MOVAH,4CH
CODEENDS
ENDSTART
本程序功能:
从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。
(2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数。
将二进制数转换为十进制数的程序清单如下:
DATASEGMENT
OBUFDB6DUP(?
DATAENDS
CODESEGMENT
ASSUMECS:
DATA
MOVDS,AX
MOVBX,OFFSETOBUF+5
MOVBYTEPTR[BX],'
$'
MOVCX,10;
做(DX):
(AX)/10运算
LOOP1:
MOVDX,0;
被除数高16位清0
DIVCX
ADDDL,30H;
将DL中的一位十进制数转换为ASCII码
DECBX
MOV[BX],DL
ORAX,AX
JNZLOOP1
;
判断商是否为0,不为0继续
MOVDX,BX
INT21H
显示转换得到的十进制数
INT21H
ENDSTART
本程序功能:
将存储在AX寄存器中的二进制数转换为十进制数并显示。
流程图及程序框架
INF1DB"
IBUFDB7,0,6DUP(?
OBUFDB6DUP(?
CODESEGMENT
接收从键盘输入的十进制数,并将其转换为二进制数(存AX寄存器)的指令序列
MOVCX,AX
MOVAX,0
MOVBX,1
LOOP2:
ADDAX,BX
INCBX
将AX中存放的二进制数转换为十进制数并显示的指令序列
LOOPLOOP2
CODEENDS
3、实验习题
从自然数1开始累加,直到累加和大于60000为止,显示累加的自然数的个数和累加和。
显示格式为:
1+2+…+n=sum,其中n为累加个数,sum为累加和
四.测试数据及运行结果
1.分支程序设计实验
课后题:
2.循环程序设计实验
五.总结
通过实验三(分支程序设计实验),我熟悉掌握了分支程序的设计方法以及宏定义及宏调用的基本方法,了解了小写和大写字母的ASCII码表示及其转换方法以及数字及其它字符在的ASCII码表示方法,并对分支程序和宏指令更加熟悉,进一步理解和巩固课堂学习内容。
通过实验二(循环程序设计实验),我学习和掌握了循环程序的设计方法以及比较指令、转移指令和循环指令的使用方法,并进一步掌握了调试工具的使用方法。
只有熟练掌握,理解题目,对各个功能实现的先后顺序和之前执行的程序对之后执行的程序的影响心中有数,这样才能实现程序的功能。
6.附录:
1、分支程序设计实验
(1)从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。
INFOR1DB0AH,0DH,"
PLEASEPRESSANYKEYTOINPUTALETTER:
$"
INFOR2DB0AH,0DH,"
YOUINPUTALOWERCASELETTER!
INFOR3DB0AH,0DH,"
YOUINPUTAUPPERCASELETTER!
INFOR4DB0AH,0DH,"
YOUINPUTADIGIT!
INFOR5DB0AH,0DH,"
YOUINPUTOTHERLETTER!
DATAENDS
ASSUMECS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H
INT21H
MOVAH,01H
CMPAL,'
JBOTHER
JBEDIGIT
JBEUPPER
JBELOWER
JMPPEND
LOWER:
MOVDX,OFFSETINFOR2
INT21H
UPPER:
MOVDX,OFFSETINFOR3
MOVAH,09H
JMPPEND
DIGIT:
MOVDX,OFFSETINFOR4
OTHER:
MOVDX,OFFSETINFOR5
PEND:
MOVAH,4CH
ENDSTART
(2)在屏幕上显示信息“Areyoureallywanttoexit?
2、循环程序设计实验
(1)计算1+2+……n=?
出现此信息后通过键盘输入一个小于628的无符号整数1+2+…..n=sum;
其中n为用户输入的数。
MOVAX,DATA
MOVDX,OFFSETINF1
MOVDX,OFFSETIBUF
MOVAH,0AH
MOVCL,IBUF+1
MOVCH,0
MOVSI,OFFSETIBUF+2
MOVAX,0
AGAIN:
MOVDX,10
MULDX
ANDBYTEPTR[SI],0FH
ADDAL,[SI]
ADCAH,0
INCSI
LOOPAGAIN
MOVCX,AX
MOVBX,1
LOOP2:
ADDAX,BX
INCBX
LOOPLOOP2
MOVBX,OFFSETOBUF+5
MOVBYTEPTR[BX],'
MOVCX,0AH
LOOP1:
MOVDX,0
DIVCX
ADDDL,30H
DECBX
MOV[BX],DL
ORAX,AX
JNZLOOP1
MOVDL,0AH
MOVAH,02H
MOVDX,BX
CODEENDS
(2)从自然数1开始累加,直到累加和大于60000为止,显示累加的自然数的个数和累加和。
OBUFDB6DUP(?
EUDB'
+'
'
EBDB0DH,'
='
0DH,'
DATAENDS
DISPLAYMACROSTRING
MOVDX,OFFSETSTRING
MOVAH,09H
INT21H
ENDM
CODESEGMENT
MAINPROCFAR
MOVDS,AX
MOVAX,1
MOVCX,0
ADCCX,AX
CMPAX,1
JEALL
PUSHAX
DISPLAYEU
POPAX
ALL:
CALLEXCHANGE
INCAX
CMPCX,60000
JCLOOP1
PUSHCX
DISPLAYEB
MOVAX,CX
CALLEXCHANGE
POPCX
POPAX
MOVAH,4CH
RET
MAINENDP
EXCHANGEPROCNEAR
PUSHBX
PUSHCX
MOVBX,OFFSETOBUF+5
MOVBYTEPTR[BX],'
MOVCX,10
MOVDX,0
DIVCX
ADDDL,30H
DECBX
MOV[BX],DL
ORAX,AX
JNZLOOP2
MOVDX,BX
INT21H
POPBX
EXCHANGEENDP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支 循环 程序设计 实验