asm2013a(答案) 下载本文

内容发布更新时间 : 2024/5/6 16:12:13星期一 下面是文章的全部内容请认真阅读。

汇编语言程序设计(A) 试 题

题号 分数 一 二 三 四 五 哈工大 2013 年 春 季学期 班号 学号 姓名 六 七 八 九 十 总分

一、 单项选择题(每小题1分,共20分)

1. 将高级语言的程序翻译成机器码程序的实用程序是( A )

(A)编译程序 (B)汇编程序 (C)解释程序 (D)目标程序 2. DW类型数据-1,程序运行时在内存中表示为2进制的( C ) (A) 1000 0000 0000 0001 (B) 1111 1111 1111 1110 (C) 1111 1111 1111 1111 (D) 1111 1111 0000 0001

3. 某家庭网络光纤带宽为8M,表示其网络上每秒最快能传输8M( A )个信息 (A) BIT (B)BYTE (C)word (D)不确定,可由网络设备程序选择 4. Windows采用( B )Unicode编码

(A) UTF-8 (B)UTF-16 (C) DBCS (D)UTF-32 5. ‘A’与’a’的关系,正确的是( C )

(A)相等 (B) ‘A’>’a’ (C)‘a’>’A’ (D)‘a’-‘A’=20 6. 16位CPU,SP为 1000H,则 PUSH SP后,SS:[SP]= ( A ) (A)1000H (B)1002H (C)0FFEH (D)0010H

7. 32位flat模式下,指针变量 PP:ptr word,其占用( B )字节空间 (A)2 (B)4 (C)8 (D)与指针指向的数据类型有关 8. 汇编语言的访问层次正确的是( D )

(A)OS函数 (B)BIOS调用 (C)库函数 (D)如上所有及硬件 9. 指令译码执行时,立即数在内存( A )位置。

(A) 指令队列缓冲器 (B)代码段 (C)内部暂存器 (D)数据段 10. [BP] 与 [n]两个寻址方式,哪一个快( B )

(A) [BP] (B) [n] (C) 当n>bp时 [n]慢 [D]一样快

11. 13c1:1000 E2 ___ LOOP OFF0 ;注loop是短转移。( B ) (A)F0 (B)EE (C)10 (D)12 12. DS:1000处数据为 00 80 00 00 ??,且为sword 类型,则此变量值为( C ) (A) 0080 H (B) 8000 H (C) -32768 (D) -128 13. INT 21H执行时,段寄存器CS的值为( D )

(A)0:[21H] (B)0:[42H] (C)0:[84H] (D)0:[86H] 14. 结束中断处理程序的返回指令是 ( A )

A. IRET B. IRET n C. RET D. RET n 15. REPNZ SCASD 指令,搜索成功后,EDI的值正确的是( C )

(A) 与匹配元素的下标相同 (B) 与匹配元素的地址相同 (C) 与匹配成功元素的下一元素的内存地址相同 (D)A答案值*4

第 1 页 (共 8 页)

试 题:汇编语言程序设计 班号: 姓名:

16.宏与子程序比较,错误的是( C )

(A) 宏采用替换方法、子程序采用转移方法 (B)宏快、子程序慢

(C)宏的参数传递不如子程序方便灵活 (D)含宏的程序一般大、而子程序小 17.在中断发生时,进入子程序后,IF标志位值为( A )

(A)0 (B) 1 (C)保持主程序IF不变 (D)和中断类型有关

18.VS2010中,查看程序当前堆栈的内容,在memory窗口的地址栏中输入( B ) (A)ss (B)esp (C)ebp (D)ss:esp

19. 在执行“ADD AX,VAR ;VAR变量”时,CPU认为VAR是( C ) (A ) 有符号数 (B)无符号数 (C)不知道其类型 (D)和变量定义时类型一致 20. 下列指令正确的是( C )

(A)MOV DS,1000H (B) ADD [BX],1 (C) POP SP (D) INC [BX]

二、填空题 ( 每空1 分,共 10 分 )

21. 补码[0FFF8H]表示的十进制数为__-8___________。

22. Add Var,AX的机器指令执行经过取指、_译码_、取操作数、执行、写操作数5步。 23. 写一条汇编语句,CPU 在此处死循环_____JMP $___或_____L: JMP L____ 24. 供C调用的汇编源程序b.asm,其最后一行指令为_____end_________ 25. 求dd类型变量 v的相反数的指令 ______neg v___________

26. 将word类型变量v的第2个字节送到AL寄存器,指令____mov al,byte ptr[v+1]_ 27. 8位数80H与____80H___相加,使得OF=CF=1 80H~0FFH都可以 28. 一个C函数返回一个32位整数,其返回值存储在____EAX__________

29. 声明一个名为myArray包含20个dword的局部变量数组_myArray:dword[20] ___ 30. C函数printf在汇编语言中声明___printf proto c :PTR BYTE,:VARARG________

三、判断对错(每小题1分,共10分,在题前打√ X 符号)

31.( √ )Intel 的IA-32CPU都包含了一个8086/8088虚拟机 32.( X )汇编语言中,标号后面必须有“:”

33.( X )指令mov ax,4*9+2 的源操作数,需要先由编译程序生成几条汇编指令放在此指令前,计算出4*9+2的结果后再赋值给ax

34.( √ )伪指令由编译程序识别并执行相应的动作。而硬指令由CPU译码执行。 35.( X )字长为n的CPU只能做n位以下的加减法运算。 36.( X )float类型变量 比 int占用空间多

第 2 页 (共 8 页) 试 题:汇编语言程序设计 班号: 姓名:

37.( X )回车换行符的ASCII码是ODH

38.( X )完成同样的任务,递归过程通常比非递归过程使用更少的内存 39.( X)NOP是空操作指令,程序中的NOP指令都可以删除掉! 40.( √ )汇编语言的乘法指令不会有溢出

四、简答题(每小题2分,共20分)

41.请从虚拟机层级角度,阐述C语言与汇编语言间的解释或编译方式。

答: 在汇编语言虚拟机上,使用汇编语言编写的编译程序,对整个C语言程序源程序全部翻译成汇编语言程序,就能够在汇编语言虚拟机上运行。

42. 简述一个.asm程序,经过哪些软硬件处理,并最终是怎么在CPU运行的?

答:.asm先经过汇编(编译)程序翻译成.Obj机器语言目标文件,再经过连接程序生成.exe执行文件。 当用户选择或OS系统调度时,OS分析.exe确定其需要的数据段、代码段、堆栈段等的空间大小,在当前内存找到相应的各块空闲内存(可能需要把部分其他程序置换到虚拟内存的文件中),从内存装入数据、代码,并分配堆栈。将各段寄存器指向分配内存的起始,将堆栈指针初始化为栈底,并把指令指针寄存器置为.exe的第一条指令,从而交给CPU执行。CPU的BIU不停取指令到指令队列缓冲器,EU译码分析并执行指令。

43.简述实模式下逻辑地址如CS:IP到物理地址是在哪儿怎么转换的?并举例说明 答:在BIU的地址加法器中。 逻辑地址CS:IP经过地址加法器的如下运算:CS*10H+IP转换为物理地址。 如CS=1000H,IP=100H则CS:IP的物理地址为1000*10+100=10100H

44. 采用宏方式,从当前地址存放0,1,1,2,3,5,8,11 共100个斐波那契数。 V0=0 REPEAT 98 V0=V1 V1=1 V2=V0+V1 V1=V2 DQ V0,V1 DQ V2 ENDM

45. 说出基于汇编语言的程序优化的至少4种方式

答:尽量采用寄存器,少用内存变量; 尽量用快速的一条指令而不用几条代替指令

尽量用快的寻址方式; 尽量用快指令 如xor AX,AX

46. 使用stdcall调用约定的程序在过程调用后是如何清理堆栈的?

答:在子程序返回时采用 ret n 指令。 其中n=4*参数个数(32位flat模式)

47. 编写程序,通过堆栈实现DD类型的两个变量M、N,进行交换。 答: push M

第 3 页 (共 8 页)