您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 第2章指令系统及汇编语言程序设计答案
第2章指令系统及汇编语言程序设计一.选择题1.(D)2.(A)3.(C)4.(D)5.(A)6.(D)7.(C)8.(C)9.(C)10.(D)11.(D)12.(C)13.(C)14.(A)15.(A)16.(D)17.(B)18.(C)19.(C)20.(C)21.(D)22.(D)23.(D)24.(C)25.(A)26.(A)27.(B)28.(C)29.(B)30.(D)31.(B)32.(C)33.(C)34.(A)35.(C)36.(D)37.(D)38.(A)39.(B)40.(C)41.(D)42.(D)43.(B)44.(C)45.(C)46.(B)47.(B)48.(D)49.(A)50.(B)51.(A)52.(C)二、判断题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.√三、填空题1.53F30H2.0;0;0;13.操作码;操作数4.ZF=05.SS6.1234H,0FFEH7.立即四、阅读程序1.38(或26H)2.将以10100H起始的50个单元的内容传送至以10200H起始的50个单元中3.将数据段中以2000H起始的100个单元中的内容清零4.统计以BUFFER为首址的100个单元中数字为1的个数存入ARRAY单元5.统计N字中0的个数6.将N的内容拆为两部分分别存入BH,BL中7.AX=0008H8.AL=34H9.AX=23H10.AX=0004H11.AX=0055H12.将从键盘接受到的两个字符拼在一起13.BH=0FFH,BL=0EH14.AX=000FH15.AL=15H,AF=1,BL=0FH16.90H17.向屏幕上依次输出0,1,…。918.AL=68H,CL=CEH19.AX=0705H20.①①AX=0007H,BX=0014H,CX=0,DX=0②AX=0007H,BX=0014H,CX=0,DX=0③AX=0005H,BX=0007H,CX=0002H,DX=0002H21.程序的功能是:统计以BUFFER为起始地址的100个单元中偶数的个数。22.①35H②将十六进制数转换为ASCII码23.①12H②3412H24.程序的功能是:求从1开始的50个奇数之和。25.(如下图)26.①、0000H②、0002H27.AL=90H28.DI=0000HBP=0002H29.AL=90H30.①AL=0FCH②BL=1五.程序填空1.①、LOOPLOOP1②、POPAX;MOVDL,AL六、编写程序1.在STR到STR+49单元中存放着一个字符串,试编写一个程序,测试字符串中是否存在数字,如有,则把DL的第五位置1,否则将该位置0。DATASEGMENTSTR1DB50DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXBEGIN:MOVCX,50MOVSI,0REP1:MOVAL,STR1[SI]CMPAL,30HJBGOCMPAL,39HJAGOORDL,20HJMPEXITGO:INCSILOOPREP1ANDDL,0DFHEXIT:RETMAINENDPCODEENDSENDSTART2.试编程实现,从键盘接收N个(N≤60)8位二进制数,统计其中奇数的个数,并将结果显示在屏幕上。DATASEGMENTKEYDB61KEY1DB?KEY2DB61DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETKEYMOVAH,0AHINT21HMOVAL,0LEASI,KEY2MOVCH,0MOVCL,KEY1LP0:MOVBL,[SI]TESTBL,01HJZLP1ADDAL,01HDAALP1:INCSILOOPLP0MOVBL,ALMOVCL,4SHRAL,CLADDAL,30HMOVDL,ALMOVAH,02HINT21HANDBL,0FHADDBL,30HMOVDL,BLMOVAH,02HINT21HMOVAH,4CHINT21HCODEENDSENDSTART3.已知有100字节的数据块存放在以5C10H:2000H开始的存储区内,要求编写一个完整程序将数据移动到以5C10H:2008H开始的存储区内。参考程序CODESEGMENTASSUMECS:CODEMAIN:MOVAX,5C10HMOVES,AXMOVDS,AXMOVSI,2063HMOVDI,206BHSTDMOVCX,100REPMOVSBMOVAH,4CHINT21HCODEENDSENDMAIN4.数组A包含100个互不相等的整数,数组B包含150个互不相等的整数,试编程实现将数组A和数组B都有的整数存放在数组C中。参考程序DATSEGMENTADB100DUP(?)BDB150DUP(?)CDB150DUP(?)NDW00HDATENDSCODSEGMENTASSUMECS:COD,DS:DAT,ES:DATSTART:MOVAX,DATMOVDS,AXMOVES,AXCLDLEASI,BMOVDX,150LP0:MOVCX,100LEADI,AMOVAL,[SI]REPNZSCASBJNZLP1LEABX,CADDBX,NMOV[BX],ALINCNLP1:INCSIDECDXJNZLP0MOVAX,004CHINT21HCODENDSENDSTART5.在以BASE起始的表中存有一组字符,它以‘回车’(0DH)结束。请编写程序:实现从该表中查找关键字KEY(设关键字KEY在AL中),并将找到的第一个关键字偏离表首的位置存放在寄存器DX中,若无此关键字,DX返回值为-1。LEADI,BASEMOVDX,-1LOP:MOVBL,[DI]CMPBL,0DHJZDONECMPBL,ALJZLOP1INCDIJMPLOPLOP1:MOVDX,DIDONE:HLT6.编写一个中断程序,实现人机对话。要求执行程序时,显示‘WHATISYOURNAME?’,在回车换行后,接收键盘输入信息,并显示。(提示:使用09H和0AH功能调用)DATASEGMENTBUFDB81DB?DB81DUP(?)MESGDB‘WHATISYOURNAME?’,0AH,0DHDB$DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXDISP:MOVDX,OFFSETMESGMOVAH,09HINT21HKEYBI:MOVDX,OFFSETBUFMOVAX,0AHINT21HLF:MOVDL,0AHMOVAH,02HINT21HDISTR:MOVDX,OFFSETBUF+2MOVAH,09HINT21HRETSTARTENDPCODEENDSENDSTART7.编写程序找出BUF数据区中50个带符号数的最大值和最小值,并分别存入MAX和MIN单元。参考程序如下:DATASEGMENTBUFDB50DUP(?)MAXDB?MINDB?CONTEQU$-BUFDATAENDSSTACKSEGMENTTPDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARSTART:PUSHDSSUBAX,AXPUSHAXMOVDS,AXLEABX,BUFMOVCX,CONT-1MOVAL,[BX]MOVAH,[BX+1]INCBXCMPAH,ALJGELOP1XCHGAH,ALLOP1:INCBXCMPAH,[BX]JGELISXCHGAH,[BX]JMPLOP2LIS:CMPAL,[BX]JLELOP2XCHGAL,[BX]LOP2:LOOPLOP1MOVMAX,AHMOVMIN,ALRETMAINENDPCODEENDSENDSTART8.试编程实现从键盘接收N个(N≤50)8位二进制数,统计偶数的个数及偶数之和,并将统计的个数以十进制方式显示在屏幕上。DATASEGMENTKEY1DB51KEY2DB?KEY3DB51DUP(?)DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODEMAIN:MOVAX,DATAMOVDS,AXMOVSI,OFFSETKEY1MOVAH,0AHINT21HLEABX,KEY3XORDX,DXMOVCL,KEY2MOVCH,0LP0:MOVAL,[SI]TESTAL,01HJNZLPADDBL,ALMOVAL,BHADDAL,1DAAMOVBH,ALLP:INCSILOOPLP0SHLAL,4ADDAL,30HMOVDL,ALMOVAH,01INT21HANDBH,0FHMOVDL,30HADDDL,BHMOVAH,1INT21HMOVAH,4CHINT21HCODEENDSENDMAIN9.以STRING起始的字符串的最大长度为80个字符,字符串的结束用字符$表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格字符串中的位置(00H~4FH)存入POST单元;若无空格则将-1存入POST。LEABX,STRINGMOVCX,80NEXT1:MOVAL,[BX]CMPAL,’$’JZDONECMPAL,20HJZNEXTINCBXLOOPNEXT1JMPDONENEXT:MOVPOST,BLJMPEND1DONE:MOVPOST,0FFHEND1:……10.BUFFER字节数组中存有一组无序列字节数数据,列的长度表示在BUFFER的第一个字节中KEY中为一个字节数据,编写程序在BUFFER中查找有无KEY,若有就结束,若没有就将KEY加入到BUFFER中去,并修改列的长度。LEASI,BUFFERMOVCL,[SI]INCSIXORCH,CHNEXT:MOVAL,[SI]CMPAL,KEYJZDONEINCSILOOPNEXTMOVAL,KEYMOV[SI],ALINCBYTEPTRBUFFERDONE:………。11.利用移位及数据循环指令完成将DHAL中的16位二进制乘以8的运算,结果仍存入DHAL中。MOVCX,3NEXT:SHLAL,1RCLDH,1LOOPNEXTMOVAH,4CHINT21H12.分别从键盘上接收两长度相等的组数A和B,试完成两数组的求和任务,将结果存放在数组C中,并显示在屏幕上。DATASEGMENTA0DB80A1DB?ADB80DUP(?)B0DB80B1DB?BDB80DUP(?)CDB80DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAIN:MOVAX,DATAMOVDS,AXLEADX,A0MOVAH,0AHINT21HLEADX,B0MOVAH,0AHINT21HCLCLEASI,ALEABX,BLEADI,CMOVCL,A1XORCH,CHNEXT:MOVAL,[SI]ADCAL,[BX]MOV[DI],ALINCBXINCSIINCDILOOPNEXTMOVCL,A1XORCH,CHLEADI,CN0:MOVDL,[DI]SHLDL,4ADDDL,30HCMPDL,39HJNCN1ADDDL,07HN1:MOVAH,01HINT21HAND[DI],0FHMOVDL,[DI]ADDDL,30HCMPDL,39HJNCN2ADDDL,07HN2:MOVAH,01HINT21HINCDILOOPN0MOVAH,4CHINT21H
本文标题:第2章指令系统及汇编语言程序设计答案
链接地址:https://www.777doc.com/doc-2247105 .html