2013-2014学年第2学期《汇编语言程序设计》考试试卷。
a卷闭卷考试时间: 2024年5月 15 日。
专业班级学号学生姓名
一、填空题(共10分,每空1分)
1、访问存放在内存中的数据时,需要知道该数据的物理地址。在实方式下,设 (ds)=1000h, 则指令 mov ax, ds:[200h] 中源操作数的物理地址是。
2、堆栈也是内存中的一片数据存储区域,要访问栈顶元素,同样要知道其物理地址。在实方式下,设(ss)= 2000h, (sp)= 100 h,则栈顶元素的物理地址是。
3、一个内存单元的物理地址是唯一的,但是在写指令时,可以由多种方式表达出同一个单元的地址。例如,设在数据段(ds)中定义了变量 len dw 10h。 **段中有:
lea bx, len
mov si, 0
在这两条指令之后,可使用如下几种方式将len 中的内容送入 cx中。
用直接寻址方式 : mov cx
用寄存器间接寻址方式:mov cx
用变址寻址方式: mov cx
4、在访问一个内存单元时,除了知道其物理地址外,还应明确其类型,即明确以该地址取一个字节、一个字,还是一个双字。设buf dw 1122h, 3344h
则执行 mov cl, byte ptr buf 后, (cl
执行 mov cx, buf后cx
执行 mov ecx, dword ptr buf 后,(ecx
5、外部设备寄存器只能用i/o指令来访问。从端口地址60h输入一个字节到al中的指令为而“out 70h, al” 的功能是。
二、选择题(共10分,每空1分)
1、指令 mov [di], word ptr [si] 的错误原因是___
a) di不能用于寄存器间接寻址方式 (b) word ptr的用法错误
c) 两个操作数不能同时为存储器操作数 (d) 源操作数的类型不明确。
2、指令 add [cx], al 的错误原因是。
a) 两个操作数不能同时为存储器操作数 (b) 两个操作数的类型均不明确。
c) 两个操作数的类型不匹配d) cx 不能用于寄存器间接寻址方式。
3、指令 add [bx], 1000h 的错误原因是___
a) 两个操作数不能同时为存储器操作数 (b) 两个操作数的类型均不明确。
c) bx 不能用于寄存器间接寻址方式 (d) 源操作数不能用立即寻址方式。
4、指令 add ah, bx 的错误原因是___
a) bx, ah 的位置写反了b) 两个操作数的类型不匹配。
c) 两个操作数不能同时为存储器操作数 (d) 两个操作数的类型均不明确。
5、下面语句中,源操作数在堆栈段中且语法正确的指令是___
a) mov ax, ss:[sib) mov byte ptr [bp],
c) mov ss:[si], axd) mov byte ptr [si], bp]
6、 设len为符号常量,bufw 为字变量,下面语句中有语法错误的语句是___
a) mov bx, bufwb) mov bufw , len
c) lea bx , bufwd) mov len , bufw
7、不能用来访问外部设备寄存器的方法是。
a) mov 指令b) in / out 指令
c) dos 系统功能调用 (d) bios 功能调用。
8、 设(bx)=7000h, (cx)=2014h, 则执行 add bx,cx后,有___
a) sf=0,of=0b) sf=0,of=1
c) sf=1,of=0d) sf=1,of=1
9、设有bufb db 20,21 dup(0),现采用10号功能调用输入一个串到bufb缓冲区中。现要将实际输入串的长度送入bx中,正确的语句是。
a) mov bl, bufb+1 (b) mov bl, 20
c) mov bx, bufb+1 (d) mov bl, bufb+1
mov bh, 0
10、设 (bx)=2014h,cf=0 则执行循环左移指令 rol bx, 4后,有。
a) (bx)= 0142h, cf=0 (b) (bx) =0140h,cf=0
c) (bx)= 0142h, cf=1 (d) (bx) =0201h,cf=1
三、简答题(共10分)
1. 描述实方式下,cpu执行指令 int m 时,会进行哪些操作(包括从何处得到m号中断处理程序的入口段地址及偏移地址)。(5分)
2.简述基于窗口的windows程序中窗口主程序的核心工作流程。 (3分)
3. 设(ax)=9014h, (bx)=2014h, 紧跟在指令 cmp ax, bx 之后,有ja l1。试问“ja l1”,的转移条件是否成立(即执行该指令后,会不会转到l1处)?
2分)
四、问答题(共10分)
一个数据段定义如下:
data segment use16
x1 dw 5678h
x2 db ‘5678’
len equ $ x1
x3 dw x2
x4 db 2 dup (5)
data ends
请在右**中以字节为单位填写该数据在存储器的。
存放形式,并标明x1、x2、x3、x4所处的位置及。
偏移地址。 (7分)
2、执行如下指令后,寄存器的值是什么?(3分)
mov bx, len (bx
mov si, x3 (si
mov al, [si] (al
3、实方式下,设有如下程序: (10分)
buf db 20 dup (0)
invoke itoa, 1234h, 10, offset buf
mov dx, offset buf
itoa proc near stdcall num:word, radix:word, result:word
mov ax, num
mov bx, radix
retitoa endp
生成的机器**,反汇编的一部分结果如下:
cs:0005 push 001f
cs:0008 push 000a
cs:000a push 1234
cs:000d call 001b
cs:0010 mov dx, 001f
cs:001b push bp
cs:001c mov bp, sp
cs:001e mov ax, [bp + 04]
cs:0021 mov bx, [bp+ 06]
试以字节为单位画出刚进入子程序itoa 时(也即(ip)=001b时)的堆栈示意图,并在图中标出num, radix, result的位置。 (5分)
伪指令invoke 对应的机器指令是什么?参数是按什么顺序压入堆栈的?(3分)
在生成的目标**中,读取参数 num的值的语句是什么?(2分)
高地址 五、程序填空题(共10分,每空1分)
1. 子程序f2t16的功能是将(bx)中的内容以十六进制串的形式显示到屏幕上,请在程序空白处填入空缺的**。
tab db ‘0123456789abcdef’
f2t16 proc
pusha ;将8个16位通用寄存器压栈。
f2t16_lp:rol bx, 4;将bx循环左移4位。
mov si, bx
《汇编语言程序设计》试卷
姓名班级学号评分。一 判断题 10小题 以下各题中给出了一些86汇编语言语句,请对其合法性作出判定。合法的,记 否则,记 答案记于题后的括号中。不在括号中的内容一律不视为回答。使用其它符号或不能清晰辨认的记法作答被视为答错。不准涂改答案。否则,视为答错。1 mov es,word ptr absd ...
汇编语言程序设计试卷A
20 学年 学期。1 考试方式 闭卷 开卷 闭卷或课程小 请填写清楚 2 问卷内容 请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题 小题的题号 1 填空题 每空1分,共20分 1 设ss 1000h,sp 10h,ax bx 5678h,顺序...
汇编语言程序设计试卷
试卷 a4开卷 考试时间 90分钟 一 单项选择题 每小题4分,共40分 1 或 门中的某一个输入值为 1 那么它的输出值 a.为 0b.为 1 c.取决于正逻辑还是负逻辑 d.取决于其他输入端的值。2.设寄存器位数为8位,采用补码形式 含1位符号位 对应于十进制数 27,寄存器内容为 a.27h ...