汇编语言习题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

汇编语言复习题简答题1.存储器地址为什么要分段?物理地址是如何形成的?2.IBMPC机的寻址方式(与数据有关的寻址方式)有几种?各举一例说明。3.80x86微机的存储器中存放信息如下图所示。试读出30022H与30024H字节单元的内容与30021H和30022H字单元的内容。4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后AX的内容。1)MOVAX,1200H2)MOVAX,BX3)MOVAX,[1200H]4)MOVAX,[BX]5)MOVAX,1100[BX]5.完成下列各式补码数的运算,并根据结果设置标志位SF,CF,ZF,OF,指出运算结果是否有效1)01001001b+10011101b2)01000001b-10101011b6.有符号定义语句如下:BUFFDB1,2,3,’123’EBUFFDB0LEQUEBUFF-BUFF问L的值为多少?为什么?答案:1、IBMPC系列机的字长为16位,能够访问的最大存储空间64KB,而在IBMPC内存为1MB的情况下,访问这1MB的存储空间需要20位。为了解决字长为16位的机器访问1MB的存储空间,将1MB空间每16B分为一段,共64K段,以16位段地址:16位偏移地址的形式组成,物理地址通过如下方式计算:物理地址=段地址×10h+偏移地址2.IBMPC机的寻址方式有7种:1)立即寻址:MOVAX,1234H;2)寄存器寻址:MOVAX,BX;3)直接寻址:MOVAX,[1234H];4)寄存器间接寻址:MOVAX,[BX];5)寄存器相对寻址:MOVAX,20H[BX];6)基址变址寻址:MOVAX,[BX][SI];7)相对基址变址寻址:MOVAX,100H[BX][SI];3.解:(30022H)=12H(30024H)=56H(30021H)=12CDH(30022H)=3412H4.解:(1)MOVAX,1200H解:(AX)=1200H(2)MOVAX,BX解:(AX)=0100H(3)MOVAX,[1200H]解:物理地址=(DS)×10H+1200H(AX)=4C2AH(4)MOVAX,[BX]解:物理地址=(DS)×10H+0100H=20100H(AX)=3412H(5)MOVAX,1100[BX]解:物理地址=(DS)×10H+0100H+1100H=21200H(AX)=4C2AH5.(1)01001001b+10011101b解:01001001+10011101————————11100110由此可得:SF=1CF=0ZF=0OF=0计算结果有效(2)01000001b-10101011b解:01000001-10101011————————=01000001+01010101————————10010110由此可得:SF=1CF=1ZF=0OF=1减法计算中,被减数、减数符号相反,结果符号与减数相同,OF=1计算结果无效6.有符号定义语句如下:BUFFDB1,2,3,’123’EBUFFDB0LEQUEBUFF-BUFF问L的值为多少?为什么?解:根据数据段的定义,BUFF长度定义为6个字节,分别存放1,2,3,‘1’,‘2’,‘3’,而后紧接着为EBUFF的地址,故L值为6程序题1MOVBL,64HMOVCL,03HXORAX,AXAGAIN:ADDAL,BLADCAH,0DECCLJNZAGAIN问:(1)该程序段完成的功能是:(2)AX=________。2已知数据段中定义DAT1DB12H,34H,56H,78HMOVCX,0MOVAX,WORDPTRDAT1MOVCL,DAT1+3当程序段执行完后AX=________,CX=________。3DA1DB83H,72H,61H,94H,5AH┇MOVCX,WORDPTRDA1ANDCX,0FHMOVAL,DA1+3SHLAL,CL上述指令序列执行后,AL=_______,CL=_______。4、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。STRINGDB‘COMPUTER’,‘$’MOVBX,0FFSETSTRINGLOP:MOVDL,[BX]MOVAH,02HINT21H________________________________________JNELOP答案:1、AX=012CH,将AX内容乘3送BX中2、AX=3412H,CX=0078H3、AL=0A0H,CL=03H4、INCBXCMP[BX],24H名词解释1.机器语言2.汇编语言3.堆栈4.物理地址5.汇编程序6.SP:7.IP:答案:1、机器语言:能被计算直接识别的恶语言;2、汇编语言:用指令的助记符、符号地址、标号等符号书写程序的语言;3、堆栈:以后进先出(或先进后出)方式工作的存储空间;4、物理地址:唯一代表存储空间中每个字节单元的地址;5、汇编程序:把汇编语言程序翻译成机器语言的系统程序。6、SP:保存当前栈顶地址的寄存器;7、IP:指示下一条要执行指令的地址的寄存器编程题1、试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。2、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。DATASEGMENTDA1DWXXXXDATAENDS3、已知在N到N+i的存储区内有一ASCII码字符串(共i+1个),试编写一个汇编语言程序,将此字符串传送到NI到NI+i单元中,并使字符串的顺序与原顺序相反。(只写出关键代码段即可)(6)1、编写程序,求解sum=1001iai=a1+a2+…+a100,要求写出完整程序。(9)2、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。只写关键代码段即可(8)3、试编写一程序,比较两个字符串STRING1与STRING2所含有的字符是否完全相同,若相同则显示“MATCH”,如不同则显示“NOMATCH”,字符串内容自定义,要求写出完整的程序。(12)答案:1、LEADI,DA_BYMOVCX,32MOVAL,‘Y’CLDREPSTOSB。2、CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,DA1MOVCX,16XORBL,BLAGAIN:MOVAL,[SI]HLAL,1JCNEXTINCBLNEXT:INCSILOOPAGAINTESTBL,01HJNEL1CLCJMPDONEL1:STCDONE:MOVAH,4CHINT21HCODEENDSENDSTART3、解:LEASI,NLEADI,NIADDDI,IMOVCX,IADDCX,1MOVE:CLDLODSBSTDSTOSBLOOPMOVE4、解:DATASEGMENTARRDWa1,a2,a3,a4,a5,a6,…,a100SUMDW?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXLEABX,ARRMOVCX,100MOVAX,0AGAIN:ADDAX,[BX]ADDBX,2LOOPAGAINMOVAX,4C00HINT21HCODEENDSENDSTART5、解:BEGIN:MOVAH,01HINT21HCMPAL,’a’JBFINCMPAL,’z’JAFINSUBAL,20HMOVDL,ALMOVAH,02HINT21HJMPBEGINFIN:RET6、解:DATASEGMENTSTRING1DB‘HEREYOUARE’STRING2DB‘HEREYOUAER’YESDB‘MATCH’,0DH,0AH,’$’NODB‘NOMATCH’,0DH,0AH,‘$’DATAENDSCODESEGEMTNASSUMECS:CODE,DS:DTATSTART:MOVAX,DATAMOVDS,AXBEGIN:LEAAL,STRING1LEADL,STRING2MOXCX,STRING2–STRING1REPCMPSBJNEDISPNOMOVAH,09HLEADX,YESINT21HJMPEXITDISPNO:MOVAH,09HLEADX,NOINT21HEXIT:MOVAX,4C00HINT21HCODEENDSENDSTART阅读下列各指令序列段,写出它们各完成什么功能1.SUBAX,CXSBBDX,BX2.PUSHAXPUSHBXPOPAXPOPBX3.假设DS,ES初始化到同一数据段CLDMOVCX,20LEASI,STRING1LEADI,STRING2REPMOVSB4.CLDMOVCX,COUNTMOVAL,‘‘;空格LEADI,CHAR_FIELDREPSTOSB5.MOVCX,MMOVSI,0NEXT:INCARRAY[SI]ADDSI,2LOOPNEXT6.MOVDX,A+2MOVAX,AADDAX,AADCDX,A+2CMPDX,B+2JLL1JGL2CMPAX,BJBL1L2:MOVAX,2JMPEXITL1:MOVAX,1EXIT:HLT答案:1、SUBAX,CXSBBDX,BX解:完成双精度数减法功能,即(DX,AX)-(DX,CX)→(DX,AX)2、PUSHAXPUSHBXPOPAXPOPBX解:将AX与BX的内容交换3、假设DS,ES初始化到同一数据段CLDMOVCX,20LEASI,STRING1LEADI,STRING2REPMOVSB解:将STRING1中的20个字符移到STRING2中4、CLDMOVCX,COUNTMOVAL,‘‘;空格LEADI,CHAR_FIELDREPSTOSB解:用空格符将字符区CHAR_FIELD中的字符全部清除,字符数存在COUNT单元中5、MOVCX,MMOVSI,0NEXT:INCARRAY[SI]ADDSI,2LOOPNEXT解:将数组ARRAY的M个单元分别加16、MOVDX,A+2MOVAX,AADDAX,AADCDX,A+2CMPDX,B+2JLL1JGL2CMPAX,BJBL1L2:MOVAX,2JMPEXITL1:MOVAX,1EXIT:HLT解:如果2×(A+2,A)≤(B+2,B)则AX=1,若2×(A+2,A)≥(B+2,B),则AX=2

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功