1.已知下列数组语句:0RG0100HARYDW3,$+4,5,6CNTEQU$-ARYDB7,8,CNT,9问执行语句MOVAX,ARY+2和MOVBX,ARY+10后,AX=?BX=?答:AX=(ARY+2)=(0102H)=0106H;BX=(ARY+10)=(010AH)=0908H。2.某程序设置的数据区如下所示。DATASEGMENTDB1DB12H,34H,0,56HDW1DW78H,90H,0AB46H,1234HADR1DWDB1ADR2DWDW1AAADW$-DB1BUFDB5DUP(0)DATAENDS画出该数据段内容在内存中的存放形式(要求用十六进制补码表示,按字节组织)。3.分析下列程序:A1DB10DUP(7)A2DB0,1,2,3,4,5,6,7,8,9MOVCX,LENGTHAlMOVSI,SIZEA1-TYPEAl⋯⋯LP:MOVAL,A2[SI]MOVAl[SI],ALSUBSI,TYPEA1DECCXJN2LPHLT问:(1)该程序的功能是什么?(2)该程序执行后,A1单元开始的10个字节内容是什么?答:(1)该程序的功能是将从A2单元开始存放的10个字节数据传送到从Al单元开始的10个字节单元中。(2)程序执行后,Al单元开始的10个字节内容是0,1,2,3,4,5,6,7,8,9。4.试分析下列程序:BUFDB0BHMOVAL,BUFCALLFARPTRHECAHECAPROCFARCMPAL,10JCLPADDAL,7LP:ADDAL,30HMOVDL,ALMOVSH,2INT21HRETHECAENDP问:(1)该程序是什么结构的程序?功能是什么?(2)程序执行后,DL=?(3)屏幕上显示输出的字符是什么?答:(1)该程序为主程序调用子程序的结构,且为远调用子程序;功能是将BUF单元中的0~F一位十六进制数转换成对应的ASCII码。(2)DL=42H。(3)屏幕上显示输出的是字符“B”。5.分析下列程序:DATASEGMENTNUMDB06HSUMDB?DATAENDSSTACKSEGMENTPARASTACK'STACK'STAPNDW100DUP(?)STACKEND:CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDs,AXPUSHAXPUSHDXCALLAAMOVAH,4CHINT21HAAAPROCXORAX,AXMOVDX,AXINCDLMOVCI,NUMMOVCH,00HBBB:ADDAL,DLDAAINCDLLOOPBBBMOVSUM,ALRETAAAENDPCODEENDSENDSTART问:(1)程序执行到MOVAH,4CH语句时,AX=?DX=?SP=?(2)BBB:ADDAL,DL语句的功能是什么?(3)整个程序的功能是什么?答:(1)程序执行到MOVAH,4CH语句时,AX=1+2+3+4+5+6=21H;DX=07H;SP初值为200字节=C8H,当程序执行到MOVAH,4CH时,由于堆栈仍压入了AX、DX,故SP=C4H。(2)BBB:ADDAL,DL语句的功能是将AL和DL中的两个BCD数相加,结果存入AL。(3)整个程序的功能是对1~6的自然数进行BCD数求和,结果为BCD数,存于NUM。6.分析下列程序:DATASEGMENTDISPDATADB'INPUTNUMBERREY,CRORSPRETURN',ODH,0AHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,DISPDATA;(1)MOVAH,09H;(2)INT21HAGAIN:MOVAH,01H;(3)INT21HCMPAL,ODH;(4).JZEXIT;(5)CMPAL,20H;(6)JZEXIT;CMPAL,30H;(7)JBEAGAIN;(8)CMPAL,39H;(9)JAAGAIN;(10)SUBAL,30H;(11)MOVCL,AL;(12)ANDCX,OFFEDONE:MOVAH,02HMOVDl,07H;(13)INT21HCALLDELAYLOOPDONEJMPAGAINEXIT:MOVAH,4CH;(14)INT21HDELAY:PUSHCXMOVCX,0FFFHLOOPDELAYPOPCXRETCODEENDSENDSTART按照程序各语句中“;”号后面的题号(1)-(14),试分别回答这些语句的功能。程序执行后将完成什么功能?答:(1)取显示数据首址的偏移地址。(2)调研DOS的09H号功能以调用显示数据。(3)从键盘输人一个ASCI码字符数据。(4)判是否回车符?(5)是回车符则结束。(6)判是否为空格符?(7)与“0”比较。(8)小于等于0,则不响铃,重输入。(9)与“9”比较。(10)大于9,则不响铃,重输入。(11)ASCII码数转换成BCD码。(12)CX作响铃计数器。(13)调用02H号功能以调用输出响铃字符响铃。(14)返回DOS。程序执行后将在屏幕上显示提示行“键人数字键,回车或空格键返回”,然后紧接着是回车、换行,等待从键盘上输人一个ASCII码字符数据。如果是数字N(1~9),则响铃N次(每次有一定的延时以作间隔);若数字是0或者非数字,则不响铃;如果式回车或者空格键,则退至DOS。7.编写一个程序,实现把自1000H单元开始的100个字节的数据传送至1050H开始的存储区。答:ORG0000HSJMPMAINORG0100HMAIN:MOVR0,#1000H;MOVR1,#1050H;MOVR3,#64H;LOOP:MOVDPTR,R0MOVXA,@DPTRMOVDPTR,R1MOVX@DPTR,AINCR0INCR1DJNZR3,LOOPSJMP$