北邮微机原理软件实验报告

上传人:hs****ma 文档编号:431176187 上传时间:2022-08-09 格式:DOC 页数:26 大小:106KB
返回 下载 相关 举报
北邮微机原理软件实验报告_第1页
第1页 / 共26页
北邮微机原理软件实验报告_第2页
第2页 / 共26页
北邮微机原理软件实验报告_第3页
第3页 / 共26页
北邮微机原理软件实验报告_第4页
第4页 / 共26页
北邮微机原理软件实验报告_第5页
第5页 / 共26页
点击查看更多>>
资源描述

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

1、-微机原理软件实验报告实验二分支、循环程序设计一实验目的1.开场独立进展汇编语言程序设计。 2.掌握根本分支,循环程序设计。3.掌握最简单的 DOS 功能调用。二实验容1.安排一个数据区,存有假设干个正数,负数和零。每类数的个数都不超过9。2.编写一个程序统计数据区中正数,负数和零的个数。3将统计结果在屏幕上显示。三流程图10开场DS,SS,C*,B*初始化与0相比Z=Z+1B*=B*+2完毕数送入A*NB=B+1结果小于0YA=A+1NC*=0Y显示数据四源代码DATA SEGMENTZDW0 ;数据中0的个数ADW0 ;数据于0的个数BDW0 ;数据中小于0的个数NUMDW9,8,0,-7

2、,6,-5,-4,3,2,-1,0,-8,-1,9,0,0,1 ;设定的一组数据,其中4个0,7个正数,6个负数,符合题目要求NDW($-NUM)/2 ;该组数据的个数TYPE0 DB 0DH, 0AH, Number of zeros : $ TYPE1DB0DH, 0AH, Number of greater than 0 : $ TYPE2DB0DH, 0AH, Number of less than 0 : $ LOCATEDWTYPE0, TYPE1, TYPE2DATA ENDSSTACK SEGMENT STACKDW128 DUP(?)STACK ENDSCODE SEGMEN

3、TASSUMEDS:DATA,SS:STACK,CS:CODESTART: MOVA*,DATA MOVDS,A* MOVA*,STACK MOVSS,A* ;初始化DS、SS指向STA MOVB*,OFFSET NUM ;将NUM中第一个数字的地址送入B* MOVC*,N ;将N中数字个数送入C*LOOP1:MOVA*,B*;取出NUM中的第一个数字CMPA*,0 ;与零相比JZIFZ;判断结果为是0,跳转到IFZ处继续执行SALA*,1 JCIFL ;判断结果是小于0,跳转到IFLINCWORD PTR A;否则,A自加,然后继续执行程序JMPCONTINUEIFL:INCWORD PTR

4、 B ;B计数加1JMPCONTINUEIFZ:INCZ ;Z计数加1CONTINUE:ADDB*,2 ;指针+2,继续送入下一数字LOOPLOOP1;循环C*次判断MOVC*,3 ;共显示3个字符串*ORB*,B*DISP:MOVD*,LOCATEB* MOVAH,09H ;DOS 09号功能调用,显示字符串INT21HMOVD*,ZB* ADDD*,0 ;转换为ASCII码MOVAH,02H ;DOS 02号功能调用,显示字符INT21H ADDB*,2 ;指针+2DWLOOPDISPMOVA*,4C00HINT21H ;返回DOS系统CODE ENDS END START五运行结果六预习

5、题1.十进制数 0 - 9 所对应的 ASCII 码是什么? 如何将十进制数 0 - 9 在屏幕上显示出来?答:09的ASCII码值依次为:30H,31H,32H,33H,34H,35H,36H,37H,38H,39H。用待显示数加30H即可得到对应ASCII码,将待显示数的ASCII码值赋给D*,使用“INT 21H02号DOS功能调用显示字符。2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:方法1:用test指令检查该数最高位。假设为0,则为正数。否则,检测其余位判断为负数或0。方法2:用cmp指令将该数与0相比,判断标志存放器。SFOF=0,为正数或0。否则为负数。实

6、验三代码转换程序设计一实验目的 1.掌握几种最根本的代码转换方法。 2.运用子程序进展程序设计。二实验容1.从键盘上输入假设干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来。2.两个十进制数之间的分隔符,输入完毕标志自定,但要在报告中说明。3.对输入要有检错措施,以防止非法字符输入,并有适当的提示。4.将整个程序分解为假设干模块,分别用子程序实现.在报告中要给出模块层次图。三模块层次图及流程图START排序,显示输入数据显示排序十进制转换存储并显示检错开场输入数据错检错N对Y回车B,B*,AL初始化AL中ASCII码值转换为对应十进制数此数赋值给B小于B*指向的数与B比拟大于B*=B*+

7、1N比拟完毕Y输出最小数完毕四源代码DATA SEGMENT A DB 100 DUP (0) B DB 100,0,$ STRING DB 0DH,0AH,ERROR INPUT ,0DH,0AH, $ STRING1 DB 0DH,0AH,the min number is ,0DH,0AH, $ DATA ENDS STACK SEGMENT STACK DW 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK INPUT PROC ;子程序 PUSH A* ;保护存放器容 PUSH B* ;保护存放器容 P

8、USH C* ;保护存放器容 PUSH D* ;保护存放器容 STAR: MOV C*,0 ;开场,表示输入的数是否可以构成两位十进制数 MOV B*,OFFSET A AGAIN: MOV AH,01H ;输入 INT 21H CMP AL,30H ;比拟是否合法 SHOW CMP AL,39H JA SHOW MOV B*,AL ;存储,判断是否一个字,不是继续输入,否则向下运行 INC B* INC C* AND C*,1 JNZ AGAIN ;C*假设为0,输入了两个数,可以构成一个两位十进制数 MOV C*,0 ; 判断下一输入字符 MOV AH,01H ; 输入 INT 21H M

9、OV B*,AL INC B* CMP AL,20H ;判断是否空格:是,继续输入;否,判断是否为回车 JZ AGAIN CMP AL,0DH ; 判断是否为回车 JNZ SHOW ; 都不是,就输入错误,重新输入 JMP OKEY ; 是回车,就输入完毕。否则完毕子程序调用 SHOW: MOV AH,09H ; 不合法显示错误重新输入 MOV D*,OFFSET STRING INT 21H JMP STAR OKEY: MOV B*,AL ;输入完毕 POP D* POP C* POP B* POP A* RET INPUT ENDP CHANGE PROC PUSH A* PUSH B*

10、 PUSH D* MOV B*,OFFSET A ONCE: MOV AL,B* ; 读数 SUB AL,30H ; 转化为16进制数 INC B* MOV DL,10 ; 转化为16进制数 MUL DL MOV DH,B* SUB DH,30H INC B* ADD AL,DH ; 结果 CMP AL,B ; 比拟哪个最小 YES CMP BYTE PTR B*,0DH ;判断是否是回车 JZ LAST JMP ONCE YES: MOV B,AL ; 最小数存于B CMP BYTE PTR B*,0DH JZ LAST INC B* JMP ONCE LAST: NOP MOV AL,B ;将数的个位和十位分别存储 AH存个位 AL存十位 MOV AH,0 MOV DL,10 DIV

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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