微机原理研讨-汇编语言及其程序设计_第1页
微机原理研讨-汇编语言及其程序设计_第2页
微机原理研讨-汇编语言及其程序设计_第3页
微机原理研讨-汇编语言及其程序设计_第4页
微机原理研讨-汇编语言及其程序设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

研究性学习报告——汇编语言及其程序设计目录题目一 3题目分析: 3程序设计: 3程序调试: 4题目二 6题目分析: 6程序设计: 7程序调试: 8题目三 10题目分析: 10程序设计: 11程序调试: 12题目四 13题目分析: 13程序设计 14程序调试: 15题目一18.编写程序,将MBUF为起始单元的5个数按相反次序传送到NBUF开始的存储单元中。题目分析:SI-2,DI+2AX→[DI][SI]→AX初始化NBUF起始地址送DIMBUF末尾地址送SI段基址送DS开始 在数据段中定义两个数组,第一个为MBUF,用于存放题目要求的5个数,另一个为NBUF,用于反序存放MBUF中的数。主要利用数据传送指令MOV实现该功能,设计程序流程框图如下SI-2,DI+2AX→[DI][SI]→AX初始化NBUF起始地址送DIMBUF末尾地址送SI段基址送DS开始(CX)=0?N(CX)=0?结束Y结束程序设计:DATASEGMENT MBUFDW1,2,3,4,5 NBUFDW5DUP(?)DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVSI,OFFSETMBUF MOVDI,OFFSETNBUF MOVCX,4 ADDSI,8LOP:MOVAX,[SI] MOV[DI],AX DECSI DECSI INCDI INCDI LOOPLOP MOVAH,4CH INT21HCODEENDS ENDSTART程序调试:汇编结果链接结果TD调试结果 根据运行结果可以看到,数据段中从起始位置开始存放的字分别为1、2、3、4、5,程序运行后,之后的数据段,即NBUF,分别存放的字为5、4、3、2、1,程序运行结果正确。题目二20.编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。题目分析: 该题的重点是区分数据块中所存数据的正负,即使其和0比较,大于零则为正数,存入数据段相应位置,并将记录正数个数的变量加一;负数同理,最后利用字符显示功能,将存放正负数个数的变量显示在屏幕上,但需要注意的是,这两个变量中存放的为16进制数,如果直接输出,则显示的是其所对应的ASKⅡ码,所以需要转换为相应的数字。程序设计框图如下:开始开始 初始化初始化正数单元首地址送SI正数单元首地址送SI负数单元首地址送DI负数单元首地址送DI与0比较与0比较小于零大于零存入[DI]负数+1DI+1存入[存入[DI]负数+1DI+1存入[SI]正数+1正数+1SI+1CX=0?NCX=0?Y输出输出结束结束程序设计:DATASEGMENT;定义代码段BUFDB1,2,-3,-4,-5,6,7,8,-9,10COUNTEQU$-BUF;将BUF中数据的个数送入COUNTZHENGDB?;存放正数的个数FUDB?;存放负数的个数ORG0010HD1DB8DUP(?);正数存放单元D2DB8DUP(?);负数存放单元DATAENDSSTACK1SEGMENTSTACKDW100DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFMOVCX,COUNTMOVZHENG,0MOVFU,0MOVSI,OFFSETD1;正数存放单元的首地址送SIMOVDI,OFFSETD2;负数存放单元的首地址送DILOP:MOVAL,[BX]CMPAL,0;比较[BX]和零JGELOP1;大于零跳转到LOP1JLELOP2;小于零跳转到LOP2LOP1:INCZHENGMOVAL,[BX]MOV[SI],ALINCSI;指向下一个数据INCBXDECCXJNZLOPJMPOKLOP2:INCFUMOVAL,[BX]MOV[DI],ALINCDIINCBXDECCXJNZLOPOK:MOVDL,ZHENGORDL,30HMOVAH,02HINT21HMOVDL,FUORDL,30HMOVAH,02HINT21HMOVAH,4CHINT21HCODEENDSENDSTART程序调试:汇编结果链接结果运行结果TD调试结果 根据程序运行后的数据段可以看出,00H~09H地址中存放的为之前定义的10个有符号数,(0AH)=06,代表有6个正数,(0BH)=04,表明有4个负数;DS:10~17存放的是正数,DS:18~1F存放的是负数,结果符合题目要求。题目三21.编写程序,从内存BLOCK开始,存放着10个字节的有符号数,从这些数中找出绝对值最大的数,将其存入MAX中。题目分析: 本题可用类似冒泡算法的方法来实现,但首先需要判断数字的正负,如果为负,则需取绝对值后再与前一个数比较大小,大的存入MAX中,不断重复,直至比较完全部的数为止。程序框图如下:开始开始MAX=0MAX=0,数据地址存入BX判断正负?判断正负?负取反取反正存入AHBX+1存入AHBX+1判断正负?判断正负?MAX=AH比较DH,AH大小MAX=AH比较DH,AH大小存入DHBX+1取反MAX=AHDH>AH AH>DH结束结束程序设计:DATASEGMENT;定义代码段 BLOCKDB1,2,-3,-4,-5,-6,7,8,9,-10 COUNTEQU$-BLOCK MAXDB0DATAENDSSTACK1SEGMENTSTACK;定义堆栈段 DW100DUP(?)STACK1ENDSCODESEGMENT;定义数据段 ASSUMECS:CODE,DS:DATA,SS:STACK1START: MOVAX,DATA MOVDS,AX MOVCX,COUNT MOVBX,OFFSETBLOCK;BX指向BLOCK的第一个数据LOOP1: CMPCX,0;判断CX是否为正数 JZOK;跳转到OK MOVAL,MAX;将MAX送入AL CMPAL,0;判断AL的正负 JGEL1;若为正数,则跳转到L1 MOVAH,0 SUBAH,AL;为负数,则取反存入AH JMPLOOP2;准备进行下一个数的比较L1: MOVAH,AL LOOP2: MOVDL,[BX];将BLOCK下一个数送给DL CMPDL,0;判断正负 JGEL2;若为正数则跳转到L2 MOVDH,0 SUBDH,DL;若为负数,则取反存入DH JMPCOMPARE;跳转到COMPAREL2: MOVDH,DL COMPARE:CMPAH,DH;比较AH和DH,较大的数存入MAX JGEFANG MOVMAX,DL JMPNEXTFANG: MOVMAX,AL NEXT: DECCX;CX减一 INCBX;BX指向下一个数据 JMPLOOP1;继续进行比较OK: MOVAH,4CH INT21HCODEENDS ENDSTART程序调试:汇编结果链接结果TD调试结果 TD调试结果如上图,可以看到数据段中DS:00~09中存放的是题目中定义的10个字节的有符号数,DS:0A中存放的是运行结束后所找出的绝对值最大的数,该程序中,该数为-10(F6H),符合题目要求。题目四26.编写程序,将内存中N个无符号数据从大到小排序后输出显示。题目分析: 该题为典型的冒泡算法,即设置两重循环,逐次比较大小,较小的数据右移,最终实现从大到小排序,程序流程图如下:开始开始CX=N-1CX=N-1CXCX→SIBX=0BX=0[BX]<[BX+1][BX]<[BX+1] NY两数交换两数交换BX=BX+1CX=CX-1BX=BX+1CX=CX-1CXCX≠0?YNCX=SICX=SICX=CX-1CXCX≠0? Y结束 N结束程序设计DATASEGMENTBUFDB12,22,56,89,36,20,48;定义数组COUNTEQU$-BUFDATAENDSSTACK1SEGMENTSTACK;定义堆栈段DW100DUP(?)STACK1ENDSCODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVCX,COUNTDECCX;设置循环次数LOP1:MOVSI,CXMOVBX,0LOP2:MOVAL,BUF[BX];将BUF中第一个数送入AL中CMPAL,BUF[BX+1];比较第一个数与第二个数的大小JNBLOP3;若第一个数小于第二个数,跳转到LOP3XCHGAL,BUF[BX+1];若大于,则交换两个数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论