2024年汇编语言程序设计试卷A

发布 2021-12-19 23:21:28 阅读 1887

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 ...