微机原理分支程序设计实验精.docx
《微机原理分支程序设计实验精.docx》由会员分享,可在线阅读,更多相关《微机原理分支程序设计实验精.docx(9页珍藏版)》请在冰豆网上搜索。
微机原理分支程序设计实验精
2.3分支程序设计实验
2.3.1实验目的
1、掌握分支程序的设计方法。
2、掌握宏定义及宏调用的基本方法。
3、了解小写和大写字母的ASCII码表示及其转换方法。
了解数字及其它字符在的ASCII码表示方法。
4、进一步掌握调试工具的使用方法
2.3.2实验预习要求
1、复习比较指令、条件转移指令的用法。
2、复习宏定义及宏调用的基本方法。
3、根据“2.3.3实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。
4、程序框架中显示提示信息的指令序列用宏调用实现。
5、从“2.3.4实验习题”中任选一道题目,编写源程序,以便上机调试。
2.3.3实验内容
从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。
若输入为小写字母,显示“YouInputaLowercaseLetter!
”;若输入为大写字母,显示“YouInputaUppercaseLetter!
”;若输入为数字,显示“YouInputaDigit!
”;若输入为其它字符,显示“YouInputOtherLetter!
”。
1、编程指导
数字0~9的ASCII码为30H~39H;大写字母的ASCII码为41H~5AH,小写字母的ASCII码为61H~7AH。
本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的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
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H
INT21H
CMPAL,'0'
JBOTHER
CMPAL,'9'
JBEDIGIT
CMPAL,'A'
JBOTHER
CMPAL,'Z'
JBEUPPER
CMPAL,'a'
JBOTHER
CMPAL,'z'
JBELOWER
JMPPEND
LOWER:
MOVDX,OFFSETINFOR2
MOVAH,09H
INT21H
JMPPEND
UPPER:
MOVDX,OFFSETINFOR3
MOVAH,09H
INT21H
JMPPEND
DIGIT:
MOVDX,OFFSETINFOR4
MOVAH,09H
INT21H
JMPPEND
OTHER:
MOVDX,OFFSETINFOR5
MOVAH,09H
INT21H
JMPPEND
PEND:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(3)实验结果:
2.3.4实验习题
1、在屏幕上显示信息“Areyoureallywanttoexit?
”,然后从键盘输入一个字符,若输入“Y”或“y”,显示“Thankyouforyourusing!
”后程序结束;若输入“N”或“n”,显示“Let’scontinue!
”后程序结束;若输入其它字符,显示“Youpressanerrorkey!
”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
(1)实验代码:
DATASEGMENT
INFOR1DB0AH,0DH,"Areyoureallywanttoexit?
$"
INFOR2DB0AH,0DH,"Thankyouforyourusing!
$"
INFOR3DB0AH,0DH,"Let'scontinue!
$"
INFOR4DB0AH,0DH,"Youpressanerrorkey!
$"
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL,'Y'
JEYES
CMPAL,'y'
JEYES
CMPAL,'N'
JENO
CMPAL,'n'
JENO
JMPPEND
YES:
MOVDX,OFFSETINFOR2
MOVAH,09H
INT21H
JMPPEND
NO:
MOVDX,OFFSETINFOR3
MOVAH,09H
INT21H
JMPPEND
OTHER:
MOVDX,OFFSETINFOR4
MOVAH,09H
INT21H
JMPPEND
PEND:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(2)实验结果:
2、在屏幕上显示如下信息:
1------------------------Panda
2------------------------Cat
3------------------------Rabbit
4------------------------Pig
5------------------------EXIT
(Pleasechoose1,2,3,4or5-----
若输入1,显示“Ilikepanda”后程序结束;若输入2,显示“Ilikecat”后程序结束;若输入3,显示“Ilikerabbit”后程序结束;若输入4,显示“Idon’tlikepig”后程序结束;若输入5,程序直接结束;若输入其它字符,显示“Youpressanerrorkey!
”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
(1)代码:
DATASEGMENT
INFOR1DB0AH,0DH,"1---------------------Panda$"INFOR2DB0AH,0DH,"2---------------------Cat$"INFOR3DB0AH,0DH,"3---------------------Rabbit$"INFOR4DB0AH,0DH,"4---------------------Pig$"INFOR5DB0AH,0DH,"5---------------------EXIT$"INFOR6DB0AH,0DH,"IlikePanda$"
INFOR7DB0AH,0DH,"IlikeCat$"
INFOR8DB0AH,0DH,"IlikeRabbit$"
INFOR9DB0AH,0DH,"Idon'tlikePig$"DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H
INT21H
MOVDX,OFFSETINFOR2
MOVAH,09H
INT21H
MOVDX,OFFSETINFOR3
MOVAH,09H
INT21H
MOVDX,OFFSETINFOR4
MOVAH,09H
INT21H
MOVDX,OFFSETINFOR5
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL,'1'
JEA
CMPAL,'2'
JEB
CMPAL,'3'
JEC
CMPAL,'4'
JED
CMPAL,'5'
JEPEND
;JMPPEND
A:
MOVDX,OFFSETINFOR6
MOVAH,09H
INT21HJMPPENDB:
MOVDX,OFFSETINFOR7MOVAH,09HINT21HJMPPENDC:
MOVDX,OFFSETINFOR8MOVAH,09HINT21HJMPPENDD:
MOVDX,OFFSETINFOR9MOVAH,09HINT21HJMPPENDPEND:
MOVAH,4CHINT21HCODEENDSENDSTART
(2)实验结果:
2.3.5实验小结通过本次实验,我掌握了汇编分支程序的设计方法,了解了小写和大写字母的ASCII码的转换方法,以及数字及其他的字符在ASCII码的表示方法。
实验中遇到了一些问题,例如:
输入源代码时,一定要按照语句格式与语法来写,并且少了空格会导致编译错误;一个完整的汇编程序只能返回一次DOS等,返回DOS语句后面的汇编程序不会执行等。