还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
精品文档2013-2014学年第2学期《》考试试卷汇编语言程序设计
一、填空题共10分,每空1分评卷人得分
1、访问存放在内存中的数据时,需要知道该数据的物理地址在实方式下,设DS=1000H则指令MOVAXDS:[200H]中源操作数的物理地址是10200H
2、堆栈也是内存中的一片数据存储区域,要访问栈顶元素,同样要知道其物理地址在实方式下,设SS=2000HSP=100H则栈顶元素的物理地址是20100H
3、一个内存单元的物理地址是唯一的,但是在写指令时,可以由多种方式表达出同一个单元的地址例如,设在数据段DS中定义了变量LENDW10Ho代码段中有LEABXLENMOVSI0在这两条指令之后,可使用如下几种方式将LEN中的内容送入CX中用直接寻址方式MOVCXLEN用寄存器间接寻址方式MOVCX[BX]用变址寻址方式MOVCXLEN[SI]or0[BX]
4、在访问一个内存单元时,除了知道其物理地址外,还应明确其类型,即明确以该地址取一个字节、一个字,还是一个双字设BUFDW1122H3344H则执彳亍MOVCLBYTEPTRBUF后CL=22H执行MOVCXBUF后,CX=1122H执行MOVECXDWORDPTRBUFfsECX=33441122H
5、外部设备寄存器只能用I/O指令来访问从端口地址60H输入一个字节到AL中的指令为INAL60H而“OUT70HAL的功能是将AL的内容输出到端口地址为70H的外设INT21HMOVAX4C00HINT21H;;比较2个字符串,将使用3个寄存器AX、SLDISTRCMPPROCNEARPUSHBPMOVBPSPMOVSI[BP+4];字符串1的偏移地址MOVDI[BP+6];字符串2的偏移地址LP:MOVAL[SI]MOVAH[DI]CMPAX0JZLPEQ;2个字符串具有相同的长度,并且全部相同CMPAL0JZLPNEQ;字符串1结束但字符串2没有结束CMPAH0JZLPNEQ;字符串2结束但字符串1没有结束CMPAHALJNZLPNEQ;2个字符串相同位置的字符不相同INCSIINCDIJMPLPLPEQ:MOVAX1;2个字符串相等JMPLPEXITLPNEQ:MOVAX0;2个字符串不相等LPEXIT:POPBPRETSTRCMPENDPCODEENDSENDSTART精品文档.精品文档精品文档.寄存器精品文档.精品文档
二、选择题共10分,每空1分得分评卷人
5、下面语句中,源操作数在堆栈段中且语法正确的指令是AAMOVAXSS:[SI]BMOVBYTEPTR[BP]$CMOVSS:[SI]AXDMOVBYTEPTR[SI][BP]
6、设LEN为符号常量,BUFW为字变量,下面语句中有语法错误的语句是DAMOVBXBUFWBMOVBUFWLENCLEABXBUFWDMOVLENBUFW
7、不能用来访问外部设备寄存器的方法是AoAMOV指令BIN/OUT指令CDOS系统功能调用DBIOS功能调用
8、设BX=7000HCX=2014H则执行ADDBXCX后,有DASF=OOF=0BSF=OOF=1CSF=1OF=0DSF=1OF=
19、设有BUFBDB2021DUPO现采用10号功能调用输入一个串到BUFB缓冲区中现要将实际输入串的长度送入BX中,正确的语句是DoAMOVBLBUFB+1BMOVBL20CMOVBXBUFB+1DMOVBLBUFB+1MOVBH
010、设BX=2014HCF=0则执行循环左移指令ROLBX4后,有AABX=0142HCF=0BBX=0140HCF=0精品文档.精品文档CF=1DBX=0201HCF=1CBX=0142H
三、简答题共10分得分评卷人号中断处理INTm时,会进行哪些操作包括从何处得到ml.描述实方式下,CPU执行指令o5分程序的入口段地址及偏移地址状态寄存器压栈1先后压栈和IP2断点的CSCS和个字节送到IP3从物理地址为4*m和4*m+2的地方分别取2分WinMain
2.简述基于窗口的Windows程序中窗口主程序的核心工作流程3定义窗口变量并进行初始化,注册窗口类1创建窗口类2装载菜单等各种资源⑶进入消息循环从操作系统获取与本窗口程序有关的消息,若是退出消息则返回;否则对消息4进行分析并发送到本程序的窗口消息处理函数,然后转4”的转移条件是否L1AXBX后,“JG
3.设AX=9014HBX=2014H在执行指令CMP分,转移条件又是否成立?2成立?如果将“JGL1”换成“JALI”LIJA成立不成立LIJG分
四、问答题共10得分评卷人偏移地址oohXi78H01H56H:一个数据段定义如下
1.35H02HX2USE16TASEGMENTDA36H03H5678HXIDW37H04H5678X2DB38H5H$-XlEQULENX302H06HOOHX2DWX307HX4ENDSTADA请在右表格中以字节为单位填写该数据在存储器的、X
3、所处的位置及X4X2存放形式,并标明XI、7分)偏移地址(08H、、02H、06H00HX4X3X2X
1、、、的偏移地址分别是分)、执行如下指令后,寄存器的值是什么?(2306HMOVBXLEN(BX)=精品文档.精品文档MOVSIX3(SI)=0002HMOVAL[SI](AL)=35H10分)
3、实方式下,设有如下程序(BUFOFFSET1234H10BUFOFFSETDXMOVNUM:WORDRADIX:WORDRESULT:WORDPROCNEARITOASTDCALLNUMMOVAXRADIXMOVBXRETENDPITOA生成的机器代码,反汇编的结果如下001FPUSHCS:0005000APUSHCS:00081234PUSHCS:000A00IBCALLCS:000DDX001FMOVCS:0010BPCS:001BPUSHBPSPMOVCS:001CAX[BP+04]MOVCS:001EBX[BP+06]MOVCS:0021RADIX时的堆栈示意图,并在图中标出NUM试以字节为单位画出刚进入子程序
①ITOA分)RESULT的位置(5分)INVOKE伪执令对应的机器执令是什么?参数是按什么顺序压入堆栈的?(3
②分NUM的值的语句是什么?2在生成的目标代码中,读取参数
③BP=SP低地址BP-LBP-H10H+22CALL001B从右到左OOHNUM+434HAXJBP+04]3MOV12HRADIX+6OAHOOHRESULT+81FHOOH高地址精品文档.精品文档I分分,每空
五、程序填空题共10评卷人得分十六进制串的形式显示到屏幕上,请在程序空位L子程序F2T16的功能是将BX中的内容以4白处填入空缺的代码TABDB0123456789ABCDEFPROCF2T16位通用寄存器压栈8个16;将PUSHACX4MOV位;将BX循环左移4F2T16_LP ROLBX4BXSLMOVANDSIOFHTAB[SI]MOVDLMOVAH02H21HINTCXDECF2T16_LPJNZPOPA个字从堆栈弹出,送相应的寄存器8;将RETENDPF2T16请在程序空白处下面程序段的功能是统计
2、MSG中所含字符A中’的个数并送入变量COUNT填入空缺的代码ASSEMBLYLANGUAGEPROGRAMMINGDBMSGLENEQU$-MSGCOUNTDB0CXLENMOVMOVBL0MOVSIOFFSETMSGLP1:ACMP_[SI]LP2JNEINCBL―SILP2:INCDECCXJNZLP1MOVCOUNTBL精品文档.精品文档后,都是字类型的变量要求调用宏指令前、(X)+(Y)-Z其中XYZ、1设计宏指令D.ADD完成5分)所有通用寄存器中的内容保持不变(XYZMACROD_ADDAXPUSHAXXMOVAXYADDZAXMOVAXPOPENDM”的个数,统计1BX中“、编写程序段(只要核心代码,有关段定义、假定伪指令均不需要),统计2分)中要求程序段中不出现移位操作指令(5结果放在CXCXOMOVBXOLP1:CMPLP3JZBX8000HTESTLP2JZCXINCBXBXLP2:ADDLP1JMP
1.阅读程序,解答问题.386USE16SEGMENTDATAThisisatestprogram$STRDB0LENDBENDSDATAUSE16SEGMENTCODECS:CODEDS:DATAASSUMEDATAMOVAXBEGIN:AXDSMOVSTRMOVSIOFFSET精品文档.精品文档MOVCL0MOVAL[SI]LOP:$ALCMPEXITJESIINCCLINCLOPJMPEXIT:MOVLENCLMOVAH4CHINT21HCODEENDSBEGINEND
(1)该程序完成什么功能?(3分)统计字符串STR中第一个$字符前面的字符个数并存放到变量LEN中
(2)如果将INCSI漏写,结果如何?(2分)若STR中的第一个字符为巧’,则程序正常执行(结果为);否则死循环
2、阅读程序,解答问题CODESEGMENTUSE16ASSUMECS:CODEBEGIN:CALLOUTPUTLP1:DBVERYGOODODHOAH0LP2:CALLOUTPUTLP3:DBASSEMBLYLANGUAGE190LP4:MOVAH4CHINT21HRETENDPENDSEND1运行该程序后,屏幕上会显示什么?2分VERYGOODASSEMBLYLANGUAGE2第一次调用子程序,并执行子程序的RET指令后,程序会转移到何处?为什么?3分程序会转移到LP2因为子程序在EXIT处SI的内容为LP2的偏移地址,它被压入堆栈后紧接着执行RET指令,RET指令将从堆栈中弹出一个字到IP寄存器中,这时IP为LP2的偏移地址
八、程序设计20分评卷人得分设以BUF
1、BUF2为首地址的字节存储区中,均存放了以数字为结束标志的字符串试编写一个完整的程序,比较两个存储区中的字符串是否相同若相同,则显示SAME否则显示NOTSAMEo要求1比较两个串是否相同,要用子程序STRCMP来实现两个串的首地址要通过堆栈方式传递也即子程序从堆栈中获得两个要比较串的首地址若两个串相同,子程序返回AX=1;否则返精品文档.精品文档回AX=02在主程序中显示比较结果信息3写出子程序中寄存器的使用分配情况,并给出必要的注释4程序完整包括数据段定义、堆栈段定义、代码段定义等5BUF1BUF2中字符串的内容自己设定精品文档.精品文档STACKSEGMENTUSE16STACKDB200DUPOSTACKENDSDATASEGMENTUSE16BUF1DB1234abcd;0BUF2DB1234abc;0MSGOKDBSAME$MSGERRDBNOTSAME$DATAENDSCODESEGMENTUSE16ASSUMECS:CODEDS:DATASS:STACKSTART:MOVAXDATAMOVDSAXMOVAXOFFSETBUF2PUSHAXMOVAXOFFSETBUF1PUSHAXCALLSTRCMPMOVDXOFFSETMSGERRCMPAX0JZNEXTMOVDXOFFSETMSGOKNEXT:MOVAH9题号*—*四五六七八总分核对人题分1010102010101020100得分。