微计算机原理(第2版)第四章课后习题答案潘名莲马争丁庆生编著讲解_第1页
微计算机原理(第2版)第四章课后习题答案潘名莲马争丁庆生编著讲解_第2页
微计算机原理(第2版)第四章课后习题答案潘名莲马争丁庆生编著讲解_第3页
微计算机原理(第2版)第四章课后习题答案潘名莲马争丁庆生编著讲解_第4页
微计算机原理(第2版)第四章课后习题答案潘名莲马争丁庆生编著讲解_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4-1汇编语言程序设计的几个步骤是:(1)从实际问题抽象出数学模型;(2)确定解决该数学模型的方法,选择最佳算法;(3)画出流程图,根据算法把解决问题的思路和方法用图形表示出来;(4)分配内存工作单元和寄存器;(5)根据流程图编制程序;(6)上机调试,检测和排错。4-2计算下列表达式的值(A1=50H,B1=20,G1=2)。(1)A1*100+B1(2)A1MODG1+B1(3)(A1+2)*B1-2(4)B1/3MOD5(2)(5)(A1+3)*(B1MODG1)(6)A1GTG1(7)B1AND7(8)B1SHL2+G1SHR1FHZEQU20HENGTH20变量名1214-4(略)4-6设有一个已定义的数据段如下:VAR1DB?,?VAR2DB?,?TAENDS…XORAX,AXMOVCX,LENGTHARRY4-8试定义一个结构,它应包括一个学生的下列信息:姓名、学号、及3门课程的成绩。STUDSTRUC为STUDNAME1DB‘’;姓名字段NUMDB?;学号字段SCORDBDUP;三门课程成绩字段DENDSDATASEGMENT;在数据段中通过三个结构变量引用,并赋值TAENDS4-9试定义一条宏指令,它可以实现任一数据块的传送(假设无地址重叠),其源地址、目参数处理。字节数)。假设参数传递采用固定内存单元传递方式。A2DB10LDSSI,SADRLESDI,DADRMOVCX,SLENGCLDCMPSI,DIJAMOVEMOVE:ADDSI,CXDECSIADDDI,CXDECDIVSBENDM(1)ADDVAR1VA2(2)JNZVAR1(3)SUBAL,VAR1(4)JMPNEARLAB(5)JMPLAB[SI](6)MOVAL,VAR2(1)错,ADD的两个操作数不能同时为存储单元。ADDAX,VAR2(2)错,JCC后面应该是标号,不应该是变量(3)错,两个操作数不匹配(4)错,缺少PTR运算符LABSI能相加(6)错,操作数类型不匹配B2DB04-12对于下列数据定义,指出以下指令的错误。A1DB?(3)MOVBX,A1MOV[BX],1000(5)K1EQU2048(1)K1为名称,表示一立即数,不能做为目的操作数。(2)A1为字节型,类型不匹配(3)类型不匹配(4)源和目的操作数不能同为存储器操作数(5)对已经被EQU定义的K1,在本程序段不能二次定义XDB10YDB5ZDW?KDW20HDUP(0)DSMAINPROCFARMOVAX,0PUSHAXMOVMOVMOVMULMOVMOVMOVMULADDADDMOVAX,DATAAL,XBL,YBLDX,AXAL,YBL,3BLAL,0AHAX,DXZ,AX;X*5;Y*3,积在AX中段MAINSTART4-14(略)4-15用查表法将存放于数据段中一个有序的十六进制数串(范围:0~FH)翻译成ASSII码表仍放于数据段中.解:HEXDB6ASCDB?TAENDSBEGIN:MOVMOVMOVAX,DATAXORAX,AXMOVAL,HEXADDBX,AXMOVAL,[BX]MOVASC,ALMOVAH,4CHINT21H;要查找的一位十六进制数在AL中ASCIIENDBEGINGBIGDW?TAENDSSTART:MOVAX,DATAMOVDS,AXMOVAX,XMOVBX,YCMPAX,BXXCHGAX,BXMOVAH,4CHINT21HENDSTART;比较(AX)和(BX);若(AX)≧(BX),则转STORE处执行;若(AX)<(BX),则(AX)(BX) 4-17试编制一程序,比较STRING1和STRING2所含字符是否完全相同,若相同显示DATASDATADB‘COMPUT’TCHDHAHSTART:MOVAX,DATAMOVDS,AXMOVCX,6LDREPECMPSB;字符串一致时,重复比较,在两字串中找不相同字符JNENOSAMENOSAME行,否则顺序执行MOVAH,09H;显示字符串“MATCH”INT21HETMNOMOVAH,09H;显示字符串“NOMATCH”INT21HINT21HENDSTARTADB5BDB4CDB3SUMDW?TAENDSBEGIN:MOVAX,DATAMOVDS,AXCMPA,0JEOK1CMPB,0JEOK1JNEOK2MOVB,0MOVC,0JMPOK3MOVAL,AADDAL,BADDAL,CMOVSUM,AXINT21HENDBEGIN4-19假设已编制好5个乐曲程序,它们的入口地址(含段首址和偏移地址)存放在数据段转到所点乐曲的入口,执行此乐曲程序。TAENDSDSMOVMOVMOVAX,0AXAX,DATALEABX,MUTABNEXT:MOVAH,1INT21HCMPAL,30HJBNEXTCMPAL,34HJANEXTSUBAL,30HMOVAH,0SHLAX,1ADDBX,AXJMPWORDPTR[BX]︰﹕﹕﹕MAIN4-20试编写一个能循环显示十条新闻标题的控制程序,每条新闻的标题为NEW1、NEWDBNEWSDH0AH,‘$’NEWDBNEWSDH0AH,‘$’NEWDBNEWSDH0AH,‘$’﹕﹕AHTAENDSMAINPROCFARSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXBEGIN:MOVCX,10LEABX,NEWTABMOVDX,[BX]ADDBX,2MOVAH,09INT21HMAINENDSTART4-21在数据段中存放有一字符串(≦80个字符),以回车符CR结束。编写一程序统计此字符串的长度,并将它存入数据区LENTH单元,也显示在屏幕上。DATASEGMENTSTR1DB‘PleaseinputthecharofASCIIandtheCRtoendthestring’,’$’,0DHLENGTHDW?TAENDSSTACKSEGMENTPARASTACK‘STACK’DW20HDUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTMOVAX,DATAMOVDS,AXMOVDL,0;用DL统计字符个数NEXT1:MOVAL,[BX];取字符INCBXCMPAL,0DHJZEXIT;为零,则是回车符,转EXITCMPAL,30HJGENEXTINCDLJMPNEXT1;非零,则不是回车符,顺序执行NEXT:CMPAL,39HJBENEXT1INCDLJMPNEXT1;若(AL)为数字0~9,不统计,转NEXT1;若(AL)>39H,非数字0~9.DL记下一个字符,然后转NEXT1EXIT:MOVLENGTH,DLLEABX,LENGTHMOVCH,02HLOP1:MOVCL,04ROLDL,CLANDDL,0FHADDDL,30H;将(DL)转换成它的ASCII码CMPDL,3AHJBSTOREADDDL,07HSTORE:MOV[BX],DL;存结果至LENGTH字单元INCBXDECCHJNZLOP1LEADX,LENGTHMOVAH,09H;显示LENGTH字单元的内容INT21HMOVAH,4CHINT21HCODEENDS4-22试用串操作指令将数据区一个数组BLOCK(均为字节数)中的奇数和偶数分开存放,DATASEGMENTDATA1DB00H,01H,09H,0AH,…TAENDSSTACKSEGMENTPARASTACK‘STACK’DSMOVLEALEALEAMOVAX,DATADIDATA3DX,DXLOP:MOVAL,[BX]TESTAL,01HJZNEXT1MOV[SI],ALINCSIINCDHJMPXEXT2INCDIINCDLNEXT2:INCBXMOVDATA2-1,DHMOVAH,4CHINT21HENDSTART4-23编一个程序,其功能是将一个字节数组ARRAY中的正数和负数分开存放于以PLUS和MINUS开始的单元中,并在屏幕上显示正数和负数的个数。设该数组长度放在数组的第COUNTDB$-ARRAYTDUPTAENDSMAINPROCFARMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXITMOVSIOFFSETARRAYFSETMINUSMOVCX,COUNTGOONLODSBTESTAL,80HJNZMISPLUSJMPAGAINMIS:INCBYTEPTRMINUSXCHGBX,DIXCHGBX,DIAGAIN:DECCXJNZGOONMOVDL,BYTRPTRPLUSMOVAH,02HINT21HBYTEPTRMINUSMOVAH,02HINT21HMAINENDSTARTSTACKSEGMENTPARASTACKUPDSNEQU$-STRTAENDSMAINXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVBX,N-1NEXT2:MOVCX,BXSHRCX,1MOVDI,CXMOVBX,OFFSETSTRNEXT1:MOVAX,[BX]CMPAX,[BX+2]MOV[BX],AXNEXT:INCBXINCBXLOOPNEXT1MAINDIENDMAINSTARTMOVBX,0MOVDX,0MOVCX,BXMOVAX,0LOP2:ADDAX,BXADDDX,AXMOVAH,4CHINT21HENDSTARTSUNSUNDISPDB‘SUM:’DATDB‘0000’,‘$’KEYWORDDB‘SUN’MAINPROCFARSUBAX,AXMOVMOVMOVBEGIN:MOVAXAX,0MOVDX,DISPLEABX,ENGLISHCOMP:MOVDI,BXLEASI,KEYWORDMOVCX,3JNZNO-MATCHINCAXNO_MATCH:INCBXDECDXJNZCOMPDONE:MOVCH,4MOVCL,4LEABX,DATMOVDX,AXANDDX,0FHADDDL,30HCMPDL,39HADDDL,07HSTORE:MOV[BX],DLINCBXDEXCHATLEADXDISPMOVAH,09HINT21HMAINENDPENDSTARTK程序求该数组之和,并存入SUM单元(和>1字节)。COUNTEQU$-BlockSUMDB2DUP(?)TAENDSSTACKSEGMENTPARASTACK‘STACK’DW20HDUP(?)DSBEGIN:MOVAX,DATAMOVDS,AXLEABX,BlockLEADI,SUMXORAX,AXMOVAL.[BX]ADCAL,[BX]DA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论