哈工大汇编语言程序设计考试_第1页
哈工大汇编语言程序设计考试_第2页
哈工大汇编语言程序设计考试_第3页
哈工大汇编语言程序设计考试_第4页
哈工大汇编语言程序设计考试_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈工大 2012 年 春 季学期汇编语言程序设计(A) 试 题 题号 一 二 三 四 五 六 七 八 九 十 总分分数第 1 页 (共 9 页)学号姓名一、 单项选择题(每小题 1 分,共 20 分)1外部硬件中断处理子程序在( C )处被执行(A)主程序 INT n 处 (B )任务调度时 (C)随机的 (D)RET 前2程序中的 2 进制、10 进制、16 进制数,在( A )时变成 2 进制( A)汇编时 (B)连接时 (C)执行时 (D)调试时3汇编语言语句与 C 语言语句对应关系不正确的是( B )(A)1 条 C 语言对应 1-N 条 ASM (B)1 条 ASM 语句对应 1-N 条 C 语言语句。(C)1 个 C 调用至少对应多条 ASM (D)ASM 与 C 可以互相调用4关于端口访问错误的是( C )(A)只能用 IN/OUT (B)用 IMM8 或 DX 访问 (C)端口与内存一样都是即可以读又可以写的。(D)一个端口可以对应接口电路内的多个物理寄存器5. 立即数寻址方式中正确的是( A )(A)此数在代码段 (B)此数在数据段(C)此数在堆栈段 (D)可以在此数前加 DS:或 CS:或 SS:6.关于微型机的时钟中断不正确的是( B )(A)每秒钟都会发生 (B)是 CPU 自动产生的(C)发生时需要执行一个中断子程序 (D)BIOS 会在内存 40:6C 的 DWORD 变量存储其从 0 点起中断的次数7微型机中的接口指( A )(A)除了 CPU、RAM、外设之外的部分 (B)主板后面的各接口插头(C)主板上所有的电路 (D)主板以及主板上的插卡8.下列传送指令中正确的的是( A )(A)PUSH ESP (B)MOV CS,1000H(C)INC 1122H (D)XCHG 1000,20009. Visual Studio 下汇编语言编程,CPU 的工作模式错误的是( D )(A)FLAT 模式 (B)32 位模式 (C)保护模式 (D)虚拟 86 模式10. Windows 下汇编语言程序设计的头文件中,不包含了大量的( D ) (A) 名字或类型定义 (B)结构 (C)子程序声明 (D) 子程序11. 关于 invoke 指令,错误的是( A )(A)是硬指令,CPU 可直接执行 (B)是一个宏 (C)可以用可变参数 (D 可以传变量,也可以是寄存器12中断发生时,断点内容不包括( B )(A) CS (B) SP (C) IP (D) 标志寄存器13Visual Studio 中,查看数组 buf 的所有元素,在 memory 窗口的地址栏中输入( B )(A)buf (B) 三、判断对错(每小题 1 分,共 10 分,在题前打 X 符号)27.( )代码标号后跟冒号,但是数据标号后没有冒号28.( X )汇编语言伪指令是在运行时执行的29.( )END main 表示程序到此结束,第一条指令为从 main 处开始执行30.( X)MOV 1234H,5AFEH31.( X)MOV DS,1000H32.( )NEG 指令不能设置溢出标志位33.( )宏比子程序方式参数使用起来简单多了34.( )C 语言子程序中不自己平衡堆栈35.( X)C 嵌入汇编时,可以使用 MACRO 宏36.( )汇编语言的乘法指令不会有溢出,但除法很容易溢出。四、简答题(每小题 2 分,共 20 分)37为什么发明 unicode,Windows2000/XP 使用哪一种 unicode?Unicode 是为了处理多于 256 个字符代码的国际字符集UTF-1638比较宏与子程序中参数、局部变量的物理实现及访问方式。宏:参数可以为寄存器、全局变量,声明时不指明类型。直接使用原形。局部变量用数据段的内存区来存储,可以赋初值。可以在程序中用变量原形访问。子程序:参数可以为寄存器、全局变量、堆栈。寄存器、全局变量用原形访问,堆栈方式用EBP+n方式访问,须指明类型。局部变量用堆栈实现,不能赋初值。用EBP-n 方式访问。39. 什么是堆栈,汇编中如何访问?程序设计中有什么用?堆栈是内存的一段存储区域,在 SS 段,ESP 为当前栈顶,采用先进后出 FILO 的形式进行访问。 汇编中用 PUSH/POP 指令访问堆栈。也可以用EBP+/-n方式堆栈可用以保存恢复临时数据,子程序调用的返回地址,中断的断点,函数的参数传递,局部变量,子程序中的现场保护或回复。40补码是什么,计算机的软硬件是怎么处理它的?补码是有符号数 x 在计算机中的表示方式,正数/0 的补码是其原码,负数的补码为2n-x 或反码+1。减去 x,可用加上-x补码来实现。编译或汇编程序把有符号数转换成补码,然后生成目标代码。CPU 并不知道此数的类型,只是按位加减,并同时设置 CF、OF 等标志。程序员知道数据的类型,根据运算结果选择 JC/JNC 或 JO/JNO 等。41RISC 和 CISC 是什么?各有什么特点?优缺点?RISC 是精简指令集,包含较少的简短(原子)指令,可以组合起来完成更复杂的操作。优点是执行速度快,利于并行化。但编译后指令多。CISC 是复杂指令集,包含比较多的指令,指令功能强。优点是编译后程序指令少。缺点是 CPU 解码指令时间长,不利于并行化。42. 程序调用时子程序中对参数做了调整,为什么返回主程序后传值的参数不改变,传地址的参数改变了呢?子程序被调用前,参数是压入堆栈的。在子程序中对参数做了调整,传值的参数只是修改了堆栈中的数,而实际的参数并没改动,而传地址的参数修改了此地址所指向的变量,所以实际上变量变化了。43. 在整个硬件中断的过程中 CPU 做了什么?CPU 在下一条指令执行前,检查 INT 是否为高电平,若是,则检查 CPU 中的标志寄存器的 IF 是否为 1,若是则向中断控制器发出中断响应。并读取其中断向量号 n。然后PUSHF/PUSH CS/PUSH IP/CLI /0:n*4+2-CS 0:n*4-ip 转向中断处理子程序44用串指令比较两个 20 个元素的字符串数组 S1,S2 的大小MOV ECX,20MOV ESI,offset S1 ;LEA ESI,S1MOV EDI,offset S2 ;LEA EDI,S2CLDREPZ CMPSB45编写汇编语句把 AL 中的值送入 BYTE 类型的数组 ARRAY ia ,其中 ia 是数组第 i 号元素中 i 的地址。MOV EBX,iaMOV AL,ARRAYEBX或 lea ebx,arraymov esi,iamov al,ebx+esi或 MOV EBX,iaMov al,iaxlat46C 语言中的指针变量,在汇编语言中对应为什么,是怎么样使用的?在汇编语言中对应一个内存变量的地址,都是 dword 类型(ptr TYPE) 。可以本变量名使用,也可以变量名,且效果是一样的。五、程序分析题(每小题 4 分,共 20 分)47. MOV EAX,0MOV ECX,10L1: MOV EAX,3MOV ECX,5L2: ADD EAX,5LOOP L2LOOP L1上述最后一条指令跟踪执行 2 次后,EAX=_28_,ECX=_0FFFFFFFFH_。48. MOV AX, 7896HADD AL, AHADD AL, 0F2HADC AX, 1234H上述程序段执行后 AX =_8A35H_,六个运算标志位_of=1 cf=0 zf=0_sf=1。pf=1 af=049.一个 32 位汇编子程序内容如下:PUSH EBPMOV EBP, ESPMOV EAX,EBP+8CMP EAX,EBP+12JG LMOV EAX,BP+12L:POP EBPRET请写出此子程序 f 的 PROTO 声明语句_f PROTO :DWORD,:DWORD本子程序完成的功能为_返回两个参数的最大值_。50.7: 8: strcpy(buf,s);00051279 8B 45 08 mov eax,dword ptr s (4)s地址=EAX0005127C 50 push eax (4)把s地址参数压栈0005127D 8D 4D F4 lea ecx,buf (5)buf地址=ecx00051280 51 push ecx (5)把buf地址参数压栈00051281 E8 E3 FD FF FF call ILT+100(_strcpy) (51069h) 00051286 83 C4 08 add esp,8 (6)平衡堆栈9: 00051289 5F pop edi (7)现场恢复0005128A 5E pop esi (7) 现场恢复0005128B 5B pop ebx (7) 现场恢复0005128C 8B E5 mov esp,ebp (8)用EBP恢复栈顶0005128E 5D pop ebp (8)恢复ebp0005128F C3 ret 六、编程(共 15 分)52编写宏 abs,返回参数 X 的绝对值( 5 分)abs macro x .if xendm注:允许其他答案。如 cmp/jmp 等53请采用 INVOKE/PROTO 模式,编写子程序 lshift 实现 BYTE 类型数组 buf 整体循环左移一个二进制位。子程序 lshift 的参数为 buf,count,其中 count 为 DWORD 类型,是数组元素的个数。( 10 分)Lshift proto buf:ptr BYTE,count:DWORDLshift PROC uses EAX EBX ECX, buf:ptr BYTE,count:DWORD (2 分 buf:DWORD 也对)MOV ECX,COUNT ;(1 分)MOV EBX,OFFSET bufADD EBX,ECXDEC EBX ;(2 分)MOV AL,buf ;(1 分)SHL AL,1 ;BT buf,7L: RCL BYTE PTR EBX,1 ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论