mov ah,9
int 21h mov dx,offset str2 int 21h mov ah,4ch int 21h
code ends end start
2、已知内存中已经有一个整型数组储存有10个学生的成绩如下:
score db 92,72,54,83,65,56,78,49,67,38 要求编程计算这些同学中,分数在[60,80]闭区间内的人数,结果储存在变量count(字
节型)中,并计算他们的平均成绩储存在average(字节型)中。 data segment
score db 92,72,54,83,65,56,78,49,67,38 count db 0 average db 0 data ends code segment
assume cs:code,ds:code
main: mov ax,code mov ds,ax mov cx,10
mov bx,offset score n1: mov al,[bx]
inc bx cmp al,60 jb n2 cmp al,80 ja n2
nc count
add average,al n2: loop n1
mov al,average
mov ah,0 mov bl,10 div bl
mov average,al mov ah,4ch int 21h
code ends end start
五、分析设计题(15分)
CPU的地址总线16根(A0-A15,A0为低位),双向数据总线8根(D0-D7),控制总线中主存有关的信号有MREQ,R/W。主存地址空间分配如下:0-8191为系统区,由只读存储芯片组成,8192-32767为用户程序区;最后(最大地址)2K地址空间为系统程序工作区。现有如下存储芯片:
EPROM:8K×8位(控制端仅有CS)
SRAM:16K×1位,2K×8位,4K×8位,8K×8位
请从上述芯片中选择适当芯片设计计算机主存储器,画出主存储器逻辑框图,注意画出选片逻辑(可选用门电路及3:8译码器74LS138)与CPU的连接,说明选哪些存储芯片,选多少片?
汕 头 职 业 技 术 学 院 2007—2008学年第一学期期末试卷
(D)
课程名称 微机原理、汇编与接口技术 学分___ 拟题人 余正军、陈晓斌 审题人______
系(校区) 计算机系 班级 姓名 学号_ _
题号 得分 一 二 三 四 五 总分 一、单项选择题(每题2分,共20分) 题号 答案
1 2 3 4 5 6 7 8 9 10 1. 8位二进制数可以表示( B )个数。 A. 128 B. 256 C. 65536 D. 11111111 2. 能被计算机直接识别的语言是(C )。 A. 高级语言 B. 汇编语言 C. 机器语言 D. 自然语言
3. 下列哪个寄存器属于数据寄存器?( C )
A. BP B. SP C. CX D. SI 4. 下面哪个寄存器用于保存当前栈顶地址?( A ) A. SP B. IP C. SS D. BP
5. 指令MOV WORD PTR [BX+COUNT],12H 是( B )。 A. 字节操作 B. 字操作 C. 双字操作 D. 位操作
6. 下面哪个指令属于控制转移指令?( A ) A. JC B. TEST C. PUSH D. STOS 7. 下列哪个寄存器属于指针及变址寄存器?( C )
A. BX
B. CX
C. BP D. IP
8. 下列哪条指令使用寄存器间接寻址方式( C )? A. MOV AL,5 B. MOV AX,[BX][DI] C. MOV AX,[BX] D. MOV AX,COUNT[BP][DI] 9. 下列哪条指令执行后会影响数据寄存器的值?( D )
A. LOOP NEXT
B. XOR AX,0
C. OR CX,CX D. JMP NEXT 10. 从子程序返回的指令是(C )。
A. INT C. RET
B. CALL D. IRET
二、分析解答题(前两小题每小题4分,第三小题6分,共14分)
1、在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如:
PUSH AX\\
PUSH BX \\ 保护现场
PUSH CX / PUSH DX/
:
}恢复现场
试写出恢复现场时的指令序列。
2、D1 DB 20H DUP(?) D2 DW D1
请写出用一条指令实现取D1的偏移地址=>SI中的三种方法。
3、回答下面问题:
(1)80x86中断分为哪两类?各包含哪些中断类型?(2分)
(2)什么叫做中断(技术)?(2分)
(3)若采用8259A中断控制器级联的方式来处理中断,最多能连接多少块8259A?最多能连接多少个中断请求?(2分)
(1)80x86中断分为外部中断与内部中断两类。外部中断又分为可屏蔽中断与非屏蔽中断;内部中断分为除法错误中断、软件中断、单步中断等。除法错误中断,软件中断,单步中断
(2)所谓中断,是指计算机在正常运行过程中,由于种种原因,使CPU暂时停止当前程序的执行,而转去处理临时发生的事件,处理完毕后,再返回去继续执行暂停的程序。也就是说,在程序执行过程中,插入另外一段程序运行,这就是中断。
(3)采用8259A中断控制器级联的方式来处理中断,最多能能连接9块8259A,其中1块为主片,8块为从片。由于每块8259A能连接8个中断请求,因此最多能连接64个中断请求。
三、程序填空题(每空2分,共26分)
1、假设X和X+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q,X、Y为低位字。下列程序段使2P>Q时(AX)=1,2P<=Q时(AX)=2。请将程序段填写完整。 MOV DX,X+2 MOV AX,X ADD AX,X ADC DX,X+2 CMP DX,Y+2
① JL L2 ② JG L1
CMP AX,Y
③ JBE L2
L1: MOV AX,1 JMP EXIT
L2: MOV AX,2 EXIT:??
2、下面一段程序,显示出“你是第N位客户”这个信息,其中,N是从1-9之间的数字,事先储存在AL中。下面程序假设AL中的值是5,并且显示的信息是英文的,如下: Hello, you are Nth guess. (说明:其中的N为1-9的数之一) 在下面空白处填入相应的内容。 start:JMP begin
message1 db 'Hello, you are $' message2 db 'th guess.$'
begin: PUSH CS POP DS MOV ①_____________,9 ;设置DOS调用的功能号 MOV DX,②_________________________;该功能要求填入字符串的起始地址
INT 21H MOV AL,5 MOV AH,2 ;调用DOS显示上半部分信息
;假设AL中的值为5,即第5位客户 ;设置DOS调用的功能号
MOV DL,AL ;把要显示的数字设置好
ADD DL,30H ;转换为字符的ASCII码
INT ③_______________ ;调用DOS显示一个数字,代表第N位客户 MOV AH,9 ;准备显示下半部分信息,先设置功能号
MOV DX,④________________________;设置下半部分的偏移地址 ⑤_____________________;调用DOS显示下半部分信息
MOV AH,4CH INT 21H ;结束程序
3、采用递归调用的方式编写一个求阶乘的子程序,然后在主程序中求出9的阶乘的值。程
序如下:
;求9!,采用递归调用的方法
code segment
assume cs:code,ds:code,ss:code main proc far result dw ?,? ;结果将放在此处 start:
push cs pop ds mov bx,9
;要求出9的阶乘
①________call factor__________________;调用子程序 mov result,ax ;储存结果
mov result[2],dx mov ah,4ch int 21h main endp
factor proc near ;子程序开始
②________push bx___________________;保存BX寄存器于堆栈之中 cmp bx,1 ;要求的是1的阶乘吗?
③________jnz bx_not_1___________________;不是,则转 mov ax,1 mov dx,0
jmp factor_exit
;转结束处
bx_not_1: dec bx
;准备计算上一个数的阶乘
④____call factor_______________________;递归调用本子程序 inc bx ;结果再乘以当前的数 mul bx
factor_exit: ⑤________pop bx___________________;从堆栈中恢复BX寄存器
ret factor endp code ends end start
四、汇编语言编成题(第1题12分,第2题13分,共25分)