2023年北邮微机原理软件实验报告新编

上传人:汽*** 文档编号:398344450 上传时间:2023-11-03 格式:DOCX 页数:35 大小:287.58KB
返回 下载 相关 举报
2023年北邮微机原理软件实验报告新编_第1页
第1页 / 共35页
2023年北邮微机原理软件实验报告新编_第2页
第2页 / 共35页
2023年北邮微机原理软件实验报告新编_第3页
第3页 / 共35页
2023年北邮微机原理软件实验报告新编_第4页
第4页 / 共35页
2023年北邮微机原理软件实验报告新编_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《2023年北邮微机原理软件实验报告新编》由会员分享,可在线阅读,更多相关《2023年北邮微机原理软件实验报告新编(35页珍藏版)》请在金锄头文库上搜索。

1、信息与通信工程学院微机原理软件实验报告班级: 姓名: 班内序号: 学号: 日 期: 年11月 实验二 分支,循环程序设计一.实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简朴的 DOS 功能调用.二.实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过 9. 2.编写一个程序记录数据区中正数,负数和零的个数. 3.将记录结果在屏幕上显示.三.预习题: 1.十进制数 0 - 9 所相应的 ASCII 码是什么? 如何将十进制数 0 - 9 在 屏幕上显示出来?答:十进制数0-9相应的ASCII码的30H39H。将十进制数0

2、9显示在屏幕上,要用二进制数09后面分别加上30H。2.如何检查一个数为正,为负或为零? 你能举出多少种不同的方法?答:可以将这个数跟零进行比较,运用指令CMP和JZ等进行鉴定;或者对该有符号数的第一位进行鉴定,判断是不是一,若为1,则是负数,反之再鉴定是0还是正数。四.选作题:记录出正奇数,正偶数,负奇数,负偶数以及零的个数.五实验过程1.流程图开始定义各段并初始化获取数据长度工作指针指向当前数字和0相比小于0大于0等于0除以20个数加一除以2判余数鉴定余数为0不为0为0不为0负偶数加1负奇数加1正偶数加1正奇数加1记录结果输出结果结束2.源代码DATA SEGMENT BUFF DW 11

3、,12,0,-59,85,78,15,0,-78,0,74,-45,47,0,12,-79 ;自定义需要鉴定的一组数字 COUNT EQU $-BUFF ;得到数据长度 PLUSO DB 0 PLUSJ DB 0 ZERO DB 0 MINUSO DB 0 MINUSJ DB 0 ;分别用来存几种规定的数字 STRING1 DB PLUSO,PLUSJ,ZERO,MINUSO,MINUSJ: ,$ STRING DB 0, ,0, ,0, ,0, ,0, ,$ ;用来显示结果的字符串 DATA ENDSSTACK SEGMENT STACK STACK ;定义堆栈段 DB 100 DUP(0)

4、 STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKBEGIN PROC FAR PUSH DS XOR AX,AX PUSH AX ;保证返回DOS MOV AX ,DATA MOV DS,AX MOV CX,COUNT SHR CX,1 ;相称于对CX中的数除以2 LEA BX,BUFF ;得到BUFF的偏移地址AGAIN: CMP WORD PTR BX,0 ;将工作指针中的数与零进行比较 JGE PLU JMP MINUSPLU: JZ ZER ;鉴定为0 MOV AX,WORD PTR BX MOV DL,2

5、DIV DL ;将结果除以2 CMP AH,0 JNZ PLUJ INC PLUSO ;正偶数加一 JMP NEXTPLUJ: INC PLUSJ ;正奇数加一 JMP NEXTMINUS: MOV AX,WORD PTR BX MOV DL,2 IDIV DL CMP AH,0 JNZ MINJ INC MINUSO ;负偶数加一 JMP NEXTMINJ: INC MINUSJ ;负奇数加一 JMP NEXT ZER: INC ZERO ;0加一NEXT: INC BX INC BX ;工作指针加2 LOOP AGAIN MOV BL,PLUSO ADD BL,30H ;将记录的数字加上3

6、0h变为ASCii码 MOV PLUSO,BL MOV BL,PLUSJ ADD BL,30H MOV PLUSJ,BL MOV BL,ZERO ADD BL,30H MOV ZERO,BL MOV BL,MINUSO ADD BL,30H MOV MINUSO,BL MOV BL,MINUSJ ADD BL,30H MOV MINUSJ,BL LEA BX,STRING ;将每个变量统一加到字符串相应位置 MOV CL,PLUSO MOV BX,CL MOV CL,PLUSJ MOV BX+2,CL MOV CL,ZERO MOV BX+4,CL MOV CL,MINUSO MOV BX+6

7、,CL MOV CL,MINUSJ MOV BX+8,CL MOV AH,09H ;打印字符串 MOV DX,SEG STRING1 MOV DS,DX MOV DX,OFFSET STRING1 INT 21H MOV AH,09H ;打印结果 MOV DX,SEG STRING MOV DS,DX MOV DX,OFFSET STRING INT 21H RETBEGIN ENDPCODE ENDS END BEGIN 3.实验结果分析实验区待记录的数为:11,12,0,-59,85,78,15,0,-78,0,74,-45,47,0,12,-79通过上述代码的编译链接执行后可以得到的结果

8、如下图所示:通过手动检查发现符合实验的预期结果,则可验证实验的对的性。六实验总结这道题实则是比较基础简朴的一道,其核心在于循环结构和对数字鉴定的比较方法。对于刚开始编写汇编语言的我而言,还是碰到了不小的挑战。由于汇编语言它不同于C+的许多复杂特点,的确在刚开始的时候有点无从下手,但是通过反复地读书以及资料的查阅后基本掌握了基本的分支、循环程序的编写,数字的显示等基本功能,即掌握了最简朴的DOS功能调用,还是感到很开心并且受益匪浅。实验三 代码转换程序设计一.实验目的: 1.掌握几种最基本的代码转换方法; 2.运用子程序进行程序设计.二.实验内容: 1.从键盘上输入若干两位十进制数,寻找其中的最

9、小值,然后在屏幕上显示出来. 2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明. 3.对输入要有检错措施,以防止非法字符输入,并有适当的提醒. 4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.三.预习题: 1.如何将输入的两个字符(0 - 9)变为十进制或二进制数?答:输入的09的字符为ASCII 码,只需要将他们减去30H即可得到所需的机器数。 2.如何将选出的最小值(二进制或十进制)变为 ASCII 码再进行显示?答:跟上一个问题类似,再输出时需要将选出的最小值变为ASCII码,方法很简朴,即将数字加上30H即可。 3.你觉得采用二进制运算还是十进

10、制运算更适合于这个实验?答:采用二进制或者十进制都需要进行ASCII码到数字的转换和其反向转换,相比之下十进制的变换更方便,但换用新的思绪可以大大简化编程承担。即直接使用数字相应的ASCII比较,分别比较十位和个位,最后直接输出字符即可。四实验过程1.流程图开始定义数据堆栈初始化最小值十位输入是是否空格是否否输出结果是否回车否结束输入合法是小于大于与BH比较等于更新BH个位输入个位输入个位输入小于更新BL与BL比较大于更新BL2.源代码JUDGE MACRO ;用来鉴定输入数据合不合法的宏 CMP AL,0 JB WRONG CMP AL,9 JA WRONGENDMXIANSHI MACRO

11、 X,Y ;打印两位数XY的宏 MOV AH,02H MOV DL,X INT 21H MOV AH,02H MOV DL,Y INT 21HENDMINPUT MACRO ;输入单个数据的宏 MOV AH,01H INT 21HENDMDATA SEGMENT ;定义数据段 STRING DB THE MIN NUMBER IS: ,$ ;用于说明的字符串 STRING1 DB INPUT IS NOT OK! ,0DH,0AH,$ STRING2 DB PLEASE INPUT NUMBER: ,0DH,0AH,$ STRING3 DB PLEASE INPUT AGAIN.,0DH,0AH,$ DATA ENDSSTACK SEGMENT STACK ;定义堆栈段 DB 100 DUP(0) STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV DX,DATA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号