




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术实验报告 班级:电信学院自动化74 姓名: 学号: 日期:2009.12.13第一题:试编制一个程序,用乘法指令实现32位二进制数与16位二进制数的相乘。算法分析:由于8086的寄存器只能存放16位数字,所以需要将32位的数字分成2个16位的数字,然后分别相乘,最后将对应位放入相应的寄存器。实验流程图为开始M32位二进制数N16位二进制数M 低16位与N相乘,结果放入寄存器AXM高16位与N相乘,结果放入变量BXAX 高16位与BX低16位相加,结果放入变量DX结果进行整合,整合结果放入result中结束实验源程序为:DATAS SEGMENT M1 DW 0FFFFH M2 DW 0FFFFH N DW 2H SUM DW 3 DUP(0)DATAS ENDSSTACKS SEGMENT DW 256 DUP(?)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AX,M1 MOV BX,NMUL BX ;与32位数的低16位相乘 MOV SUM2,DX MOV SUM4,AX MOV AX,M2 MUL BX ;与32位数的高16位相乘 CLC ADD SUM2,AX ADC SUM,DX MOV AH,4CH INT 21HCODES ENDS END START程序调试过程;调试环境为emu8086根据程序的运行进行单步分析,可以得出每条指令语句在寄存器和内存中的执行情况。16位数与32位数的低16位相乘图示为16位数与32位数的高16位相乘图示为最后对数据进行分配 ,按位组合为此时即实现了2个数的相乘,结果存放在相应的寄存器中。该程序主要是对寄存器的实验进行合理的分配,熟悉乘法运算指令及其结果。第二题:试编制程序,计算出从2开始的前10个质数.算法原理:已知2为第一个质数,然后被除数从2依次递增,除数从2递增,将被除数依次除以比它自己小的数字,然后将余数与0比较,若等于0,则其不是质数,若被除数递增至本身,则该数位质数。算法流程图为开始DH2,N0Dldh,bl2,cl0Axdl,blclblDh+BldlDiv bl输出dl,nN10Ah0Cl+结束NYYNYN源程序代码为:DATA SEGMENT VAR DW 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 RESULT DW 10 DUP(?) M DW 2DATA ENDSSTACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP CALL QIUSHU MOV AH,4CH INT 21HQIUSHU PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV BX,4 MOV RESULT,2 MOV SI,0AGAIN1:MOV DX,M MOV AX,VAR+BX AGAIN2:MOV AX,VAR+BX CMP DX,VAR+BX-2 JG NEXT2 DIV DL CMP AH,0 JNE NEXT1 INC BX INC BX JMP AGAIN1 NEXT1:INC DX JMP AGAIN2 NEXT2: INC SI INC SI CMP SI,18 JG DONE MOV DI,VAR+BX MOV RESULT+SI,DI INC BX INC BX JMP AGAIN1 POP DX POP CX POP DI POP AX DONE: RETQIUSHU ENDP CODE ENDS END START程序运行结果为:在程序单步调试过程中可以读取当前寄存器和内存的占用情况和所存的数据,最后得出前十个质数分别为第三题:编写一个通用多字节数相加的宏定义,并调用它实现多字节数的加法,注意观察汇编时宏调用被展开的情况算法分析:首先定义一个宏 ,实现某项功能,然后在主程序中调用该宏,即可在单步调试过程中观察到该宏的调用及展开过程。程序源代码为:DADD MACRO C,M1,M2 MOV SI,OFFSET M1 MOV DI,OFFSET M2 CLC AGAIN:MOV AL,SI ADC DI,AL INC SI INC DI DEC C JNZ AGAINENDMDATA SEGMENT VAR1 DB 1,2,3,4 VAR2 DB 1,2,3,4DATA ENDSSTACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV CX,4 DADD CX,VAR1,VAR2 MOV AH,4CH INT 21HCODE ENDSEND START程序运行结果为:此时实现宏的调用:第四题:编写程序:屏幕显示“Password:”,随后从键盘读入字符串,并比较这个字符串与程序内部设定的字符串。若二者相同则显示“Hello!”,否则显示“Sorry!”,注意:要求键盘输入字符不能直接回显在显示器上,而要用*号代替算法分析:首先编写一段程序,用来读取和记录从键盘输入的字符串,现实在屏幕上用*代替,然后再输入一串字符,与记录的字符串进行逐个比较,输出结果。程序流程图为:开始将“password”字符串显示Cl4读一个字符放入bx中左移四位Cl0与字符dx“cfcf”比较等否输出“hello”输出“sorry”YNNY程序源代码为:DATA SEGMENT PASSW DB PASSWORD:,0DH,0AH,$ DAT1 DB 1234 DAT2 DB 10 DUP(0) STR1 DB HELLO!,0DH,0AH,$ STR2 DB SORRY!,0DH,0AH,$ DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX XOR AX,AX MOV DI,OFFSET DAT2 MOV SI,OFFSET DAT1 LEA DX,PASSW MOV SI,0 MOV AH,09H INT 21HINPUT:MOV AH,07H INT 21H CMP AL,0DH JZ CHECK PUSH AX MOV DL,* MOV AH,02H INT 21H POP AX MOV DAT2+SI,AL INC SI JMP INPUTCHECK:CMP SI,4 JNE SORRYAGAIN:DEC SI MOV BL,DAT1+SI MOV AL,DAT2+SI CMP BL,AL JE AGAIN INC SI CMP SI,0 JNE SORRY HELLO:LEA DX,STR1 MOV AH,09H INT 21H JMP DONE SORRY: LEA DX,STR2 MOV AH,09H INT 21HDONE: MOV AH,4CH INT 21HCODE ENDSEND START程序运行结果为:第五题:编写一个汇编语言程序,实现N!(N大于等于0)N!=N*(N-1)*(N-2).*1算法分析:该题适合用递归子程序的方法来实现,调用若干次递归函数,直到N=1,即可得出结果。程序流图为:主程序RESULT_ADDR进栈N进栈调用FACT求N!FACT子程序求N!保存BP寄存器建立帧首址保存寄存器取RESULT_ADDR取NN0RESULT_ADDR进栈N1进栈调用fact求(N1)!NN*(N1)!N!存入RESULT中恢复寄存器返回0!1NY源程序文件为:DATA SEGMENTVAL_N DW ?RESULT DW ?DATA ENDSSTACK SEGMENTTOP LABEL WORD DW 128 DUP(0)STACK ENDSCODE1 SEGMENTMAIN PROC FAR ASSUME CS:CODE1,DS:DATA,SS:STACKSTART: MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,OFFSET RESULT PUSH BX MOV BX,VAL_N PUSH BX CALL FAR PTR FACT RETMAIN ENDPCODE1 ENDSCODE SEGMENTFRAME STRUCT SAVE_BP DW ? SAVE_CS_IP DW 2 DUP(?) N DW 3 RESULT_ADDR DW ?FRAME ENDS FACT PROC FAR PUSH BP MOV BP,SP PUSH BX PUSH AX MOV BX,BP.RESULT_ADDR MOV AX,BP.N CMP AX,0 JE DONE PUSH BX DEC AX PUSH AX CALL FAR PTR FACT MOV BX,BP.RESULT_ADDR MOV AX,BX MUL BP.N JMP SHORT RETURNDONE: MOV AX,1RETURN: MOV BX,AX POP AX POP BX POP BP RET 4FACT ENDPCODE ENDS END START程序运行结果为:然后可以计算N的阶乘。实验总结:汇编语言作为一种以处理器指令系统为基础的低级程序设计语言,可以直接有效的控制计算机硬件。汇编语言主要是在处理器的寄存器内实现逻辑与算术运算,指令较为复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衣柜拆装服务合同范本
- 单位音响租赁合同范本
- 承包羊舍建设合同范本
- 个人单间租房合同范本
- 电厂钢管架合同范本
- 石栏杆订货合同范本
- 买车合买合同范本
- 全屋改造合同范本
- 砌墙工程劳务合同范本
- 室内改造工程合同范本
- 应聘副研究员汇报
- 2025年中考历史(河南卷)真题评析
- 2025年登高证考试试题(附答案)
- 手术室时间管理课件
- 2025版线上直播场推广服务合同模板
- GB/T 45845.1-2025智慧城市基础设施整合运营框架第1部分:全生命周期业务协同管理指南
- 2025至2030ABF(Ajinomoto积膜)基质行业市场占有率及投资前景评估规划报告
- 呼吸科考试试题及答案
- 肿瘤内科胆囊癌护理查房
- 《肺结节规范化诊治专家共识(2024)》解读 课件
- 质量管理五大工具培训教材
评论
0/150
提交评论