五、分析设计题(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的连接,说明选哪些存储芯片,选多少片?
0 8191 8192 32767 63487 65535 8K(EPROM) 根据给定条件,选用EPROM:8K×8位芯片1片 SRAM:8K×8位芯片3片 2K×8位芯片1片 3:8译码器仅用Y0、Y1、Y2、Y3和Y7输出端,且最后的 2K×8位芯片1片还需加门电路译码。 30K(空) 2K(SRAM) 24K(SRAM) ????????????????????7分
汕 头 职 业 技 术 学 院 2007—2008学年第一学期期末试卷
(B)
课程名称 微机原理、汇编与接口技术 学分_ __ 拟题人 余正军、陈晓斌 审题人______
系(校区) 计算机系 班级 姓名 学号_ _
题号 得分 一 二 三 四 五 总分 一、单项选择题(每题2分,共20分) 题号 答案 1 2 3 4 5 6 7 8 9 10 1.8086 CPU内有指示下条指令有效地址的指示器是 A.IP B.SP C.BP D.SI 2.采用高速缓存(cache)的目的是
A.扩大主存容量 B.提高CPU运行速度 C.提高总线速度 D.提高主存速度
3.若8086 CPU主频为8MHz,则其基本总线周期为 A.200ns B.500ns C.125ns D.250ns
4.8086CPU复位后,CPU执行的第一条指令的起始地址应是 A.ROM,FFFF0H B.RAM,FFFF0H C.ROM,FFFFH D.RAM,FFFFH 5.外设与内存之间传送数据的方式应采用 。
A.无条件传送方式 B.查询传送方式 C.中断方式 D.DMA方式 6.下四种类型指令中,执行时间最长的是 。
A.RR型 B.RS型 C.SS型 D.程序控制指令 7.下列哪对指令是等价的?
A. JZ NEXT与JNE NEXT B. JA NEXT与JG NEXT
C. MOV AX,NEXT[BX][SI]与MOV AX,[SI+BX+NEXT] D. INC AX与ADD AX,1
8. 下列哪条指令将一个字节送给外设?
A. MOV DX,AL C. OUT DL,AL
B. OUT DX,AL D. MOV DL,AL
9. 下列哪条指令的执行结果会影响CX的值?
A. INT 10H B. JMP CX C. LOOP NEXT 10. 下列哪条指令为调用子程序的指令? A. LOOP lab B. CALL lab C. JMP lab
D. CALL lab
D. INT lab
二、分析解答题(前两小题每小题4分,第三小题6分,共14分)
1、简述三种输入输出控制方式(直接程序、中断和DMA)的实现方法及优缺点。
2、在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如:
PUSH AX\\
PUSH BX \\ 保护现场 PUSH CX / PUSH DX/
:
}恢复现场
试写出恢复现场时的指令序列。
3、回答下面问题:
(1)使用中断技术有什么好处?(2分) (2)中断系统应具有哪些功能?(2分)
(3)CPU对中断的响应过程有哪些?(2分)
答:(1)使用中断技术,使得外部设备与CPU不再是串行工作,而是并行、分时操作,从而大大提高了计算机的效率。
????????????????2分 (2)中断系统应该具有以下功能:①实现中断及返回;②实现优先权排队;③高级中断源能中断低级的中断处理。
???????????????2分 (3)CPU对中断的响应过程有:①关中断;②保留断点;③保护现场;④给出中断入口地址,转入相应的中断服务程序;⑤恢复现场;⑥中断返回。
????????????????2分
三、程序填空题(每空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 ;调用DOS显示上半部分信息 MOV AL,5 ;假设AL中的值为5,即第5位客户 MOV AH,2 ;设置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的阶乘
①__________________________;调用子程序 mov result,ax ;储存结果 mov result[2],dx mov ah,4ch int 21h main endp
factor proc near
;子程序开始
②___________________________;保存BX寄存器于堆栈之中 cmp bx,1 ;要求的是1的阶乘吗?
③___________________________;不是,则转 mov ax,1 mov dx,0
jmp factor_exit
;转结束处
bx_not_1: dec bx
;准备计算上一个数的阶乘
④___________________________;递归调用本子程序 inc bx ;结果再乘以当前的数
mul bx factor_exit: ⑤___________________________;从堆栈中恢复BX寄存器
ret factor endp code ends end start
四、汇编语言编成题(第1题12分,第2题13分,共25分)
1. 从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母。例如输入首字母a则输出最后一个字母z,输入第4个字母d则输出倒数第4个字母w。 code segment assume cs:code main:mov ah,1
int 21h ??????????????2分 mov dl,0DBH
sub dl,al ??????????????6分 mov ah,2
int 21h ??????????????2分 mov ah,4ch
int 21h ??????????????2分 code ends
end main