微机原理:
一、填空:
1.CPU的数据线有 根,可寻址__________字节。8086有__________根地址线,使用这20根地址线上不同地址信息的组合,可直接对__________个存储单元进行访问。
2.一块存储芯片的可寻址2KB,它起始地址是33000H,末地址是__________。
3.DRAM采用地址复用技术,共8条引脚,起始地址是60000H,末地址是__________。某DRAM芯片采用地址引脚复用技术,共有七条地址引脚。若它的首地址是0000H,则期末地址为__________。
4. 8086CPU的中断种类分为:__________。8086CPU的中断系统具有256个中断,每个中断用一个唯一的中断向量号标识。向量号也称为矢量号或类型号,它用一个字节表示:0 ~ 255,对应256个中断。8086的中断可以分成__________和__________两类。
5.对于8086CPU来说,若存取一个字节的数据,总是用__________来完成该操作;若存取一个字,则依该字__________需用__________来完成。
6.可屏蔽中断从CPU的__________引脚进入,只有当中断允许标志IF为 时,该中断才有可能得到响应。非屏蔽中断__________
7.MOS型半导体随机存储器可为__________和__________两种。后者在使用过程中每2MS内要刷新一次。
二、简答:
1.CPU采用数据线与地址线复用技术,请问如何将它们区别开来。
2.ROM与RAM的区别。
3.写出 INT 40H执行的过程。
4.什么是中断嵌套?
5.画出了两块存储芯片,要你写出寻址范围,问你是属于什么芯片,容量多大,把书上的例题看懂就好了。
三、指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。
(1) PUSH 1234H (2) MOV CS,AX
(3) IN AX, 300 (4) MOV AX,[DX+12]
(5) MOV BX,[BX] (6) MOV DS,1000H
(7) XCHG AL,AL (8) MOV AL,100H
(9) MOV DX,AL (10)LEA BL,[BX+5]
(11)LEA DX,BX (12)MOV [1000H],12H
(13)ADD AX,DS (14)SUB [0100H],BYTE PTR [0001]
(15)SHL BL,2 (16)SHR CL,CL
(17)MUL AL,BL (18)INT 400
四、编程
1. 8086/8088CPU中哪些寄存器可以用于I/O寻址?若I/O端口地址分别是10H和100H,分别写出向这两个端口写入73H的程序段。
2. 程序: 很简单的一个程序填空,好像是先从21H端口 读入一个状态,若D6为1,就将SHIFT里面的内容存入20H端口. 在8086系统下,编写实现如下功能的程序段:
(1)从地址为80H的端口中读入一个字节;
(2)如果该字节最高位为“1”,则将字节0FFH送到地址为81H的端口中,并退出程序;
(3)如果该字节最高位为“0”,则转向第(1)步,继续循环扫描。
电路:
根据元件电压、电流的相位关系知道,I(R)和U同相位,I(C)超前U90度,I(L)滞后U90度。
第四题的图画错了,应该是把右边的端子连起来,U2是2欧电阻上的电压)
C语言
一、判断题
1数组下标的数据类型可以是整形和枚举类型
2结果是0,1,2 For(i = 0;i<3;i++); Printf(“%d, ”,i);
3以下程序编译时有没有错误
#include<stdio.h>
#include<stdlib.h>
int main()
{
int freg[6] = {0}, i;
for(i =1, i <6;i++)
printf(“%4d ”,freg[i])
return 0; }
4 以下c语句是错误的
int x = 0;(x+1)++;
5 如果设int a[3][4];
(*p)[4] = a;可以用(*(p + i))[j] 访问到a[i][j]
二、读程序
1 以下程序有啥功能
#include<stdio.h>
int mystery(int a, int b);
int main()
{
int x,y;
printf("Enter two integer: ");
scanf("%d%d",&x,&y);
printf("The result is %dn ",mystery(x,y));
return 0;
}
int mystery(int a, int b)
{
if(b ==1)
return a;
else
return a + mystery(a,b -1);
}
2 程序输出是什么?
#include<stdio.h>
int f(int n)
{
return 5*n;
}
int f2(void)
{
int count = 0,k = 0;
for(;k<90;k+=3)
{
if(k%9 ==0) continue;
if(k%10 ==0) break;
count++;
}
return count;
}
int main()
{
printf("%d,%dn",f(f(f(2))), f2());
return 0;
}
三、写程序
编写程序,首先提示用户从键盘输入100个整数,之后将输入数据从小到大进行排序,最
后将数据从小到大输出,数字间以空格分开
微机原理笔试微机考的很简单,内容多而杂,记不得了,但大题是关于存储器的芯片地址范围,还有一道程序填空。电路考一道戴维宁,一道相量图,一道功率因数,一道二端口。c语言两道简单的读程序,一道较难的结构链表编程。内容基础,考的不深。