




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、研究性学习报告 汇编语言及其程序设计目录题目一3题目分析:3程序设计:3程序调试:4题目二6题目分析:6程序设计:7程序调试:8题目三10题目分析:10程序设计:11程序调试:12题目四13题目分析:13程序设计14程序调试:15题目一18.编写程序,将MBUF为起始单元的5个数按相反次序传送到NBUF开始的存储单元中。题目分析:SI-2,DI+2AXDISIAX 初始化NBUF起始地址送DIMBUF末尾地址送SI段基址送DS开始在数据段中定义两个数组,第一个为MBUF,用于存放题目要求的5个数,另一个为NBUF,用于反序存放MBUF中的数。主要利用数据传送指令MOV实现该功能,设计程序流程框
2、图如下(CX)=0? N结束 Y程序设计:DATA SEGMENTMBUF DW 1,2,3,4,5NBUF DW 5DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET MBUFMOV DI,OFFSET NBUFMOV CX,4ADD SI,8LOP: MOV AX,SIMOV DI,AXDEC SIDEC SIINC DIINC DILOOP LOPMOV AH,4CHINT 21HCODE ENDSEND START程序调试:1、 汇编结果2、 链接结果3、 T
3、D调试结果根据运行结果可以看到,数据段中从起始位置开始存放的字分别为1、2、3、4、5,程序运行后,之后的数据段,即NBUF,分别存放的字为5、4、3、2、1,程序运行结果正确。题目二20.编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。题目分析:该题的重点是区分数据块中所存数据的正负,即使其和0比较,大于零则为正数,存入数据段相应位置,并将记录正数个数的变量加一;负数同理,最后利用字符显示功能,将存放正负数个数的变量显示在屏幕上,但需要注意的是,这两个变量中存放的为16进制数,如果直接输出,则显示的是其所对应的A
4、SK码,所以需要转换为相应的数字。程序设计框图如下:开始初始化正数单元首地址送SI负数单元首地址送DI与0比较 小于零 大于零存入DI负数+1DI+1存入SI正数+1SI+1CX=0? N Y输出结束程序设计:DATA SEGMENT ;定义代码段 BUF DB 1,2,-3,-4,-5,6,7,8,-9,10 COUNT EQU $-BUF ;将BUF中数据的个数送入COUNT ZHENG DB ? ;存放正数的个数 FU DB ? ;存放负数的个数 ORG 0010H D1 DB 8 DUP(?) ;正数存放单元 D2 DB 8 DUP(?) ;负数存放单元DATA ENDSSTACK1
5、SEGMENT STACK DW 100 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,COUNT MOV ZHENG,0 MOV FU,0 MOV SI,OFFSET D1 ;正数存放单元的首地址送SI MOV DI,OFFSET D2 ;负数存放单元的首地址送DILOP: MOV AL,BX CMP AL,0 ;比较BX和零 JGE LOP1 ;大于零跳转到LOP1 JLE LOP2 ;小于零跳转到LOP2
6、LOP1:INC ZHENG MOV AL,BX MOV SI,AL INC SI ;指向下一个数据 INC BX DEC CX JNZ LOP JMP OKLOP2:INC FU MOV AL,BX MOV DI,AL INC DI INC BX DEC CX JNZ LOPOK: MOV DL,ZHENG OR DL,30H MOV AH,02H INT 21H MOV DL,FU OR DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21HCODE ENDS END START程序调试:1、 汇编结果2、 链接结果3、 运行结果4、 TD调试结果根据程序
7、运行后的数据段可以看出,00H09H地址中存放的为之前定义的10个有符号数,(0AH)=06,代表有6个正数,(0BH)=04,表明有4个负数;DS:1017存放的是正数,DS:181F存放的是负数,结果符合题目要求。题目三21.编写程序,从内存BLOCK开始,存放着10个字节的有符号数,从这些数中找出绝对值最大的数,将其存入MAX中。题目分析:本题可用类似冒泡算法的方法来实现,但首先需要判断数字的正负,如果为负,则需取绝对值后再与前一个数比较大小,大的存入MAX中,不断重复,直至比较完全部的数为止。程序框图如下:开始MAX=0,数据地址存入BX判断正负? 负取反 正存入AHBX+1判断正负?
8、MAX=AH比较DH,AH大小存入DHBX+1取反MAX=AH DH>AHAH>DH结束程序设计:DATA SEGMENT ;定义代码段 BLOCK DB 1,2,-3,-4,-5,-6,7,8,9,-10 COUNT EQU $-BLOCK MAX DB 0DATA ENDSSTACK1 SEGMENT STACK ;定义堆栈段 DW 100 DUP(?)STACK1 ENDS CODE SEGMENT ;定义数据段 ASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV CX,COUNTMOV BX,OFFSE
9、T BLOCK ;BX指向BLOCK的第一个数据LOOP1:CMP CX,0 ;判断CX是否为正数 JZ OK ;跳转到OKMOV AL,MAX ;将MAX送入ALCMP AL,0 ;判断AL的正负JGE L1 ;若为正数,则跳转到L1MOV AH,0SUB AH,AL ;为负数,则取反存入AHJMP LOOP2 ;准备进行下一个数的比较L1: MOV AH,ALLOOP2:MOV DL,BX ;将BLOCK下一个数送给DLCMP DL,0 ;判断正负JGE L2 ;若为正数则跳转到L2MOV DH,0SUB DH,DL ;若为负数,则取反存入DHJMP COMPARE ;跳转到 COMPAR
10、EL2: MOV DH,DLCOMPARE:CMP AH,DH ;比较AH和DH,较大的数存入MAXJGE FANGMOV MAX,DLJMP NEXTFANG:MOV MAX,ALNEXT:DEC CX ;CX减一INC BX ;BX指向下一个数据JMP LOOP1 ;继续进行比较OK: MOV AH,4CHINT 21HCODE ENDSEND START程序调试:1、 汇编结果2、 链接结果3、 TD调试结果 TD调试结果如上图,可以看到数据段中DS:0009中存放的是题目中定义的10个字节的有符号数,DS:0A中存放的是运行结束后所找出的绝对值最大的数,该程序中,该数为-10(F6H)
11、,符合题目要求。题目四26.编写程序,将内存中N个无符号数据从大到小排序后输出显示。题目分析:该题为典型的冒泡算法,即设置两重循环,逐次比较大小,较小的数据右移,最终实现从大到小排序,程序流程图如下:开始CX=N-1CXSIBX=0BX<BX+1N Y两数交换BX=BX+1CX=CX-1CX0? Y NCX=SICX=CX-1CX0?Y结束 N程序设计DATA SEGMENT BUF DB 12,22,56,89,36,20,48 ;定义数组 COUNT EQU $-BUFDATA ENDSSTACK1 SEGMENT STACK ;定义堆栈段 DW 100 DUP(?)STACK1 E
12、NDSCODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV CX,COUNT DEC CX ;设置循环次数LOP1: MOV SI,CX MOV BX,0LOP2: MOV AL,BUFBX ;将BUF中第一个数送入AL中 CMP AL,BUFBX+1 ;比较第一个数与第二个数的大小 JNB LOP3 ;若第一个数小于第二个数,跳转到LOP3 XCHG AL,BUFBX+1 ;若大于,则交换两个数 MOV BUFBX,ALLOP3: INC BX ;指向BUF下一个数据 DEC CX JNZ LOP2 ;CX不为零则跳转到LOP2 MOV CX,SI DEC CX JNZ LOP1 MOV BX,0 MOV CX,COUNTLOP4: MOV AX,0 MOV AL,BUFBX PUSH BX MOV BL,10 DIV BL;将要显示的数字除10,将十位与各位分别显示MOV BH,AH MOV DL,AL ;显示十位数 OR DL,30H MOV AH,02H INT 21HMOV AH,BH MOV DL,AH ;显示个位数 OR DL,30H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冰雪旅游项目投资可行性研究在2025年的区域旅游产业发展趋势报告
- 医疗AI辅助诊断产品注册审批流程中的法规与标准一致性分析报告
- 左红军课件流水施工
- 巡逻兵进行曲课桌舞课件
- 年产23.1万套智能消毒机器人项目可行性研究报告
- 年产2000吨MIPK(甲基异丙基酮)项目可行性研究报告
- 嵊州知识产权培训课件
- 张力腿平台(TLP)项目可行性研究报告
- 2025版新型婚姻解除协议书及子女抚养权益保障范本
- 2025版新材料研发中心厂房出租合同协议书(创新研发支持)
- 江苏省淮安市2024-2025学年高一下学期期末考试物理试卷(解析版)
- 《基孔肯雅热防控技术指南(2025年版)》解读课件
- 2025年呼伦贝尔市生态环境局所属事业单位引进人才(2人)模拟试卷附答案详解(综合卷)
- 2025年中国建设银行招聘考试(综合知识)历年参考题库含答案详解(5套)
- BMS基础知识培训课件
- 承接战略贴近业务人力资源规划设计到应用
- 2025年广元市专业技术人员公需科目继续教育考试试题及答案
- 消防外管网维修合同范本
- 飞行员心理健康培训课件
- 高一班第一次家长会课件
- 2025至2030国内外海洋工程防腐应用趋势行业产业运行态势及投资规划深度研究报告
评论
0/150
提交评论