您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 苏州大学2015汇编期末考试资料
选择题and填空题:10分/10个||12分/12个(1)MOV[SP],AX错:栈指针不能作为存储器指针引用的寄存器;作为存储器指针和间接寻址的寄存器,80X86只有4个:[BX]、[BP]、[SI]、[DI]。(2)PUSHCS对(3)POPCS错:POP目的操作数可以是通用寄存器和段寄存器,但CS例外。(4)MOV[BP],BX对(5)ADDECX,[ESP]对(6)JMPBX+100错:不能有+100(7)JMPCX对(8)ADD[BX],BX对(9)ANDAX,DS错:段寄存器不能参与AND运算(10)MOVAX,DS对,DS只能作为源操作数(11)MUL16错:操作源不能是立即数(12)ADDAL,[SI+DI]错:SI、DI不能组合(13)SUB[BP+DI-1000],AL对(14)ADDBH,[BL-3]错(15)XCHG[BP],ES错:ES不能作为源操作数(16)XCHGAL,ES:[BP]对(17)LEADI,[BX+DI]对(18)ROLCX,CL对(19)ADDCX,CL错:CL不能作为源操作数(20)MOVAL,300错:AL是8位,最多255(21)SUBDL,CF错:CF为进位标志,不能作为操作数(22)SUB[SI],[DI]错:不能同时为段寄存器(23)MOVIP,AX错:指针IP既不能作为源操作数,也不能作为目的操作数求出以下各十六进制数与十六进制数62A0的和,并根据结果设置标志位SF、CF、ZF和OF。(1)9D60(2)4321(3)CFA0答:(1)、10000SF=0、CF=1、CF=1、OF=0(2)、A5C1SF=1、CF=0、CF=0、OF=1(3)、13240SF=0、CF=1、CF=0、OF=0简答题:25分/5个1.冯洛伊曼体系结构特点1)采用二进制数的形式表示数据和指令2)将指令和数据存放在存储器中3)计算机硬件由控制器,运算器,存储器,输入设备和输出设备5部分组成2.简述计算机系统中复杂指令集和精简指令集的特点和用途复杂指令集特点:由于各条指令的复杂程度不同,分配的时钟周期各不相同,执行的指令所需的时间就不相同。用途:用于处理高精度的操作精简指令集特点:不管计算机的指令如何复杂都在一个计算机时钟周期内完成,计算速度快,指令集简单。用途:处理简单的操作3.随着80X86技术的进步,汇编指令集做了哪些扩展,其作用是什么?(1)浮点技术与指令解决CPU复杂度与总线等待的瓶颈(2)MUX技术与指令解决在CPU在处理图像视频,3D图形、动画、音频、虚拟现实的信息量大的瓶颈(3)SSE技术与指令解决互联网应用中数据量大、运算复杂的瓶颈(4)强化多媒体指令4.什么是寻址方式?8088cpu系统有哪几种寻址方式?5.请给出使标志CF清0的三种方法(用一条汇编指令实现)XORBX,BXANDBX,0ORDX,DX6.请给出使寄存器AX清0的三种方法(用一条汇编指令实现)MOVAX,0XORAX,AXSUBAX,AX7.请给出使寄存器BX加1的是哪种方法(用一条汇编指令实现)INCBXADDBX,1LEABX,WORDPTR[BX+1]8.阅读以下指令段,根据指令功能填写相应目标操作数的值。MOVEBX,95201378H;EBX=95201378HMOVEDX,-1;EDX=FFFFFFFFHXCHGBX,DX;EBX=9530FFFFH;EDX=FFFF1378HANDEDX,EBX;EDX=95201378H9.阅读以下指令段,根据指令功能填写相应目标操作数的值。XOREAX,EAX;EAX=00000000HMOVEDX,67892345H;EDX=67892345HXCHGDL,DH;EDX=67894523HSHRDX,6;DX=0114HANDECX,EAX;ECX=00000000H10.阅读以下指令段,根据指令功能填写相应目标操作数的值MOVEAX,43218756H;EAX=43218756HADDAH,AL;AX=EC65HROLEAX,8;EAX=21EC6543HORAH,AL;AH=67HCMPEBX,EAX;EAX=21EC6743H11.阅读以下指令段,根据指令功能填写相应目标操作数的值MOVEAX,931F3579H;EAX=931F3579HXOREDI,EDI;EDI=00000000HXCHGDI,AX;EAX=931F0000H;EDI=00003679HOREDI,EAX;EDI=931F3579H12.请比较过程调用指令call与无条件转移指令JMP,说明它们异同汇编语言中,JMP是无条件转移指令,CALL是子程序调用指令。指令JMP、CALL的区别在于,JMP指令控制程序直接跳转到目标地址执行程序,程序总是顺序执行,指令本身无堆栈操作过程。CALL指令跳转到指定目标地址执行子程序,执行完子程序后,会返回CALL指令的下一条指令处执行程序,执行CALL指令有堆栈操作过程。13.比较宏指令,伪指令,指令三者的区别:指令:每一条指令都对应一种CPU操作。伪指令又称为伪操作,它是在对源程序汇编期间由汇编程序处理的操作,它们可以完成如处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等功能。宏指令是由用户按照宏定义格式编写的一段程序,其中语句可以是指令、伪指令,甚至是已定义的宏指令。伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CPU来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。和各种指令一样,伪指令也是程序设计不可缺少的工具。宏是伪指令,宏的作用是把一个复杂的或者是不直观的语句或是组合用一个简单的、易记的形式表示,当编译器遇到源程序中的宏时,就把它定义的内容原封不动的copy过来。如果程序中使用100次宏,这段代码就被复制100次。因此,使用多次调用能使源程序变短,而不能使运行代码变短(子程序调用可以,但也增大系统开销)。伪指令(PseudoInstruction)不直接命令CPU去执行某一操作,而是告诉汇编程序如何生成目标代码。它不对应CPU的任一操作码,而是对应一段服务子程序。与指令的区别指令---CPU识别,伪指令---汇编程序识别指令---对应一个处理器操作,伪指令---对应一段子程序(多个操作)14.宏指令,宏定义的扩展:阅读程序题:10分/2个注释+运行结果:1.按15行*16列的列表形式显示ASCII码值为10H~FFH的所有字符,以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行(16列),每行中相邻两个字符间用空格(20H)隔开。START:MOVAX,DATASMOVDS,AXmovah,02hmovdl,10h;设置初始输出为ASCII的10hmovbl,15;输出显示为15行lop1:movcx,16;设置循环次数,16,表示输出显示为16列lop2:int21h;显示输出pushdx;将ASCII码为10h的元素推入堆栈movah,02hmovdl,0int21hmovah,02hmovdl,0int21h;显示空白符(重复两次是因为有两个空格)popdx;将栈顶元素推出incdl;这时dx存取的是ASCII元素的下一个元素looplop2;循环输出每行的16个ASCII元素pushdx;将下一行的首元素推入堆栈movah,02hmovdl,0dhint21hmovah,02hmovdl,0ahint21h;输出换行popdx;将栈顶元素推出decbl;行数减1cmpbl,0;比较确定是否已经输出15行元素jnelop1;若还未完成输出,则跳转至lop1,继续进行下一行元素的输出jeexit;否则退出程序exit:MOVAH,4CHINT21HCODESENDSENDSTART2.显示:###########################START:MOVAX,DATASMOVDS,AXmovDL,10hmovCX,3;行数初始值为3lop1:pushCXmovCX,9;先将cx设置为9(个数)lop2:movAH,02HMOVDL,'#'int21H;显示一个#pushDX;将#压入堆栈movDL,20HmovAH,02Hint21H;显示一个空格popDX;出栈looplop2pushDXmovDL,0dHmovAH,02Hint21HmovDL,0aHmovAH,02Hint21H;空格回车popDXpopCX;将cx的值又变回3looplop1MOVAH,4CHINT21HCODESENDSENDSTART*************#*#*#******######*#*#*#*************#*#*#******######*#*#*#*************#*#*#3.显示正三角:START:MOVAX,DATASMOVDS,AXmovBL,1;设置行数的初始值movBH,0;设置计数器的初始值lop1:movah,02movdl,'*'int21hincBH;计数器加一cmpBH,BL;比较行数和个数JAElop2;若个数高于或者等于行数回车换行looplop1;若个数小于行数继续输出*lop2:movah,02movdl,0dhint21hmovdl,0ahint21h;回车换行incBL;行数加一movBH,0;计数器清零CMPBL,5;比较行数是否超过5JNAlop1;若不高于5则跳转回lop1MOVAH,4CHINT21HCODESENDSENDSTART4.显示倒三角:MOVAX,DATASMOVDS,AXmovBL,5;设置行数的初始值movBH,0;设置计数器的初始值lop1:movah,02movdl,'*'int21hincBH;计数器加一cmpBH,BL;比较行数和个数JAElop2;若个数高于或者等于行数回车换行looplop1;若个数小于行数继续输出*lop2:movah,02movdl,0dhint21hmovdl,0ahint21h;回车换行decBL;行数减一movBH,0;计数器清零CMPBL,1;比较行数是否低于1JAElop1;若高于或者等于1则跳转回lop1MOVAH,4CHINT21HCODESENDSENDSTART5.START:MOVAX,DATASMOVDS,AXmovBX,0lop1:movcx,6lop2:movah,02movdl,'*'int21hlooplop2;显示6个*movah,02movdl,0dhint21hmovdl,0ahint21h;回车换行INCBX;相当于一个计行器CMPBX,5;比较行数JAEnext;若是计行器bx大于或者等于5那么就跳过下一个循环结束lop3:movcx,6lop4:movah,02movdl,'#'int21h;显示6个#looplop4movah,02movdl,0dhint21hmovdl,0ahint21h;回车换行INCBX;相当于一个计行器CMPBX,5;比较行数JNAElop1;若小于5则继续跳转到lop1的循环next:MOVAH,4CHINT21HCODESENDSENDSTART6.START:MOVAX,DATASMOVDS,AXmovBX,0lop1:movcx,6lop2:movah,02movdl,'*'int21hmovah,02movdl,'#'int21h;显示*#一次looplop2movah,02movdl,0dhint21hmovdl,0ahint21h;回车换行INCBX;相当于一个计行器CMPBX,5;比较行数JBlop1;若小于5则继续跳转到lop1的循环中MOVAH,4CHINT21HCODESENDSENDSTART1.试分析下面的程序段完成什么功能?(提示:观察DX:AX组成的双字的变化。)MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORD
本文标题:苏州大学2015汇编期末考试资料
链接地址:https://www.777doc.com/doc-2054114 .html