收藏 分享(赏)

汇编语言实验题目及测试截图4、5、6.docx

上传人:dreamzhangning 文档编号:2254413 上传时间:2018-09-07 格式:DOCX 页数:11 大小:97.12KB
下载 相关 举报
汇编语言实验题目及测试截图4、5、6.docx_第1页
第1页 / 共11页
汇编语言实验题目及测试截图4、5、6.docx_第2页
第2页 / 共11页
汇编语言实验题目及测试截图4、5、6.docx_第3页
第3页 / 共11页
汇编语言实验题目及测试截图4、5、6.docx_第4页
第4页 / 共11页
汇编语言实验题目及测试截图4、5、6.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、实验五 分支结构程序设计实验目的1、掌握利用无条件转移指令JMP和有条件转移指令实现多分支程序的设计方法。2、掌握用DOS的中断调用,实现再程序执行过程中从键盘动态输入字符串的方法。3、掌握程序中标号的定义和使用。实验内容实现从键盘输入一个月份数值(1-12),根据输入的月份数值显示相应的月份英文单词缩写,如输入5则显示May。实验步骤1、编辑下列程序:.model small.stack.datamon db Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Decmsg1 db Please input a month(1-12) :,13,10,$m

2、sg2 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,09hint 21h ;显示提示信息lea dx,buffermov ah,0ahint 21h ;输入月份数值cmp actlen,0 ;若没有输入月份则转出错处理je s

3、huruerr;以下判断输入月份是否合法lea di,stringcmp actlen,2je da10 ;若输入的是 2 位数月份值则转到 da10 标号处执行mov al,string ;若只输入 1 位数字月份值,则读出该值and al,0fh ;把 ASCII 码转换为对应数字jmp jisuanda10:mov al,stringand al,0fh ;把月份数值十位的 ASCII 码转换为对应数字(如 12 月的 1 字)mov bl,10mul bland string1,0fh ;把月份数值个位的 ASCII 码转换为对应数字add al,string1 ;十位加上个位 (如

4、12 月)jisuan: ;以下计算偏移地址cmp al,1 ;比 1 小是非法月份jb shuruerr ;若月份值小于 1 则转出错处理cmp al,12ja shuruerr ;比 12 大也是非法月份sub al,1 ;月份值减 1shl al,1shl al,1 ;月份再乘 4 对应了 MON 字符串中从首地址开始的字符相对位置xor ah,ah ;1 月份从 0 位置开始即 JAN,.5 月份从位置 16 开始即 MAYlea si,mon ;找到被显示月份字符的位置add si,axmov cx,3output: mov dl,si ;输出对应月份英文缩写mov ah,2int

5、21hinc siloop output.exit 0shuruerr: lea dx,msg2 ;输入出错时提示出错,并转到程序起始处重新执行mov ah,09hint 21hjmp shuruend2、程序汇编通过后,运行程序察看输出结果。3、程序运行中不输入月份值(直接回车),或输入非法月份值,观察程序执行的情况。实验六 分支与循环混合结构程序设计实验目的1、掌握利用.IF语句实现分支程序的设计方法;2、掌握利用.REPEAT语句实现循环程序的设计方法;3、掌握DIV指令的使用特点;4、掌握地址表的定义和使用方法。实验内容实现成绩单的分等级统计功能,在数据段中有成绩单的定义,并包含有若干

6、个分数,程序根据成绩单数据的个数循环分别统计个分数段成绩的个数,最后输出个等级段的分数个数。要求:成绩单数据少于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

7、 “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.startupMOV CX,countmov si,0begin: ;统计各个分数段的成绩个数.if hansi=60 开始循环008A 8B F1

8、 mov si,cx008C 4E dec si008D 03 F6 add si,si ;计算地址表中对应地址项与提示信息的对应关系008F 8B 94 009E R mov dx,tablesi 0093 B4 09 mov ah,90095 CD 21 int 21h ;显示提示信息0097 32 E4 xor ah,ah 0099 8B F1 mov si,cx009B 8A 84 000F R MOV al,memsi-1 ;读出统计好的一个数值(此处只能处理 99 以下的)009F B3 0A mov bl,10 00A1 F6 F3 div bl ;ax/1000A3 88 A4

9、 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,200AE CD 21 INT 21H ;以十进制形式显示十位00B0 B4 02 MOV AH,200B2 8A 94 000F R mov dl,memsi-1 00B6 80 C2 30 add dl,30h00B9 CD 21 INT 21H ;再显示个位.untilcxz ;CX 自动减 1,减到 0 结束循环.exit 0END

10、Microsoft (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 STAC

11、K _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 . . . . . . . . . . .

12、. L Near 0000 _TEXTcode . . . . . . . . . . . . . Text _TEXTdata . . . . . . . . . . . . . Text DGROUPfardata? . . . . . . . . . . . Text FAR_BSSfardata . . . . . . . . . . . . Text FAR_DATAstack . . . . . . . . . . . . . Text DGROUPHAN . . . . . . . . . . . . . .Byte 0000 _DATAMEM . . . . . . . . .

13、 . . . . . Byte 0010 _DATAbegin . . . . . . . . . . . . . L Near 001D _TEXTcount . . . . . . . . . . . . . Number 0010h scorea . . . . . . . . . . . . . Byte 006E _DATAscoreb . . . . . . . . . . . . . Byte 0058 _DATAscorec . . . . . . . . . . . . . Byte 0042 _DATAscored . . . . . . . . . . . . . Byt

14、e 002C _DATAscoree . . . . . . . . . . . . . Byte 0016 _DATAscoreo . . . . . . . . . . . . . Byte 0084 _DATAtable . . . . . . . . . . . . . Word 009E _DATA0 Warnings0 Errors4-6.确定自变量 wordX 中的 1 的最低位数(015) ,并将结果存于变量 byteY 中;若 wordX中没有 1 的位,则将-1 存入 byteY。实验源程序:.model small.stack.datawordX dw 56byteY db ?.code.startupmov ax,wordXmov cx,16mov dl,-1again: inc dltest ax,1ror ax,1loope againje notfoundmov byteY,dljmp donenotfound: mov byteY,-1done: mov ah,02hmov bl,byteYint 21h.exit 0End运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报