您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 畜牧/养殖 > 华南农业大学汇编语言8086习题(附答案)
题目名称实验一汇编语言程序结构题目关键字源程序结构debug题目录入时间2013-3-1322:45:26题目内容一、实验目的1.掌握汇编语言程序上机过程。2.掌握汇编语言结构。3.了解汇编程序、连接程序、DOS系统装入和返回功能。4.掌握用DEBUG调试汇编语言程序的方法二、实验要求1.编写完整的汇编语言程序:(1)逆序输出字符串“BASEDADDRESSING”。(2)从键盘上输入2个一位的正数,求出它们的和(假设和不超过1位)。(3)试编写一段程序,要求在长度为100H字节的数组中,找出大于42H的无符号数的个数并存入字单元UP中;找出小于42H的无符号数的个数并存入字单元DOWN中。2.在DEBUG下查看程序执行的过程,以及变量值的变化。3.演示程序运行结果,请指导教师检查。三、思考1.汇编语言程序中语句END后的标号作用是什么?2.采用标准序结构编制源程序,用ret结束程序运行返回操作系统时,可否将语句mainprocfar中的far属性去掉,为什么?3.一个段的大小为多少?一定是64KB吗?如何在DEBUG下查看程序在内存的存放情况?四、提交内容将各个源程序代码、exe文件压缩为RAR后提交到作业系统。题目创建人题目注释1.1.asmDATASSEGMENTStringdbBASEDADDRESSINGcountdw$-StringDATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovcx,count;循环次数leasi,count-1;将最后一个字符‘G’的地址给siL:movah,2movdl,[si]decsiint21hloopLMOVAH,4CHINT21HCODESENDSENDSTART1.2.asmDATASSEGMENTxdbx=$ydby=$zdbx+y=$DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovah,9;显示x=leadx,xint21hmovah,1;输入Xint21hsubal,30hmovcl,al;将X放在CLmovah,9;显示y=leadx,yint21hmovah,1;输入Yint21hsubal,30haddcl,al;两数字相加movah,9;显示z=leadx,zint21hmovah,2;显示结果movdl,cladddl,30hint21hMOVAH,4CHINT21HCODESENDSENDSTART1.3.asmDATASSEGMENTarraydb128dup(41h,43h)updw0downdw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,arraymovcx,256L:moval,[di]cmpal,42hjlL1jaL2L1:incdownjmpL3L2:incupjmpL3L3:incdiloopLMOVAH,4CHINT21HCODESENDSENDSTART题目名称实验二程序结构与简单程序设计题目关键字简单程序设计题目录入时间2013-4-122:45:55题目内容一、实验目的1.掌握汇编语言源程序结构。2.掌握汇编语言调试方法。二、实验要求1.编写完整的汇编语言程序:(1)试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。(2)编写程序,从键盘接收一个小写字母,然后找出它的前导字母和后续字母,再按顺序显示这三个字符。(3)试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”,若不相同则显示“NOMATCH”.(4)编写程序,将一个包含有20个数据的数组M分成2个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。2.在DEBUG下查看程序执行的过程,以及变量值的变化。3.演示程序运行结果,请指导教师检查。三、思考对输入的非字母字符如何处理?2.字母“a”和“z”边界字符的处理方法是什么?3.显示结果为多位数的时候如何输出?四、提交内容将各个源程序代码、exe文件,思考题的WORD文档压缩为RAR后提交到作业系统。题目创建人题目注释2.1.asmDATASSEGMENTcrlfdb0ah,0dh,'$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovah,1;输入数据会ALint21hpushax;将AX存进栈里leadx,crlf;换行movah,9int21hpopdx;栈里数据放进DX,即将原先AX放进DXsubdl,20h;小写变大写要减去20hmovah,2;输出int21hMOVAH,4CHINT21HCODESENDSENDSTART2.2.asmDATASSEGMENTStringdb'zabcdefghijklmnopqrstuvwxyza'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,Stringmovah,1;输入字母int21hL:incdi;先DI自加1,第一次就是‘a’的地址,不是‘z’cmpal,[di];直到找到字母和输入的相匹配jnzLdecdi;推前成为前端字母的地址movcx,3;循环次数3L2:movdl,[di]incdimovah,2int21hloopL2MOVAH,4CHINT21HCODESENDSENDSTART2.3.asmDATASSEGMENTString1dbthisisaprogramcount1dw$-String1String2dbthisisaprogramcount2dw$-String2answer1db'match','$'answer2db'nomatch','$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovax,count1movbx,count2cmpax,bx;比较两个字符串的长度,如果不等就是不匹配jnznextmovcx,count1;字符串长度leasi,string1leadi,string2L:moval,[si]cmpal,[di];比较两个字符串的字符,如果不等就跳jnznextincsiincdiloopLleadx,answer1;能到这里说明都匹配movah,9int21hjmpfinally;跳去finally,避免顺序执行了nextnext:;显示不匹配leadx,answer2movah,9int21hfinally:MOVAH,4CHINT21HCODESENDSENDSTART2.4.asmDATASSEGMENTMdb5dup(-1,1,2,3)Pdw0Ndw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleasi,Mmovcx,20;循环次数L:moval,[si]cmpal,0;和0比较判断正负jlL1jgL2L1:incNjmpL3L2:incPjmpL3L3:incsiloopLmovax,P;输出Pmovbl,10;设置除数10divblmovbh,ah;将ah(余数放在bh保留)movdl,al;将商显示adddl,30hmovah,2int21hmovdl,bh;将余数显示adddl,30hmovah,2int21hmovax,N;输出Nmovbl,10divblmovbh,ahmovdl,aladddl,30hmovah,2int21hmovdl,bhadddl,30hmovah,2int21hMOVAH,4CHINT21HCODESENDSENDSTART题目名称实验三分支程序设计题目关键字分支结构题目录入时间2013-4-1420:14:57题目内容一、实验目的1.掌握汇编语言源程序结构。2.掌握汇编语言分支结构程序设计方法。二、实验要求1.编写完整的汇编语言程序:(1)试编写一段程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。(2)编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。(3)键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。(4)有一个首地址为mem的100个字的数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。2.在DEBUG下查看程序执行的过程,以及变量值的变化。3.演示程序运行结果,请指导教师检查。三、思考1.求极值时程序初始化应该注意什么?2.如何从键盘上输入多位数?3.第(4)小题有多少种做法?四、提交内容将各个源程序代码、exe文件以及思考题压缩为RAR后提交到作业系统。提交时请填写自评内容。题目创建人题目注释3.1.asmDATASSEGMENTDATAdw1dup(1,2,-1,4,-2,-6)countdw($-DATA)/2DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovcx,countleasi,DATA-2L1:;将第一个偶数存在AXaddsi,2movax,[si]deccxtestal,01hjnzL1L2:;找到另外一个偶数addsi,2movbx,[si]cmpcx,0jzL4deccxtestbl,01hjnzL2cmpax,bx;比较两个偶数,如果axbx那么跳到L3jgL3jmpL2L3:movax,bxjmpL2L4:MOVAH,4CHINT21HCODESENDSENDSTART3.2.asmDATASSEGMENTNUMdw0crlfdb0dh,0ah,'$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovdx,0movcx,4L:movah,1int21hcmpal,40hjgL1jlL2L1:subal,07h;大写字母多减7L2:subal,30h;变成实际数字pushax;原来数字*16+新接受数字movax,NUMmovbx,16mulbxpopbxadcal,blmovNUM,axloopL;循环4次leadx,crlfmovah,9int21hmovcx,16movbx,NUML3:movdl,31hsalbx,1;左移1位,改变CFjcL4subdl,1;CF为0,所以DL减去1,变成0L4:movah,2int21hloopL3MOVAH,4CHINT21HCODESENDSENDSTART3.3.asmDATASSEGMENTStringdb128,?,128dup('$')crlfdb0dh,0ah,24hcountdw0numdw0DATASENDSSTAC
本文标题:华南农业大学汇编语言8086习题(附答案)
链接地址:https://www.777doc.com/doc-2643561 .html