下载此文档

微机原理实验报告1.pdf


文档分类:高等教育 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
该【微机原理实验报告1 】是由【青山代下】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【微机原理实验报告1 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..班级:电气93姓名:***学号:********:..一、实验目的:。、汇编、链接、调试和运行8086、8088汇编语言程序的全过程。二、实验内容:设a、b、c、d四个数分别以胆子解压缩BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d)并将结果放在Y1单元,将结果在屏幕上显示出来。在DEBUG中,不断改变a,b,c,d内容并查看结果。=09,b=06,c=04,d==38,b=41,c=29,d==70,b=23,c=42,d==63,b=73,c=62,d=50三、程序框架:DESGSEGMENT:定义数据段NUMDB13H,27H,11H,12H:定义a,b,c,dY1DB?DSEGENDS:数据段定义结束SSEGSEGMENTPARASTACK:定义堆栈段DB20DUP(?)SSEGENDS:堆栈段定义结束CSEGSEGMENT:定义代码段ASSUMECS:CSEG,DS:DSEG,SS:SSEG:各段定义START:MOVAX,DSEGMOVDS,AX:数据段段地址送DSMOVAX,SSEGMOVSS,AX:堆栈段段地址送SS根据程序流程编制计算(a+b)-(c+d)的指令序列,结果送AL将变成提示中,单字节压缩BCD码显示程序放于此MOVAX,4C00HINT21HCSEGENDSENDSTART:..程序内容:DSEGSEGMENTNUMDB13H,27H,11H,12HY1DB?DSEGENDSSSEGSEGMENTPARASTACKDB20DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVAL,NUM:数据a送ALADDAL,NUM+1:将a+b存储到ALDAA:压缩BCD码加法调整MOVCL,AL:保存AL内容MOVAL,NUM+2:数据c送ALADDAL,NUM+3:将c+d存储到ALDAA:压缩BCD码加法调整SUBCL,AL:将(a+b)-(c+d)存储到CLMOVAL,CL:CL送ALDAS:压缩BCD码减法调整MOVY1,AL:送出结果显示压缩BCD码:MOVBL,AL:保存AL中的内容ANDAL,0F0H:取AL中高四位MOVCL,4SHRAL,CL:BCD码高位移到低位ADDAL,30H:(AL)加30H得ASCII码MOVDL,ALMOVAH,02HINT21H:显示(DL)MOVAL,BL:恢复(AL)ANDAL,0FH:取(AL)低四位ADDAL,30H:(AL)30H得ASCII码MOVDL,ALMOVAH,02HINT21H:显示(DL)返回DOS:MOVAX,4C00HINT21HCSEGENDSENDSTART:..实验分析:运用debug程序的-u命令可见程序反汇编内容:之后用–g及–r命令可观察每一步程序进行后AL中存储内容的变化:0BD9:0000B8D60BMOVAX,0BD60BD9:00038ED8MOVDS,AX0BD9:0005B8D70BMOVAX,0BD70BD9:00088ED0MOVSS,AX0BD9:000AA00000MOVAL,[0000]:AL=130BD9:000D02060100ADDAL,[0001]:AL=3A0BD9:001127DAA:AL=400BD9:00128AC8MOVCL,AL0BD9:0014A00200MOVAL,[0002]:AL=110BD9:001702060300ADDAL,[0003]:AL=230BD9:001B27DAA:AL=2308D9:001C2AC8SUBCL,AL0BD9:001E8AC1MOVAL,CL:AL=1D0BD9:00202FDAS:AL=1708D9:0021A20400MOV[0004],AL-g24后-r命令可见:AX=0B17BX=0000CX=0012DX=0000SP=0014BP=0000SI=0000DS=0BD6SS=0BD7CS=0BD9IP=0024可知此时程序已将(a+b)-(c+d)结果17存入到AL中。每组数据实验程序运行结束后,应用–e命令更改a,b,c,d数值继续进行实验内容:-e0000得到:0BD6:。同理更改b,c,d值后继续实验。六、实验思考题:若a=90,b=34,c=33,d=44a=12,b=19,c=25,d=33观察结果,改进程序使结果正确。=90,b=34,c=33,d=44,则a+b=124,执行(a+b)ADD后AL中存储内容显示为24H,而c+d未出现近卫,执行(c+d)后响应的AL为77,因此执行(a+b)-(c+d)时需要使用带借位减法指令SBB,即将SUBCL,AL改为:SBBCL,AL即可,执行结果为47正确。=12,b=19,c=25,d=33,则(a+b)-(c+d)结果为负,这时候需要加入判断语句:即在减法前加入:JLLESS即当(a+b)小于(c+d)时,减法改为(c+d)-(a+b),然后在显示结果时在数字前加入负号。修改后程序即在减法进行前加入判断语句JLLESS,再在程序最后加入子程序LESS:SUBAL,CL存储结果至Y1显示部分程序在第一次显示DL前加入:MOVDX,2DH:显示负号即可,执行结果为-27正确。:..一、实验目的:。。二、实验内容:在显示信息下,从键盘上输入原码表示的二位十六进制有符号数:当此数大于0时,屏幕上显示此数为正数;当此数等于0时,屏幕上显示此数为零;当此数小于0时,屏幕上显示此数为负数。三、程序框架:CRLFMACROMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HENDMDATASEGMENTMESS1DB‘INPUTDATA:’,0DH,0AH,‘$’MESS2DB‘THISDATAIS+’,0DH,0AH,‘$’MESS3DB‘THISDATAIS-’,0DH,0AH,‘$’MESS4DB‘THISDATAISZERO’,0DH,0AH,‘$’:定义结果信息DATABUFDB3:定义最大可能输入字符长度ACTLENDB?:实际输入字符长度STRINGDB3DUP(?):输入字符缓冲区DATAENDSSSEGSEGMENTPARASTACK‘STACKDB50DUP(0)SSEGENDSCODESEGMENTASSUMECS:CODE,SS:SSEG,DS:DATA:各段定位STARTMOVAX,DATAMOVDS,AX:DS段寄存器赋值MOVAX,SSEGMOVSS,AX:SS段寄存器赋值MOVDX,OFFSETMESSIMOVAH,09HINT21HMOVAH,AH:显示提示信息:..MOVDXOFFSETDATABUFINT21H:接受键入的字符串CRLF:回车换行MOVAL,STRINGCMPAL,38H……根据程序框图编写判断输入数据情况程序段CODEENDS:代码段结束ENDSTART:程序结束程序框图:开始初始化显示提示信息从键盘接收字符接受字符高位送ALYSEAL>=38H?NONOAL=30H?YSE接受字符低位送ALNOAL=30H?YES显示此数为负显示此数为正显示此数为0结束:..程序内容:CRLFMACROMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HENDMDATASEGMENTMESS1DB'INPUTDATA:',0DH,0AH,'$'MESS2DB'THISDATAIS+',0DH,0AH,'$'MESS3DB'THISDATAIS-',0DH,0AH,'$'MESS4DB'THISDATAIS0',0DH,0AH,'$'DATABUFDB3ACTLENDB?STRINGDB3DUP(?)DATAENDSSSEGSEGMENTPARASTACK'STACK'DB50DUP(0)SSEGENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SSEGSTART:MOVAX,DATAMOVDS,AXMOVAX,SSEGMOVSS,AXMOVDX,OFFSETMESS1MOVAH,09HINT21HMOVAH,0AHMOVDX,OFFSETDATABUFINT21HCRLFMOVAL,STRINGCMPAL,38H:比较输入数的ASCII码与38HJGENEGT:大于0则跳到NEGT程序段CMPAL,30H:比较输入数与00的ASCII码JZGOON:为0跳到GOON程序段MOVDX,OFFSETMESS2:上述不成立则显示此数为正MOVAH,09HINT21HJMPDONE:..MOVAH,4CHINT21HNEGT:MOVDX,OFFSETMESS3MOVAH,09HINT21HJMPDONEGOON:MOVAL,STRING+1CMPAL,30HJZZERO:为0则跳到ZERO程序段MOVDX,OFFSETMESS2:显示此数为正MOVAH,09HINT21HJMPDONEZERO:MOVDX,OFFSETMESS4:显示此数为0MOVAH,09HINT21HJMPDONECODEENDSENDSTART五、实验分析:运用debug程序的-u命令可见程序反汇编内容:之后用–g命令可观察每一步程序进行后的程序进程:0BDB:0000B8D60BMOVAX,0BD60BDB:00038ED8MOVDS,AX0BDB:0005B8E10BMOVAX,0BE10BDB:00088ED0MOVSS,AX0BDB:000ABA0000MOVDX,00000BDB:000DB409MOVAH,090BDB:000FCD21INT21:显示INPUTDATA0BDB:0011B40AMOVAH,0A0BDB:0013BA4100MOVDX,00410BDB:0016CD21INT21:输入数据0BDB:0018B402MOVAH,020BDB:001AB20DMOVDL,0D0BDB:D21INT210BDB:001EB402MOVAH,020BDB:0020B20AMOVDL,0A0BDB:0022CD21INT210BDB:0024A04300MOVAL,[0043]0BDB:00273C38CMPAL,380BDB:00297D12JGE003D0BDB:002B3C30CMPAL,300BDB:002D7417JZ0046:..BA0E00MOVDX,000E0BDB:0032B409MOVAH,090BDB:0034CD21INT210BDB:0036EB01JMP00390BDB:0039B44CMOVAH,4C0BDB:003BCD21INT213步观测此段程序::0016CD21INT21:输入正数370BDB:0018B402MOVAH,020BDB:001AB20DMOVDL,0D0BDB:D21INT210BDB:001EB402MOVAH,020BDB:0020B20AMOVDL,0A0BDB:0022CD21INT210BDB:0024A04300MOVAL,[0043]:AL=33,为输入数字高位3的ASCII码0BDB:00273C38CMPAL,380BDB:00297D12JGE003D:程序未跳转0BDB:002B3C30CMPAL,300BDB:002D7417JZ0046:程序未跳转0BDB:002FBA0E00MOVDX,000E0BDB:0032B409MOVAH,090BDB:0034CD21INT21:显示为正0BDB:0036EB01JMP00390BDB:0039B44CMOVAH,4C0BDB:003BCD21INT21::0016CD21INT21:输入负数DD0BDB:0018B402MOVAH,020BDB:001AB20DMOVDL,0D0BDB:D21INT210BDB:001EB402MOVAH,020BDB:0020B20AMOVDL,0A0BDB:0022CD21INT210BDB:0024A04300MOVAL,[0043]:AL=64,为输入数字高位D的ASCII码0BDB:00273C38CMPAL,380BDB:00297D12JGE003D:程序跳至003D0BDB:003DBA1F00MOVDX,001F0BDB:0040B409MOVAH,090BDB:0042CD21INT21:显示为负0BDB:0044EBF3JMP0039:程序跳至00390BDB:0039B44CMOVAH,4C0BDB:003BCD21INT21:程序结束:..:0016CD21INT21:输入零000BDB:0018B402MOVAH,020BDB:001AB20DMOVDL,0D0BDB:D21INT210BDB:001EB402MOVAH,020BDB:0020B20AMOVDL,0A0BDB:0022CD21INT210BDB:0024A04300MOVAL,[0043]:AL=30,为输入数字高位0的ASCII码0BDB:00273C38CMPAL,380BDB:00297D12JGE003D:程序未跳转0BDB:002B3C30CMPAL,300BDB:002D7417JZ0046:程序跳至00460BDB:0046A04400MOVAL,[0044]0BDB:00493C30CMPAL,300BDB:004B7409JZ0056:程序跳至00560BDB:0056BA3000MOVDX,00300BDB:0059B409MOVAH,090BDB:005BCD21INT21:显示为00BDB:005DEBDAJMP0039:程序跳至00390BDB:0039B44CMOVAH,4C0BDB:003BCD21INT21:程序结束注意:由于读取长度以字节为单位,所以输入零时需输入00而非0。六、实验思考题:若输入的是非法字符而不是十六进制数,此程序会得到什么结果?如何改进?答:此时根据输入字符的ASCII码,程序会得到其为正数或为负数的结果。改进:须加入判断语句,实验分别判断输入字符的每一位是否为0—9及A—F,若不是,则跳出至ER段,显示错误,若是,则跳至R段,继续执行判断正负程序。改进后部分程序如下:(JUG段即为判定段,LOW段为判定低位是否为0。)数据段定义中添加信息:MESS5DB‘THISDATAISWEONG!’,0DH,0AH,‘$’START段改为:START:MOVAX,DATAMOVDS,AXMOVAX,SSEGMOVSS,AXMOVDX,OFFSETMESS1MOVAH,09HINT21HMOVAH,0AH:..MOVDX,OFFSETDATABUFINT21HCRLFMOVAL,STRINGASCII码MOVBL,[STRING+1]:存储低位ASCII码ANDDL,00H:初始化DLMOVDL,02HJUG:CMPAL,46H:与F的ASCII码比较JGER:超过F则跳至ER段CMPAL,41H:与A的ASCII码比较JGELOW:大于等于A则跳至LOW段CMPAL,39H:与9的ASCII码比较JGERCMPAL,30H:与0的ASCII码比较JLERJMPLOWLOW:SUBDL,01HCMPDL,00HJZR:低位为0则跳至R段MOVAL,BL:低位不为0则将BL移至ALJMPJUG:跳至JUG判断低位是否满足ER:MOVAH,09HMOVDX,OFFSETMESS5:显示输入错误INT21HJMPDONER:CMPAL,38HJGENEGTCMPAL,30HJZGOONMOVDX,OFFSETMESS2MOVAH,09HINT21HJMPDONEDONE:……

微机原理实验报告1 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小805 KB
  • 时间2024-04-14
最近更新