汇编模拟试题A
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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