版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安交通大电子信息与工学院自化科学与技术系实验名称:微原理与接口技术实验者姓:实验者学:所在班级
XX自动化报告完成期:
2014年1月12日
实验一数据传送算术运算、环程序结构1、实验目的a)熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇编、连接、执行的过程,并利用urboDebugger调试汇编程序。b)熟悉8086指令系统的数据传送指令,掌握寻址方式。c)熟悉8086指令系统的算术运算指令握循环结构汇编语言程序的编制。2、实验内容教材P121,第14、15题。教材P195,第6题。教材P196,第12题。3、具体实验第一题P121,第4题)设有两个8个字节长的BCD码数据BCD1及BCD2。BCD1数以1000H为首地址在内存中顺序存放;BCD2数以2000H为首地址在内存中顺序存放。要求相加后结果顺序存放在以2000H为首地址的内存区设结果BCD数仍不超过8个字节长)。a)实验原理考虑两个8个字节长的BCD码相加先根据地址要求将数据放在对应的地址单元中然后做加法BCD码相加要用到调整指令,结果才为正确的BCD数b)程序框图
c)程序源代码DATASORG1000HDB起始地址为ORG2000HDB11H,12H,13H,14H,15H,16H,17H,18H;起地址为2000HDATASENDSSEGMENTCS:CODES,DS:DATASSTART:DS,AXBX,0CX,8;设置循环次数次CLC;清进位F标志AGAIN:AL,[BX+1000H]ADC[BX+2000H],AL;结果放在2开始的单元内DAAINCBXLOOPAGAIN;没完成则转循环AH,4CHENDSTART运行:BCD1DB11H,12H,13H,14H,15H,16H,17H,18HBCD2DB21H,22H,23H,24H,25H,26H,27H,28H结果如下:DS:2000H为首地址的连续八个字节单元中
第二题P121,15题)设从2000H为首地址的内存中放着个带符号的字节数据编“找出其中最大的数,并存入2000H单元中“的程序。a)实验原理首先把十个带符号数放在要求的的存储单元中然后再进行比较有符号数的比较用JL,JC,JNG,等指令,首先设计一个最小带符号数80H作为比较初值,用2000H单元中的数分别与其它进行比较,若大于则把该单元的数存入2000H单元,否则不予处理。对于该题我采用的是字符串指令由于是隐含寻址把的数作为字符串源操作数其它进行一次循环则依次放入中注意的是当CX为10时,DL=80H。b)程序框图
c)程序源代码DATASEGMENTORG2000H数据存放在开始的单元BCDDBDATAENDSCODESEGMENTCS:CODE,DS:DATASTART:MOVAX,DATASI,2000H地址指针指向单元首地址;设置最小符号数L1:LODSBCMPAL,DL较带符号数L2;DL)大则跳转LDL,AL;DL指向内容小则交换L2:LOOPDS:[2000H],DL;大数存放在2单元21HCODEENDSEND运行:BCDDB结果为69H
第三题P195,题)试编制一程序,用乘法指令实现位二进制数与16位二进制数相乘。a)实验原理首先把被乘数第八位和高八位分别与乘数相乘,高八位乘得结果左移与第八位乘得结果相加即为结果。b)程序框图
c)程序源代码DATASEGMENTDATAXDW1000H,1000HDATAYDWDATAENDSCODESEGMENTCS:CODE,DS:DATASTART:MOVAX,DATABX,1000HDATAXDI,DATAY
;将把结果存到000H开始的单元中MULDI[BX],AX元MULDI[BX+2],AXAH,4CHCODEENDSEND运行:结果在DS:1000中
;把低1位相乘,结果存到AX,DX中;把结果中低位存到BX对应的存储单元;把结果中高位存BX+2对应的存储单;计算被乘数高6位相乘的结果;把两次相乘结果对应(把第二次的结果;左位)相加,最后结果存在了[BX]到
第四题P196,12)设有两个等字长字节型字符串试编写一汇编程序比较它们是否完全相等,若相等则将字符Y送入AL中,否则将字符送入字符中。a)程序框图
b)程序源代码DATASEGMENTDB'CZX0','$'DB,DATAENDSCODESEGMENTCS:CODE,DS:DATASTART:MOVAX,DATACLDLEA;字符串1首地址LEASI,STRX;取字符串2首地址CALLL1DL,AL;显示结果AH,02H21HL1PROCCMPSBSTRX,STRY;比较两个字符串JNZ'Y'
;不相等则跳转到A;相等则将Y送L
JMPRA:'N'L1ENDPCODEENDSEND运行:当字符串为STRX
DBDB
;不相等则将Y送AL;比较结束返回程序'CZX0''$''CZX1','$'当字符串为STRX
DBDB
'CZX0''CZX0'4、实验中遇到的问题:在刚开始接触实验时感觉非常困难无从下手后来经过仔细认真阅读书上的经典程序之后基本能够写出关键程序片段再借助辅导书完善了实验程序内容,基本顺利地完成了实验。本次实验让我熟悉了汇编语言的实现步骤和常用的指令系统时也学会了利用DEBUG调试汇编程序。
实验二汇编语言序设计1、实验目的a)练习编写较复杂汇编语言程序时程序框图的绘制。b)子程序定义与调用,参数传递的方法。c)了解宏指令的定义与调用,并与子程序定义与调用进行比较。d)掌握利用软件中断实现DOS系统调用的方法。2、具体实验第一题教材4章,第8题,设n=10。即试编制程序,找出前十个质数。提示编写一个判断某数是否质数的子程序主程序调用该子程序对顺序递增的自然数进行是否质数的判断,若是则存放在质数缓冲区中,直到找到10个质数,程序结束。判断一个数N是否是质数的一种算法是:将N序与2~N-1数相除,若每次除法的余数均不等于0,则该数是质数。注意:8086的除法支持双字除以字,字除以字节,本题中可以选择字除以字节。正确结果为:02,03,05,07,0B,0D,11,13,17,1D(十六进制数)a)实验原理找出前十个质数,质数只能被1其自身整除,但考虑到如果从2始一个一个的除的算法效率太低很多已经是合数的作为除数是浪费的故该算法用每一个数除以已经判断出来的质数(均小于该数如果不能整除则说明该数是质数,能整除说明该数不是质数,继续进行下一个判断。
b)程序框图c)程序源代码N10POSAH,9HENDMNUMTOSTRMACRONUM,POSAX,NUMSI,OFFSETSI,LENGTH;从最后开不考虑字符串结束符"$")存放字符
CALLWORDTOSTRENDMDATASNUMBERDWNDUPLASTDWNUMNOWDWfirstprimearefollows:",0DH,0AH,"$""PRESSANY,6DUP(""),STRPRIMEDUP"""$"HCHH"$"DATASENDSSTACKSSEGMENTSTACKSSEGMENTCS:CODES,DS:DATAS,SS:STACKS,ES:DATASSTART:DS,AXES,AXAX,STACKSSS,AXSI,OFFSETNUMBER数数组首地址BX,0NUMBER[SI+BX],2;第一个质数为LAST,0;最后一个质数地址;第一个质数是;质数计数INCDX;往后查找;CX,0;判定DX中数据是否是质数DX;保存现场防止除法运算带来的改变AX,DXDX,0SI,CX;求出作为除数的质数的相对位移
BX,NUMBER[SI];从质数集里读取质数ADCSI,CX还原IINCCXINCCX;cx自加2DIVBX数CMPDXJZ;除尽则表示该数不是质数,继续查找下一个CMPLOOP2;如果除小于被除数,则增大除数继续做除法相当于指针往后移动一个字的单位长度;将找到的质数存入数组,基址变址寻址;质数计数加CMPNUMNOW,N;得到个质数则结束JNZLOOP1;否则继续查找;输出结果STR1DISPLAY:NUMTOSTRNUMNOW,STRNOAX,DS:[DI]NUMTOSTRAX,STRPRIMESTRPRIME输出质数HCHHINCDIINCDICMPNUMNOW,NJBE;等待键盘输入,使程序不会立即退出STR3AH,08HAH,4CH;子程序;WORDTOSTR;将AX中数字转换成个字符的字符串,存入I为首地址的存储单元里
WORDTOSTRPROCFARSICX,5;设置循环次数NEXTDIGIT:DX,0BX,10CMPAX,0JZBLANKDIVBXDX,30H将得到的每位数字转换为对应的ASCII码[SI],DLDECDX,0LOOPNEXTDIGITSICMPBYTEPTRJZZERORETMOVBYTEPTR[SI],30HRETBLANK:JMPSETCHARWORDTOSTRENDSTART运行结果:
第二题编写一个汇编程序,实现N):N!=N*(N-1)*(N-2)*……*1(设N=跟踪IP变化,观察堆栈的变化,理解子程序递归调用中程序执行的流程,以及帧信息的组成意BP变化)a)程序框图b)程序源代码DATASEGMENT
DW?SAVE_BPDWDW2DUP?)NDWSAVE_NDWRESULT_ADDRDWNFACTDB6DUP(?)DATASTACKTOP
ENDSSEGMENTWORDDW128(0)
STACKSTART:
ENDSSEGMENTSP,TOPAX,DATABX,OFFSETRESULT
BXDONE:RETURN:
CALLFARAH,4CHFARBPBP,SPAXRESULT_ADDR+SAVE_NCMPAX,0JEDECAXAXCALLFARRESULT_ADDRAX,[BX]MUL[BP]+JMPRETURNAX,1[BX],AXAXBXBPRETENDP
查看指令
ENDSENDSTART观察IP的变化:第一次变化0017--0020第二、三、四次跳变相同0037--0020
共调用了四次FACT函数IP跳转可用如下图表示:FACT主程序观察堆栈情况:与书中P165页情况相符合3阶阶乘堆栈示意图
第三题编写一个通用多字节数相加的宏定义并调用它实现多字节数的加法注意观察汇编时宏调用被展开的情况。a)实验原理多字节数的加法就是一个迭代过程。运用调用多字节相加的宏定义,可以很简单的实现加法宏定义中运用间接寻址用进位标志记录每字节的进位并在下一字节的加法中加上进位标志,以达到多字节数加法的运算效果。b)程序框图c)程序源代码N;定义多字节的字节数M1,M2,MSI,OFFSETM1;读取数字的首地址CX,MCLCL1:AL,[DI]
ADC[SI],AL;当前位的两个数相加,存在M1的地址中INCINCDI;两个数的地址均自加,取下一个数进行运算LOOPL1ENDMDATASMB1DB(01H)MB2DB(01H)DATASENDSSEGMENTCS:CODES,DS:DATASSTART:DS,AXMB1,MB2,N用宏定义计算多直接数AH,4CHENDSTART运行结果:
宏展开
第四题编写程序:屏幕显示Password从键盘读入字符串,并比较这个字符串与程序内部设定的字符串二者相同则显Hello注意:要求键盘输入字符不能直接回显在显示器上,而要用号代替。a)实验原理该程序运用了中断程序完成了密码程序的输入与输出先把首次输入的密码和第二次确认的密码分别存在PASSWORD1PASSWORD2中,并用A与B记录PASSWORD1与PASSWORD2的长度,之后用判断两次输入是否相同,并用A与B中比较小的与C比较判断是否结束循环,按照对照结果选择输出。b)程序框图
开始显示”Pleaseinputpassword:”不带回显输入字符,保存为password1
显示*N回车?Y显示”Pleaseconfirmthepassword:不带回显输入字符,保存为password2
显示*N回车?Y比较两次输入长度并取较小长度N小于较小长度YY比较?N显示”Sorry!显示”Hello!
c)程序源代码CRLFMACROAH,02HDL,0DHAH,02HDL,0AHENDMDATASEGMENTPASSWORD1'chang'密码设置PASSWORD220DUP(?)ADB0;标记长度B0;记password2的长度DDB0;标记比较的次数DB'Pleaseinputthe,0DH,0AH,"$";单引号双引号分析多20个字DB'Pleasethe,0DH,0AH,;DB'HELLO!THEPASSWORDIS,0DH,0AH,;DBPASSWORDISWRONG'0DH,0AH,'$';DATACODESEGMENTSTART:DS,AXAH,09HLEADX,STRING121H;读取tring1的地址,用中断显示出来LEAINPUT1:AH,08H21H;读取password1的地址,用中断读取用户输入的密码并存入CMPJZNEXT1[SI],ALINCINCADL,'*'AH,02H21H;用户每输入一个数字活字符,屏幕显示*LOOPINPUT1NEXT1:
AL,[SI],ALCRLFAH,09HLEADX,STRING2;取s地址,用中断显示出来LEAINPUT2:AH,08H21H;读取password2的地址,用中断读取用户输入的密码并存入CMPJZNEXT2[SI],ALINCINCBDL,'*'AH,02H21H;用户每输入一个数字活字符,屏幕显示*LOOPINPUT2NEXT2:LEALEAAL,ACMPAL,BJBE;比较A与的大小JMPPANDUAN:;取AB中较小的存到B中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河口区卫生类事业单位公开招聘工作人员(24人)笔试备考题库及答案详解
- 2026天津宁河投资控股集团有限公司招聘1人笔试备考题库及答案详解
- 2026云南临沧沧源佤族自治县人民检察院招聘聘用制书记员3人笔试参考题库及答案详解
- 2026广东江门市妇幼保健院诚聘8人笔试备考试题及答案详解
- 2026广东茂名市电白区乡村公益性岗位招聘45人(第二批)笔试备考题库及答案详解
- 2026年山西省特岗教师招聘(140人)笔试备考题库及答案详解
- 2026年衢州柯城区专职社区工作者招聘15人(二)笔试模拟试题及答案详解
- 2026贵州贵阳市新华电脑中等职业学校招聘13人笔试备考题库及答案详解
- 2026上海市虹口区街道社区工作者、部门编制外聘用人员公开招聘69人笔试备考题库及答案详解
- 2026国家统计局来宾调查队招聘公益性岗位人员笔试模拟试题及答案详解
- 军用关键软硬件自主可控产品名录(2025年v1版)
- AQ 4115-2025 烟花爆竹防止静电危害技术规范
- 肉鸡品种课件
- 无人机飞行参数设置规定
- 高血压危象的救治与护理
- 活塞式压气机课件
- (16)普通高中体育与健康课程标准日常修订版(2017年版2025年修订)
- 警棍盾牌基本动作课件
- 2025-2026秋季学年第一学期安全主题班会教育记录(共22周)
- 校外培训机构安全管理领导小组职责
- 3工程管理专业-大学生职业生涯规划书
评论
0/150
提交评论