汇编模拟试题A

  • 格式:pdf
  • 大小:125.56 KB
  • 文档页数:5


2010-2011学年第1学期考试试卷(A)
课程名称: 汇编语言程序设计 共 2 页
考试时间: 120 分钟 总分: 100分 考试方式: 闭

适用专业(班级): 计算机科学与技术 班级
姓名 学号
注:答案必须写在答题纸上,并注明题号,例如
二、【1】、,否则成绩记为0。

一、选择题(单选,每小题2分,共10分)
1、8086/8088CPU的寄存器组中,8位的寄存器共有( c)个。
A、4 B、6 C、8 D、10
2、设(DS)=2000H,(ES)=3000H,(SI)=200H,指令”MOV ES:[SI],AL”目
的操作数的物理地址为(b )。
A、20200H B、30200H C、50200H D、200H
3、若定义”B DW 1,2,10 DUP(0)”,则该伪指令分配(d )个字节单
元。
A、10 B、20 C、22 D、24
4、下列指令正确的是(c )。
A、MOV CX,DL B、MOV IP,AX C、MOV AL,30H D、MOV
[SP],AX
5、Intel386以上的处理器工作在(a )下存储器的地址采用虚拟地址、
线性地址、物理地址3种方式来描述,需要通过一种称为描述符表的数
据结构来实现对内存单元的访问。
A、保护模式 B、系统模式 C、V86模式 D、实模式
二、填空题(每空 2分,共10 分)
1、8086/8088CPU的地址有20根(位),则可寻址的内存地址空间是
1M 。
2、如果(AL)=85H,(CL)=4,则执行指令”SAR AL, CL”后,(AL)=0f8h 。
3、语句”MOV BX,OFFSET A”可用LEA BX,A一条指令代替。
4、微机系统中数据传送方式主要 程序控制方式 、中断方式、直接存
储器存取DMA方式、通道和I/O处理机方式。
5、执行如下程序:
main( )
{printf(“display a character c: ”);
_ _asm mov ah,02h
_ _asm mov dl,’E’
_ _asm int 21h
}
输出结果: display a character c: E 。

三、程序分析题(每小题15分 共30分)
1、假设数据段中数据定义如下,执行下面程序段并回答问题。
data segment
var dw 'AB',12,34
var1 db 127,'ab',45
var2 dd 23
count equ $-var1
x dw count dup(count dup (0))
y label word
z db '123abc'
v dw 1234h,$-var
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,count ;(ax)=? ……………………….[1.1]
mov bx,z-x ;(bx)=? ………………………..[1.2]
mov cx,v+2 ;(cx)=? ………………………..[1.3]
mov dx,var ;(dx)=? ………………………..[1.4]
mov y+3,2
mov si,y+4 ;(si)=? ………………………..[1.5]
add z+5,1
mov di,word ptr z+4 ;(di)=? ………………………..[1.6]
mov ax,4c00h
int 21h
code ends
end start
2、设数据X、Y均为字节型变量,编写计算下面函数值的程序。
要求用JGE和JG实现程序功能,请完善下列程序。
.model small
.stack
.data

x db 4
y db ?
.code
.startup
cmp x,0
[2.1] ;当x>=0时,则转到next1
[2.2] ;当x<0时,-1→y
jmp quit
next1:
[2.3] ;当x>0时,则转到next2
[2.4] ;当x=0时,0→y
jmp quit
next2:
[2.5] ;当x>0时,1→y
quit:
.exit
end
四、程序解释题(每小题15分,共15分)
解释有标号语句在程序中的功能,例如:[1.0] 简化段定义,存储模
式为小模式small
1、从键盘接收一个无符号十进制数,存入变量array中。例如从键盘输
入:1234,则(array)=1234。
.model small ; [1.0] 简化段定义,存储模式为小模式small
.stack
.data ; [1.1]
array dw ?
.code
.startup
call decibin ; [1.2]
mov array,ax ; [1.3]
.exit
;子程序名:decibin
;功能:从键盘接收一个无符号十进制数
;入口参数:无
;出口参数:ax
;其他说明:在子程序内部使用cx存放已经接收到的十进制数,再读入
十进制数则:cx*10+al→cx,
;输入的数据在0~65535。
decibin proc near
push ax
push bx
push cx
push dx
xor cx,cx ; [1.4]
next:
mov ah,01h
int 21h ; [1.5]
cmp al,30h
jb finish ; [1.6]
cmp al,39h
ja finish ; [1.7]
and al,0fh
xor ah,ah ; [1.8]
xchg cx,ax ; [1.9]
mov bx,10
mul bx ; [1.10]
add cx,ax ; [1.11]
jmp next
finsh:
mov ax,cx ; [1.12]
pop dx
pop cx
pop bx
pop ax
ret ;[1.13]
decibin endp ; [1.14]
end ; [1.15]
五、编程题(1、2每小题10分,3小题15分,共35分)
1、试编制一个程序,求出首地址为array的200个字数组中的最小奇
数,并把它存入ax中。
2、 比较两个字符串str1和str2所含的字符是否相同,若相同则显
示”match!”,否则,显示”no match”。要求用cmp和loop实现,部分指令
如下,n1为字符串str1的字节数,n2为字符串str2的字节数。
.model small
.stack
.data
str1 db ‘Assembly Language’
n1=$-str1
str2 db ‘Assembly Language’
n2==$-str2
mess1 db “match!”,13,10,’$’
mess2 db “no match.”,13,10,’$’
…….
3、在以BUF为首址的字存储区中存放有N个有符号数,要求采用“选择
法”将它们按从大到小的顺序排列在BUF存储区中,试编写其程序。