ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:593.95KB ,
资源ID:7877031      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7877031.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(苏州大学汇编期末考试资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

苏州大学汇编期末考试资料.docx

1、苏州大学汇编期末考试资料选择题and填空题:10分/10个|12分/12个(1)MOV SP,AX 错:栈指针不能作为存储器指针引用的寄存器;作为存储器指针和间接寻址的寄存器,80X86只有4个:BX、BP、SI、DI。(2)PUSH CS 对(3)POP CS 错:POP目的操作数可以是通用寄存器和段寄存器,但CS例外。(4)MOV BP,BX 对(5)ADD ECX,ESP 对(6)JMP BX+100 错:不能有+100(7)JMP CX 对(8)ADD BX,BX 对 (9)AND AX,DS 错:段寄存器不能参与AND运算(10)MOV AX,DS 对,DS只能作为源操作数(11)M

2、UL 16 错:操作源不能是立即数(12)ADD AL,SI+DI 错:SI、DI不能组合(13)SUB BP+DI-1000,AL 对(14)ADD BH,BL-3 错(15)XCHG BP,ES 错:ES不能作为源操作数(16)XCHG AL,ES:BP 对(17)LEA DI,BX+DI 对(18)ROL CX,CL 对(19)ADD CX,CL 错:CL不能作为源操作数(20)MOV AL,300 错:AL是8位,最多255(21) SUB DL,CF 错:CF为进位标志,不能作为操作数(22)SUB SI,DI 错:不能同时为段寄存器(23)MOV IP,AX 错:指针IP既不能作为

3、源操作数,也不能作为目的操作数求出以下各十六进制数与十六进制数62A0的和,并根据结果设置标志位SF、CF、ZF和OF。 (1)9D60 (2)4321 (3)CFA0 答:(1)、10000 SF=0、CF=1、CF=1、OF=0 (2)、A5C1 SF=1、CF=0、CF=0、OF=1 (3)、13240 SF=0、CF=1、CF=0、OF=0简答题:25分/5个1.冯洛伊曼体系结构特点1) 采用二进制数的形式表示数据和指令2) 将指令和数据存放在存储器中3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5部分组成2.简述计算机系统中复杂指令集和精简指令集的特点和用途 复杂指令集

4、特点:由于各条指令的复杂程度不同,分配的时钟周期各不相同,执行的指令所需的时间就不相同。用途:用于处理高精度的操作 精简指令集特点:不管计算机的指令如何复杂都在一个计算机时钟周期内完成,计算速度快,指令集简单。用途:处理简单的操作3.随着80X86技术的进步,汇编指令集做了哪些扩展,其作用是什么?(1)浮点技术与指令 解决CPU复杂度与总线等待的瓶颈(2)MUX技术与指令 解决在CPU在处理图像视频,3D图形、动画、音频、虚拟现实的信息量大的瓶颈(3)SSE技术与指令 解决互联网应用中数据量大、运算复杂的瓶颈(4)强化多媒体指令4.什么是寻址方式?8088cpu系统有哪几种寻址方式?5.请给出

5、使标志CF清0的三种方法(用一条汇编指令实现) XOR BX , BX AND BX, 0 OR DX, DX6.请给出使寄存器AX清0的三种方法(用一条汇编指令实现) MOV AX, 0 XOR AX, AX SUB AX, AX7.请给出使寄存器BX加1的是哪种方法(用一条汇编指令实现) INC BX ADD BX , 1 LEA BX , WORD PTRBX+18阅读以下指令段,根据指令功能填写相应目标操作数的值。 MOV EBX,95201378 H ;EBX=95201378H MOV EDX,-1 ;EDX=FFFFFFFFH XCHG BX,DX ;EBX=9530FFFFH;

6、EDX=FFFF1378H AND EDX,EBX ;EDX=95201378H 9阅读以下指令段,根据指令功能填写相应目标操作数的值。 XOR EAX,EAX ;EAX=00000000H MOV EDX,67892345H ;EDX=67892345H XCHG DL,DH ;EDX=67894523H SHR DX,6 ; DX= 0114H AND ECX,EAX ;ECX= 00000000H10阅读以下指令段,根据指令功能填写相应目标操作数的值 MOV EAX,43218756H ;EAX=43218756H ADD AH,AL ; AX=EC65H ROL EAX,8 ; EAX

7、= 21EC6543H OR AH,AL ; AH= 67H CMP EBX,EAX ; EAX=21EC6743H 11阅读以下指令段,根据指令功能填写相应目标操作数的值 MOV EAX,931F3579H ;EAX=931F3579H XOR EDI,EDI ;EDI=00000000H XCHG DI,AX ;EAX=931F0000H;EDI=00003679H OR EDI,EAX ;EDI=931F3579H12.请比较过程调用指令call与无条件转移指令JMP,说明它们异同汇编语言中,JMP是无条件转移指令,CALL是子程序调用指令。指令JMP、CALL的区别在于,JMP指令控制

8、程序直接跳转到目标地址执行程序,程序总是顺序执行,指令本身无堆栈操作过程。CALL指令跳转到指定目标地址执行子程序,执行完子程序后,会返回CALL指令的下一条指令处执行程序,执行CALL指令有堆栈操作过程。13比较宏指令,伪指令,指令三者的区别:指令:每一条指令都对应一种CPU操作。伪指令又称为伪操作,它是在对源程序汇编期间由汇编程序处理的操作,它们可以完成如处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等功能。宏指令是由用户按照宏定义格式编写的一段程序,其中语句可以是指令、伪指令,甚至是已定义的宏指令。伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CP

9、U来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。和各种指令一样,伪指令也是程序设计不可缺少的工具。宏是伪指令,宏的作用是把一个复杂的或者是不直观的语句或是组合用一个简单的、易记的形式表示,当编译器遇到源程序中的宏时,就把它定义的内容原封不动的copy过来。如果程序中使用100次宏,这段代码就被复制100次。因此,使用多次调用能使源程序变短,而不能使运行代码变短(子程序调用可以,但也增大系统开销)。伪指令(Pseudo Instruction)不直接命令CPU去执行某一操作,而是告诉汇编程序如何生成目标代码。它

10、不对应CPU的任一操作码,而是对应一段服务子程序。与指令的区别指令-CPU识别,伪指令-汇编程序识别指令-对应一个处理器操作,伪指令-对应一段子程序(多个操作)14.宏指令,宏定义的扩展:阅读程序题:10分/2个注释+运行结果:1.按15行*16列的列表形式显示ASCII码值为10HFFH的所有字符,以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行(16列),每行中相邻两个字符间用空格(20H)隔开。START: MOV AX,DATAS MOV DS,AX mov ah, 02h mov dl, 10h ;设置初始输出为ASCII的10h mov bl, 15 ;

11、输出显示为15行lop1: mov cx, 16 ;设置循环次数,16,表示输出显示为16列lop2: int 21h ;显示输出 push dx ;将ASCII码为10h的元素推入堆栈 mov ah, 02h mov dl, 0 int 21h mov ah, 02h mov dl, 0 int 21h ;显示空白符(重复两次是因为有两个空格) pop dx ;将栈顶元素推出 inc dl ;这时dx存取的是ASCII元素的下一个元素 loop lop2 ;循环输出每行的16个ASCII元素 push dx ;将下一行的首元素推入堆栈 mov ah, 02h mov dl, 0dh int

12、21h mov ah, 02h mov dl, 0ah int 21h ;输出换行 pop dx ;将栈顶元素推出 dec bl ;行数减1 cmp bl, 0 ;比较确定是否已经输出15行元素 jne lop1;若还未完成输出,则跳转至lop1,继续进行下一行元素的输出 je exit ;否则退出程序exit: MOV AH,4CH INT 21HCODES ENDSEND START2.显示:# # # # # # # # # # # # # # # # # # # # # # # # # # #START: MOV AX,DATAS MOV DS,AX mov DL,10h mov CX

13、,3 ;行数初始值为3lop1: push CX mov CX,9 ;先将cx设置为9(个数)lop2: mov AH,02H MOV DL,# int 21H ;显示一个# push DX ;将#压入堆栈 mov DL,20H mov AH,02H int 21H ;显示一个空格 pop DX ;出栈loop lop2 push DX mov DL,0dH mov AH,02H int 21H mov DL,0aH mov AH,02H int 21H ;空格回车 pop DX pop CX ;将cx的值又变回3loop lop1 MOV AH,4CH INT 21HCODES ENDSEN

14、D START* * * * * * * * * * * * * # * # * #* * * * * * # # # # # # * # * # * #* * * * * * * * * * * * * # * # * #* * * * * * # # # # # # * # * # * #* * * * * * * * * * * * * # * # * #3.显示正三角: START: MOV AX,DATAS MOV DS,AX mov BL,1 ;设置行数的初始值 mov BH,0 ;设置计数器的初始值 lop1: mov ah,02 mov dl,* int 21h inc BH

15、;计数器加一 cmp BH,BL ;比较行数和个数 JAE lop2 ;若个数高于或者等于行数 回车换行 loop lop1 ;若个数小于行数 继续输出* lop2: mov ah,02 mov dl,0dh int 21h mov dl,0ah int 21h ;回车换行 inc BL ;行数加一 mov BH,0;计数器清零 CMP BL,5 ;比较行数是否超过5 JNA lop1 ;若不高于5 则跳转回lop1 MOV AH,4CH INT 21HCODES ENDSEND START4.显示倒三角:MOV AX,DATAS MOV DS,AX mov BL,5 ;设置行数的初始值 mo

16、v BH,0 ;设置计数器的初始值 lop1: mov ah,02 mov dl,* int 21h inc BH ;计数器加一 cmp BH,BL ;比较行数和个数 JAE lop2 ;若个数高于或者等于行数 回车换行 loop lop1 ;若个数小于行数 继续输出* lop2: mov ah,02 mov dl,0dh int 21h mov dl,0ah int 21h ;回车换行 dec BL ;行数减一 mov BH,0;计数器清零 CMP BL,1 ;比较行数是否低于1 JAE lop1 ;若高于或者等于1 则跳转回lop1 MOV AH,4CH INT 21HCODES ENDS

17、END START5. START: MOV AX,DATAS MOV DS,AX mov BX,0 lop1: mov cx,6 lop2: mov ah,02 mov dl,* int 21h loop lop2 ;显示6个* mov ah,02 mov dl,0dh int 21h mov dl,0ah int 21h ;回车换行 INC BX ; 相当于一个计行器 CMP BX,5 ;比较行数 JAE next;若是计行器bx大于或者等于5那么就跳过下一个循环结束 lop3: mov cx,6 lop4: mov ah,02 mov dl,# int 21h ;显示6个# loop l

18、op4 mov ah,02 mov dl,0dh int 21h mov dl,0ah int 21h ;回车换行 INC BX ; 相当于一个计行器 CMP BX,5 ;比较行数 JNAE lop1 ;若小于5则继续跳转到lop1的循环 next: MOV AH,4CH INT 21HCODES ENDS END START6.START: MOV AX,DATAS MOV DS,AX mov BX,0 lop1: mov cx,6 lop2: mov ah,02 mov dl,* int 21h mov ah,02 mov dl,# int 21h ;显示*#一次 loop lop2 mo

19、v ah,02 mov dl,0dh int 21h mov dl,0ah int 21h ;回车换行 INC BX ; 相当于一个计行器 CMP BX,5 ;比较行数 JB lop1 ;若小于5则继续跳转到lop1的循环中 MOV AH,4CH INT 21HCODES ENDSEND START1.试分析下面的程序段完成什么功能?(提示:观察DX:AX组成的双字的变化。) MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,B完成了DX:AX双字的逻辑左移4位的操作。2.假设X和X+2单元的内容为32位有符号数,Y和Y+2单元的内

20、容为32位有符号数(X和Y为低位字),试说明下列程序段的功能。 MOV DX,X+2 CMP AX,Y MOV AX,X JBE L2 ADD AX,X L1:MOV AX,1 ADC DX,X+2 JMP SHORT EXIT CMP DX,Y+2 L2:MOV AX,2 JL L2 EXIT:MOV AH,4CH JG L1 INT 21H比较X和x+2单元的有符号数的两倍与y和y+2单元的有符号数的大小若前者大于后者,则将AX记为1,否则将ax记为2编写程序题:44分/4个1.混合运算表达式:计算如下表达式的值:(W*X)/(Y+6)、(W*X-3)/Y的指令段假设X、Y、W均为16位带

21、符号数,分别存放在名为XXX、YYY和WWW的变量存储单元中,表达式的结果将存放在名为DDD(商)和RRR(余数)的变量存储单元中。2.C语言改编为汇编语言设有如下所示的C+语言编写的函数,这个函数的功能是计算1到n的和。为了较好地说明有关指令的应用,所以采用了一个循环,并安排了两个局部变量。 _fastcall test25( int n ) int sum, i; sum = 0; for ( i = 1; i = n; i+ ) sum += i; return sum; 采用 C+编译器,得到如下所示16位的目标代码。其中,符号“SHORT”表示转移目标就在附近,相对转移时机器码中只要

22、用一个字节表示差值。 MOV CX, AX ;把存放在AX中的参数n存到CX中 XOR BX, BX ;使代表变量sum的BX为0(sum = 0;) MOV AX, 1 ;使代表变量i的AX为1(i = 1;) JMP SHORT LAB114 ;无条件转移到标号LAB114处LAB5: ADD BX, AX ;累加(sum += i;) INC AX ;(i+)LAB114: CMP AX, CX ;比较i和n JLE SHORT LAB5 ;当i=n,则转移到LAB58处,继续 循环 MOV AX, BX ;把返回值保存到AX中 RET ;返回到调用者,这里代表函数test25结束返回设

23、有如下所示的C+语言编写的函数,试用80X86汇编语言编写与此相对应的程序段。_fastcall test24( int x,int y ) x =0 ;y =1 ; while (y=10 ) y*=2; x+=y; return x ; 试用汇编语言编制程序段完成如下所示的C+语言编写的函数(设SUM参数保存在EAX中,i参数保存在ECX中):C+语言编写的函数如下:int test11( void ) int sum, i; sum = 0; for ( i = 0; i = 3) x = x +1; else if ( x=-1) x= x-1; else x=x; return x;

24、 用汇编语言编制程序段完成如下所示的C+语言编写的函数(设X参数保存在EBX中) _fastcall test24( int x ) if ( x =15) x= x; else x=x+3; return x; 子程序:1) 功能:把1位十六进制数转换为对应的ASCII码;入口参数:设欲转换的1位十六进制数在AL的低4位中;出口参数:转换得到的ASCII码在AL中HTOASC PROC AND AL, 0FH ADD AL, 30H CMP AL, 39H JBE HTOASC1 ADD AL, 7HTOASC1: RETHTOASC ENDP2) 功能:把把16位二进制数转换为4位十六进制

25、数的ASCII码 (位十六进制数转换为位对应的ASCII码);入口参数:DX含欲转换的16位二进制数;出口参数:EBX含转换得到的4位十六进制数的ASCII码HTASCS PROC MOV ECX, 4 HTASCS1: ROL DX, 4 ;循环左移4位(二进制位) MOV AL, DL ;复制出低4位 CALL HTOASC ;转换得ASCII码 ROL EBX, 8 MOV BL, AL LOOP HTASCS1 ;重复4次 RETHTASCS ENDP3) ;子程序名:UPTOLW;功 能:把大写字母转换为小写字母;入口参数:AL字符ASCII码;出口参数:AL字符ASCII码;说 明

26、:如果字符是大写字母,则转换为小写字母,其他字符不变UPTOLW PROC PUSHF ;保护各标志 CMP AL,A JB UPTOLW1 CMP AL,Z JA UPTOLW1 ADD AL,a-AUPTOLW1:POPF ;恢复各标志 RETUPTOLW ENDP4) 功能:测量字符串的长度(设字符串以0结尾);入口参数:待测字符串在BUFF中;出口参数:EAX=字符串长度STRLEN PROC PUSH EBX PUSH ECX LEA EBX, BUFF XOR ECX, ECXSTRLEN1: MOV AL, EBX INC EBX OR AL, AL JZ STRLEN2 INC

27、 ECX JMP STRLEN1STRLEN2: MOV EAX, ECX POP ECX POP EBX RETSTRLEN ENDP;功能:测量字符串的长度(设字符串以0结尾);入口参数:待测字符串在BUFF中;出口参数:EAX=字符串长度STRLEN PROC PUSH EBX LEA EBX, BUFFSTRLEN1: MOV AL, EBX INC EBX OR AL, AL JNZ STRLEN1 MOV EAX, EBX LEA EBX, BUFF SUB EAX, EBX DEC EAX POP EBX RETSTRLEN ENDP功能:测量字符串的长度(设字符串以0结尾);入

28、口参数:EBX = 待测字符串的首地址;出口参数:EAX = 字符串长度STRLEN PROC PUSH EBX STRLEN1: MOV AL, EBX INC EBX OR AL, AL JNZ STRLEN1 MOV EAX, EBX POP EBX SUB EAX, EBX DEC EAX RETSTRLEN ENDP5) 例7:把16位无符号二进制数转换为5位十进制数的ASCII码串。;入口参数:AX = 16位无符号二进制数 EBX = 用于存放ASCII串的缓冲区开始地址 ;出口参数:无算法:采用循环除10的方法。低位(个位)在右(高地址),高位(万位)在左(低地址)的次序存放BTOASC: MOV ESI, 5 MOV CX, 10LAB1: XOR DX, DX DIV CX ADD DL, 30H

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1