已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五 分支结构程序设计实验目的1、掌握利用无条件转移指令JMP和有条件转移指令实现多分支程序的设计方法。2、掌握用DOS的中断调用,实现再程序执行过程中从键盘动态输入字符串的方法。3、掌握程序中标号的定义和使用。实验内容实现从键盘输入一个月份数值(1-12),根据输入的月份数值显示相应的月份英文单词缩写,如输入5则显示May。实验步骤1、编辑下列程序:.model small.stack.data mon db Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec msg1 db Please input a month(1-12) :,13,10,$ msg2 db Input error! Now try again.,13,10,$ buffer label byte ;定义输入月份的输入缓冲区 maxlen db 3 ;最多2个数字,包括一个回车 actlen db ? ;保存实际输入的字符个数 string db 3 dup(?) ;保存输入的月份数字内容(ASCII码).code.startupshuru: ;开始输入月份编号 lea dx,msg1 mov ah,09h int 21h ;显示提示信息 lea dx,buffer mov ah,0ah int 21h ;输入月份数值 cmp actlen,0 ;若没有输入月份则转出错处理 je shuruerr;以下判断输入月份是否合法 lea di,string cmp actlen,2 je da10 ;若输入的是2位数月份值则转到da10标号处执行 mov al,string ;若只输入1位数字月份值,则读出该值 and al,0fh ;把ASCII码转换为对应数字 jmp jisuanda10: mov al,string and al,0fh ;把月份数值十位的ASCII码转换为对应数字(如12月的1字) mov bl,10 mul bl and string1,0fh ;把月份数值个位的ASCII码转换为对应数字 add al,string1 ;十位加上个位 (如12月)jisuan: ;以下计算偏移地址 cmp al,1 ;比1小是非法月份 jb shuruerr ;若月份值小于1则转出错处理 cmp al,12 ja shuruerr ;比12大也是非法月份 sub al,1 ;月份值减1 shl al,1 shl al,1 ;月份再乘4对应了MON字符串中从首地址开始的字符相对位置 xor ah,ah ;1月份从0位置开始即JAN,.5月份从位置16开始即MAY lea si,mon ;找到被显示月份字符的位置 add si,ax mov cx,3output: mov dl,si ;输出对应月份英文缩写 mov ah,2 int 21h inc si loop output .exit 0shuruerr: lea dx,msg2 ;输入出错时提示出错,并转到程序起始处重新执行 mov ah,09h int 21h jmp shuruend2、程序汇编通过后,运行程序察看输出结果。3、程序运行中不输入月份值(直接回车),或输入非法月份值,观察程序执行的情况。实验六 分支与循环混合结构程序设计实验目的1、掌握利用.IF语句实现分支程序的设计方法;2、掌握利用.REPEAT语句实现循环程序的设计方法;3、掌握DIV指令的使用特点;4、掌握地址表的定义和使用方法。实验内容实现成绩单的分等级统计功能,在数据段中有成绩单的定义,并包含有若干个分数,程序根据成绩单数据的个数循环分别统计个分数段成绩的个数,最后输出个等级段的分数个数。要求:成绩单数据少于100字节,输出的每个档次统计值按两位数显示。实验步骤1、编辑下列程序:.model small.stack.dataHAN DB 42,62,68,70,79,82,85,90,95,99,66,88,78,90,98,200 ;成绩单count equ $-han ;记录数据个数MEM DB 6 dup(0) ;分别用于存放各分数段成绩的个数scoree db 10,13,Score E count is:$ ;定义各分数段的提示信息scored db 10,13,Score D count is:$scorec db 10,13,Score C count is:$scoreb db 10,13,Score B count is:$scorea db 10,13,Score A count is:$scoreo db 10,13,Score Other count is:$table dw scoreo,scoree,scored,scorec,scoreb,scorea ;定义地址表.code.startup MOV CX,count mov si,0begin: ;统计各个分数段的成绩个数 .if hansi=60 & hansi=70 & hansi=80 & hansi=90 & hansi=99 add mem5,1 .else add mem0,1 .endif inc si loop begin mov cx,6 .repeat ;开始循环 mov si,cx dec si add si,si ;计算地址表中对应地址项与提示信息的对应关系 mov dx,tablesi mov ah,9 int 21h ;显示提示信息 xor ah,ah mov si,cx MOV al,memsi-1 ;读出统计好的一个数值(此处只能处理99以下的) mov bl,10 div bl ;ax/10 mov memsi-1,ah ;AH为余数是个位,暂时存放回该内存单元 mov dl,AL ;al为商是十位 add dl,30h ;转换为ASCII码 MOV AH,2 INT 21H ;以十进制形式显示十位 MOV AH,2 mov dl,memsi-1 add dl,30h INT 21H ;再显示个位 .untilcxz ;CX自动减1,减到0结束循环 .exit 0END2、程序汇编通过后,运行程序察看输出结果。3、修改成绩单的内容再重新汇编和运行程序,观察程序的结果变化情况。把数据修改为22,32,48,50,69,72,85,40,75,89,66,58,48,70,78,200 4、利用DEBUG工具的U命令反汇编可执行程序,观察.IF语句及.REPEAT语句所对应的汇编指令情况。5、利用MASM的命令行,汇编源文件并生成.LST列表文件,查看列表文件内容。由:masm /l + 文件名 生成 lst注:实际上高级程序结构控制语句在汇编时,都转换成相应的比较指令和条件转移指令了。高级程序结构控制语句使得程序设计、理解都变得非常方便。生成list文件为Microsoft (R) Macro Assembler Version 6.15.8803 06/07/11 19:36:336.asm Page 1 - 1.model small.stack 0000.data 0000 16 20 30 32 45 48HAN DB 22,32,48,50,69,72,85,40,75,89,66,58,48,70,78,200 ;成绩单 55 28 4B 59 42 3A 30 46 4E C8 0010 = 0010count equ $-han ;记录数据个数 0010 0006 MEM DB 6 dup(0) ;分别用于存放各分数段成绩的个数 00 0016 0A 0D 53 63 6F 72scoree db 10,13,Score E count is:$ ;定义各分数段的提示信息 65 20 22 45 22 20 63 6F 75 6E 74 20 69 73 3A 24 002C 0A 0D 53 63 6F 72scored db 10,13,Score D count is:$ 65 20 22 44 22 20 63 6F 75 6E 74 20 69 73 3A 24 0042 0A 0D 53 63 6F 72scorec db 10,13,Score C count is:$ 65 20 22 43 22 20 63 6F 75 6E 74 20 69 73 3A 24 0058 0A 0D 53 63 6F 72scoreb db 10,13,Score B count is:$ 65 20 22 42 22 20 63 6F 75 6E 74 20 69 73 3A 24 006E 0A 0D 53 63 6F 72scorea db 10,13,Score A count is:$ 65 20 22 41 22 20 63 6F 75 6E 74 20 69 73 3A 24 0084 0A 0D 53 63 6F 72scoreo db 10,13,Score Other count is:$ 65 20 22 4F 74 68 65 72 22 20 63 6F 75 6E 74 20 69 73 3A 24 009E 0084 R 0016 R 002C Rtable dw scoreo,scoree,scored,scorec,scoreb,scorea ;定义地址表 0042 R 0058 R 006E R 0000.code.startup 0017 B9 0010 MOV CX,count 001A BE 0000 mov si,0 001Dbegin: ;统计各个分数段的成绩个数 .if hansi=60 & hansi=70 & hansi=80 & hansi=90 & hansi=99 0078 80 06 0015 R 01 add mem5,1 .else 007F 80 06 0010 R 01 add mem0,1 .endif 0084 46 inc si 0085 E2 96 loop begin 0087 B9 0006 mov cx,6 .repeat ;开始循环 008A 8B F1 mov si,cx 008C 4E dec si 008D 03 F6 add si,si ;计算地址表中对应地址项与提示信息的对应关系 008F 8B 94 009E R mov dx,tablesi 0093 B4 09 mov ah,9 0095 CD 21 int 21h ;显示提示信息 0097 32 E4 xor ah,ah 0099 8B F1 mov si,cx 009B 8A 84 000F R MOV al,memsi-1 ;读出统计好的一个数值(此处只能处理99以下的) 009F B3 0A mov bl,10 00A1 F6 F3 div bl ;ax/10 00A3 88 A4 000F R mov memsi-1,ah ;AH为余数是个位,暂时存放回该内存单元 00A7 8A D0 mov dl,AL ;al为商是十位 00A9 80 C2 30 add dl,30h ;转换为ASCII码 00AC B4 02 MOV AH,2 00AE CD 21 INT 21H ;以十进制形式显示十位 00B0 B4 02 MOV AH,2 00B2 8A 94 000F R mov dl,memsi-1 00B6 80 C2 30 add dl,30h 00B9 CD 21 INT 21H ;再显示个位 .untilcxz ;CX自动减1,减到0结束循环 .exit 0ENDMicrosoft (R) Macro Assembler Version 6.15.8803 06/07/11 19:36:336.asm Symbols 2 - 1Segments and Groups: N a m e Size Length Align Combine ClassDGROUP . . . . . . . . . . . . .GROUP_DATA . . . . . . . . . . . . .16 Bit 00AA Word Public DATASTACK . . . . . . . . . . . . .16 Bit 0400 Para Stack STACK _TEXT . . . . . . . . . . . . .16 Bit 00C2 Word Public CODESymbols: N a m e Type Value AttrCodeSize . . . . . . . . . . .Number 0000h DataSize . . . . . . . . . . .Number 0000h Interface . . . . . . . . . . .Number 0000h Model . . . . . . . . . . . . .Number 0002h Startup . . . . . . . . . . . .L Near 0000 _TEXTcode . . . . . . . . . . . . .Text _TEXTdata . . . . . . . . . . . . .Text DGROUPfardata? . . . . . . . . . . .Text FAR_BSSfardata . . . . . . . . . . . .Text FAR_DATAstack . . . . . . . . . . . . .Text DGROUPHAN . . . . . . . . . . . . . .Byte 0000 _DATAMEM . . . . . . . . . . . . . .Byte 0010 _DATAbegin . . . . . . . . . . . . .L Near 001D _TEXTcount . . . . . . . . . . . . .Number 0010
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合并慢性心力衰竭抗凝治疗的个体化ARNI个体化剂量方案
- 可穿戴设备在老年多病共存抗凝治疗中的监测策略
- 2025年光伏发电收益分配合同
- 变异株传播的消毒技术效果长期监测方案
- 2025广东阳江市阳西县选调公务员22人备考题库附答案
- 双向转诊机制中患者医联体分级诊疗参与策略
- 2026年一级建造师之一建铁路工程实务考试题库300道附完整答案【易错题】
- 2026年一级注册建筑师之建筑结构考试题库300道及完整答案一套
- 卵巢癌免疫微环境重塑与逆转策略
- 2025江西景德镇市总工会合同制工会社会工作者招聘15人备考题库附答案
- 面瘫中医治疗课件
- 2024四川轻化工大学辅导员招聘笔试真题
- 湖北工程变更管理办法
- 检验科实验室安全培训
- 乡镇妇幼工作管理制度
- 化工厂施工环境管理制度
- 律师事务所车辆管理制度
- 智能化园区建设-洞察阐释
- 非煤矿山机电设备管理制度
- JG/T 255-2020内置遮阳中空玻璃制品
- JG/T 254-2015建筑用遮阳软卷帘
评论
0/150
提交评论