计算机组成技术 大作业 第4题(选作)程序说明

上传人:简****9 文档编号:98447776 上传时间:2019-09-11 格式:DOC 页数:13 大小:486KB
返回 下载 相关 举报
计算机组成技术 大作业 第4题(选作)程序说明_第1页
第1页 / 共13页
计算机组成技术 大作业 第4题(选作)程序说明_第2页
第2页 / 共13页
计算机组成技术 大作业 第4题(选作)程序说明_第3页
第3页 / 共13页
计算机组成技术 大作业 第4题(选作)程序说明_第4页
第4页 / 共13页
计算机组成技术 大作业 第4题(选作)程序说明_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《计算机组成技术 大作业 第4题(选作)程序说明》由会员分享,可在线阅读,更多相关《计算机组成技术 大作业 第4题(选作)程序说明(13页珍藏版)》请在金锄头文库上搜索。

1、第4题程序说明题目键盘输入十名以上学生成绩并加以排序,结果按降幂输出。程序简单说明程序核心是,排序找出一组数中的min、max,然后再在更小的数组中的min、max,重复进行,其中一个数比暂存器min小就不会比max大。输入解析注意一些细节。所有交换,连同姓名索引一起交换。代码流程图中同一行中的代码,是可以并行的、不分先后顺序的。程序执行结果程序流程图主程序:Datasource存学生分数,Datasource(1)为第一个有效位置,NameIndex存学生名字索引,NameIndex (1)为第一个有效位置,Datasource(0) 、NameIndex (0)存学生人数,studentn

2、ame存学生名字开始提示输入dx缓冲区(buf)首地址输入数据于缓冲区(buf)中是判断buf+2是否是0dh否call AnalysisInput(输入处理)call ProperOrder(排序)输出提示call dbxout(输出)结束AnalysisInput子程序(解析输入)流程图。返回时bx存着studentname结尾后一个相对位置。开始di=Datasource+1;si buf+2地址Datasourcedi;NameIndexdi;NameIndex(di)bx是判断si是否为回车否是判断si是否为空格studentnamebx=$;bx+;si+;ax=0;cx=10否s

3、tudentnamebx=si;bx+;si+提示错误;studentnamebx$bx+;ax=0是判断si是否为回车ax=axcx否判断si是否为.是否ax=axcx;si+ax=axcx;ax=ax+si-30h;si+是判断si是否为回车否ax=ax+si-30h;Datasource(di)ax返回ProperOrder子程序(排序)流程图。返回时为排好序的Datasource数组,同时对NameIndex进行调整。Datasource(0)中的存放着学生人数开始bx=2;di= Datasource(0);shl di,1;di小于等于比较di与bxdi大bp=bx;cx=disi

4、=bx;ax=Datasourcebx;bp=NameIndexbx;dx=Datasourcedi;cx=NameIndexdi;错误提示dx小比较dx与axdx大于等于axdx;bpcxsi=si+2ax小于等于比较Datasourcesi与axaxDatasourcesi;bpNameIndexsiax大比较Datasourcesi与dxdx小于等于dx大dxDatasourcesi;cxNameIndexsisi小比较si与disi大于等于Datasourcebx=dx;NameIndexbx=cx;Datasourcedi=ax;NameIndexdi=bp;bx=bx+2;di=d

5、i-2;di小比较di与bxdi大于等于结束dbxout子程序(输出)流程图。Datasource(0)中放着学生人数。此子程序通用性上没有多少价值。开始cx= Datasource;si=2bx=NameIndexsi;dxstudentname地址;dx=dx+bx;输出dx地址中字符串;输出: ;ax=Datasourcesi;dx=0;bx=10;ax除bx;bxTemporaryAscii地址call SBinaryAscii是判断dl是否为0否dl=dl+30h;bx=.;bx+;bx,dl;bx+bx=$;dxTemporaryAscii地址;输出dx所存地址指向字符串;换行;s

6、i=si+2cx-否判断zf是否为0是返回SBinaryAscii 子程序(16位无符号二进制数转化为ascii码)流程图。与第三题同名函数相同;ax为目标操作数,bx为结果存放位置,结束时bx为结果存放位置的下一个有效位置。第一个循环:除10取余,第二个循环:去掉数字中可能有的0。cx-否开始di=4;dx=10h小比较ax与10大于等于dx=0;除si(10);dl=dl+30hbx+di=dl;di-al=al+30h;bx+di=al;cx=5;cx=cx-di;si=0al=bx+di;bx+si =alsi+di+判断zf是否为0是bx=bx+si退出代码data segment

7、buf db 24 db ? db 24 dup(?) Datasource dw 0,100 dup(?) ;最大学生人数 NameIndex dw 0,100 dup(?) ;第一个索引为NameIndex(1) studentname db 500 dup(0) TemporaryAscii db 10 dup(?) InputPrompts db Please enter the names and achievements of students.,like:,0dh,0ah,name 94.5,$ OutputPrompts db The following is sorted o

8、ut:,$ dbxerror1 db The number of students elements is 0 or 1 !,$ dbxerror2 db Sorry!the number no space,I think no achievements ! This data will be 0.,$data endsstack segment db 100 dup(?)stack endscode segment assume ds:data,cs:code,ss:stack begin: dbxprint macro ;输出字符串宏 mov ah,09h int 21h endm dbx

9、print dbxprint1 macro ;输出字符宏 mov ah,02h int 21h endm dbxprint1 mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,100 mov dx,offset InputPrompts dbxprint call crlf xor bx,bx mov ah,0ah ;输入字符串 Inputlop: call crlf mov dx,offset buf int 21h cmp buf+2,0dh jz outInputlop call AnalysisInput jmp Inputlop

10、outInputlop: call ProperOrder call crlf mov dx,offset OutputPrompts dbxprint call crlf call dbxout error: mov ah, 04ch int 21h ProperOrder proc near ;排序 mov bx,2 ;bx从前往后的指针 mov di,Datasource shl di,1 ;di从后往前的指针 ;排序,si循环指针,bp、cx对NameIndex处理的! cmp di,bx jg next1 mov dx,offset dbxerror1 dbxprint jmp er

11、ror next1: mov bp,bx mov cx,di ExternalLop: mov bx,bp mov di,cx mov si,bx mov ax,Datasourcebx mov bp,NameIndexbx mov dx,Datasourcedi mov cx,NameIndexdi cmp dx,ax ja InternalLop xchg ax,dx xchg bp,cx InternalLop: add si,2 cmp Datasourcesi,ax ja small xchg ax,Datasourcesi xchg bp,NameIndexsi jmp large small: cmp Datasourcesi,dx jb large xchg dx,Datasourcesi xchg cx,NameIndexsi large: cmp si, di jb InternalLop mov Datasourcebx,dx mov NameIndexbx,cx mov Datasourcedi,ax mov NameIndexdi

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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