汇编语言程序设计A卷

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

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

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

资源描述

共7页第1页2011级汇编语言程序设计课程试题(A卷)合分人:复查人:一、填空题(每空1分,共15分)分数评卷人1.用汇编语言书写的程序叫做,MASM要求该文件的扩展名是,编写32位Windows应用程序应选择存储模型。2.汇编语言语句有两种,分别是和。3.除外设数据外的数据寻址方式有3类,分别称为、和寻址。4.进行Windows应用程序开发时,需要库文件,执行该应用程序时,则需要对应的库文件。5.汇编语言与C和C++语言有两种混合编程方法,分别是和。6.IA-32处理器有个32位通用寄存器,有个段寄存器,段寄存器都是位的。二、判断题(每题1分,共10分)分数评卷人1.Windows的模拟DOS环境与控制台环境是一样的。()2.“TYPEDX”的结果是一个常量,等于2。()3.数据扩展的基本原则是位数加长,数值大小不变。()4.指令的相对寻址都是近转移。()5.JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。()6.CALL指令的执行必然影响堆栈指针ESP。()7.在宏定义中,LOCAL伪指令声明标识符;而在过程定义中,LOCAL伪指令用于分配局部变量。()8.指令“OUTDX,AX”的两个操作数均采用寄存器寻址方式。()9.MASM32软件包既支持32位图形界面应用程序的开发,也支持控制台应用程序开发。()10.程序终止执行也就意味着汇编结束,所以两者含义相同。()题号一二三四五六七总分分数共7页第2页三、按下面要求写出相应的数据定义语句或汇编指令(变量名可任意指定)(每小题2分,共12分)分数评卷人1.定义字符串变量:assemblylanguage2.定义20个未赋值的字变量3.定义符号常量str,表示字符串assemblylanguage4.定义用十六进制数表示的双字变量:205.用寄存器EBX和ESI的基址变址寻址方式把存储器的一个双字与EAX寄存器的内容相加,并把结果送回存储器中。用一条汇编指令完成该功能。6.用一条汇编指令实现将寄存器EAX和标志位CF、OF同时清零。四、程序分析与阅读题(共28分)分数评卷人1.根据数据段定义的变量,分析下列指令的运行结果并填在空格里(每空1分,共8分).dataarrayqword1234567887654321h.codemoveax,dwordptrarray;EAX=_______movebx,dwordptrarray+4;EBX=_______subal,bl;EAX=_______,CF=_______,OF=_______;ZF=_______,SF=_______PF=_______2.指出如下语句的错误,并改正(其中var1和var2是两个双字变量)(每小题2分,共8分)①addeax,bx②movvar1,var2共7页第3页③pushal④mov[ebx],1003.有如下程序片断,请使用一条指令实现该程序段所完成的功能(每小题2分,共4分)①moveax,ebxmovebx,[edi]mov[edi],eax__________②moval,[esi]mov[edi],alincesiincedi__________4.如下程序段实现在一个已知长度(长度为count)的串string中查找是否存在子串bug的功能,如果找到则显示“Y”,否则显示“N”。请在空白处填上恰当的语句。(每空2分,共8分)movecx,countmovedi,offsetstringL1:movesi,offsetbugpushedimovedx,sizeofbugLN:moval,[esi]__________jneL2incesiincedi__________jneLNpopedimoval,'Y'__________L2:popedi__________loopL1moval,'N'L3:calldispc共7页第4页五、编程题:(共35分)分数评卷人1.(5分)将调用字符串输入子程序readmsg编写成一个宏readstring,其中宏的参数是输入缓冲区的名称msg,实际输入字符的个数存入ecx寄存器中。子程序名参数及功能说明READMSG入口参数:EAX=缓冲区地址功能说明:输入一个字符串(回车结束)出口参数:EAX=实际输入的字符个数(不含结尾字符0)共7页第5页2.(8分)编程直接调用Windows控制台API函数显示“Hello,Assembly!”。控制台API函数位于动态连接库KERNEL32.DLL中,标准输出句柄值:-11,常用函数说明如下:VOIDExitProcess(DWORDuExitCode//exitcodeforallthreads);HANDLEGetStdHandle(DWORDnStdHandle//input,output,orerrordevice);WriteConsole参数第一个:控制台输出句柄实例第二个:指向字符串的指针、即缓冲区地址第三个:指明字符串长度第四个:指向一个整数变量,返回实际输出的字符数第五个:保留,设置为0共7页第6页3.(10分)使用DOS系统功能编写DOS应用程序,要求如下:提示“Inputnumber:0~9”,等待用户输入字符。如果用户按下数字字符则退出,如果用户按下非数字字符则继续等待输入字符。要求写出完整的源程序代码,不要使用输入输出子程序。DOS基本功能调用表如下所示:子功能号功能入口参数出口参数AH=01H从标准输入设备输入一个字符AL=输入字符的ASCII码AH=09H向标准输出设备输出一个字符串DX=字符串地址AH=4CH程序执行终止AL=返回代码共7页第7页4.(12分)请用子程序实现将字符串“AreyousureyoucanpassintheAssemblyexam?”中的英文字母进行大小写互换,即如果是大写则转换成小写,如果是小写则转换成大写。对字符串中的非英文字母不做任何处理。在主程序中显示出转换后的结果,要求用主程序对子程序调用完成,利用堆栈传递入口参数,写出完整的主程序、子程序代码,并加上必要的注释。

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

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

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

×
保存成功