char byte ?
anyKey byte 13,10,'press any key to continue ...',0 ;字符串 .code
main proc ;主程序开始 mov ecx,10 mov ebx,ecx .repeat
xor esi,esi mov eax,ecx .while (eax!=0) xor edx,edx div ebx imul esi,10 add esi,edx .endw
cmp esi,ecx jne next
mov eax,ecx call dispuid call dispcrlf next: inc ecx
.until (ecx>10000)
ret ;返回操作系统
main endp ;主程序结束
end main ;end of assembly 10. 编程写一个名为Prime的子程序,用于测试一个整数是否是素数,主子程序间的参数传递通过堆栈完成。调用Prime子程序求出2~100之间的所有素数,并将它们存入Parray数组中,素数的个数存入变量Pcounter中。 include io32.inc .data
msg byte ' List of prime number',13,10,0 blank byte ' ',0 .code
main proc ;主程序开始
mov eax,offset msg call dispmsg mov ebx,2
iLoop: cmp ebx,100 ;i循环入口 ja done
mov ecx,ebx shr ecx,1 ;j=i/2
jLoop: cmp ecx,2 ;j循环入口 jb print mov eax,ebx
cdq ;xor edx,edx
div ecx ;被除数送eax,32位除法 or edx,edx ;cmp edx,0
jz nexti ;if i mod j=0 then goto next i dec ecx jmp jLoop print: mov eax,ebx
call dispuid ;显示素数i的值 mov eax,offset blank call dispmsg ;显示空格 nexti: inc ebx ;i=i+1 jmp iLoop done: call dispcrlf
ret ;返回操作系统
main endp ;主程序结束
end main ;end of assembly
11. 编程写一个名为Gcd的求两个数最大公约数子程序,主子程序间的参数传递通过堆栈完成。调用Gcd子程序求出三个双自变量:dvar1、dvar2与dvar3的最大公约数并输出。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。
12. 在一个已知长度的字符串中查找是否包含“BUG”子字符串。如果存在,显示“Y”,否 则显示“N”。 显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。13. 已知一个字符串的长度,剔除其中所有的空格字符。请从字符串最后一个字符开始逐个向前判断、并进行处理。
14. 编写一子程序,将一个32位二进制数用8位十六进制形式在屏幕上显示出来。采用堆栈方法传递这个32位二进制数,并写主程序验证它。显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。
15. 编程写一个名为Bubble的冒泡排序子程序,主子程序间的参数传递通过堆栈完成;并写主程序验证它。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。
第6章 微机总线
一.选择
1. 地址总线为20位的微处理器可直接寻址的最大范围是( )。 A 1MB B 16MB C 64MB D 4GB
2. 8086的INTR信号线表示( ) A 可屏蔽中断响应 B 不可屏蔽中断 C 可屏蔽中断 D不可屏蔽中断响应 3. 当控制线READY=0时,应在( )之间插入等待周期Tw A T1和T2之间 B T2和T3之间 C T3和T4之间 D 任何时候 4. 8086的NMI信号线表示( ) A 可屏蔽中断响应 B 不可屏蔽中断 C 可屏蔽中断 D不可屏蔽中断响应 5. 8086的READY信号线表示( ) A 就绪 B 复位 C 时钟 D 测试 6. 8086的HOLD信号线表示( ) A 总线请求 B 总线响应 C 中断请求 D 中断响应 7. 8086的写总线周期在T1状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 8. 8086的写总线周期在T2状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D检测数据传送 9. 8086的写总线周期在T3状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 10. 8086的写总线周期在T4状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 11. MB/s的含义是 ( ) A 总线上每秒传输的最大数据量 B 总线上每秒传输的最大字节量 C 总线上每秒传输的二进制位数 D 总线上每秒传输的十进制位数
12. 总线上每秒传输的最大字节量称为 ( ) 。 A 总线位宽 B 总线字宽 C 总线带宽 D 数据位数 13. 串行通信适用于微机间 ( )的数据传送。 A 不同类型 B 同类型 C 近距离 D 远距离 14. 并行通信适用于微机间 ( )的数据传送。 A 不同类型 B 同类型 C 近距离 D 远距离 15. USB是一种 ( ) A 通用的串行总线接口 B 通用的并行总线接口 C 新型的微机内部总线 D 新外设标准插头 二.名词解释
1. 芯片总线:大规模集成电路芯片内部或系统中各种不同器件连接在一起的总线. 2. 内总线:微机系统中功能单元与功能单元间连接的总线.
3. 外总线:微机系统与其外设或微机系统之间连接的总线
4. 总线仲裁:确定使用总线的主模块,目的是避免多个主模块同时使用时占用总线,确保任何时候总线上只有一个模块发送信息.
5. 总线带宽:单位时间传送的数据量,也成总线
6. 总线时序:描述总线信号随时间变化的规律以及总线信号的相互作用. 7. 指令周期:一条指令在处理器中从取旨、译码到最终执行完成的过程 8. 总线周期:伴随着数据交换的总线操作
9. 机器周期:完成一个基本工作所需要的时间。 10. 时钟周期:每个时钟脉冲的持续时间。
11. 存储器读:处理器从存储器读取代码或操作数。 12. 存储器写:处理器向存储器写入操作数。 13. I/O读:存储器从外设读操作数 14. I/O写:存储器向外设写操作数
15. ALE:地质所存允许,是一种三态输出高电平有效的信号 三.判断
1. 低电平有效是指信号为低电平时候表示信号的功能。T
2. 处理器读取存储器操作数时和读取代码时,都发生存储器读的总线操作。T
3. 8086准备好READY引脚输出给存储器或外设有效信号,表明处理器准备好交换数据了。F 4. 8086总线周期的T1状态发出地址,属于总线操作的寻址阶段。T
5. 总线操作的同步时序是指总线操作的各个过程由共用的总线时钟信号控制。T
6. 总线操作的半同步时序是指总线操作仍由共用的总线时钟信号控制,但慢速模块可以通 过等待信号让快速模块等待。T
7. 总线操作的异步时序是指总线操作需要握手(Handshake)联络(应答)信号控制,总线 时钟信号可有可无。T
8. 能够控制总线传输信息的设备称为从设备。F 9. 处理器引脚是典型的芯片总线。T
10. 现代微型计算机采用分级总线结构,以适应不同部件的要求。T 11. 高性能总线都支持数据块传送,即猝发传送。T 12. 某一时刻可以有多个主模块控制总线。F 13. 总线类似于一个“公路网”,通过不同的总线把系统内的各个模块连接起来。T 14. 总线信号并不是各自独立发挥作用,而是相互配合实现总线操作。T
15. 处理器通过引脚对外操作主要有存储器读,存储器写,I/O读,I/O写四种操作。T 四.填空
1. 某个处理器具有16个地址总线,通常可以用A____0____表达最低位地址信号,用A__15__ _____表达最高地址信号。
2. 8086有3个最基本的读写控制信号,它们是___RD____和___WR____。
3. 8086执行指令“MOV AX, [BX]”时,在其引脚上将产生__存储器读___总线操作;执行指令“MOV [BX], AX”时,在其引脚上将产生_存储器写___总线操作。 4. 8086无等待的总线周期由_4__个T状态组成,Pentium无等待的总线周期由2个T状态组成。
5. 占用总线进行数据传输,一般需要经过总线请求和仲裁、_寻址__、_数据传送_和结 束4个阶段。
6. 总线按照信号分类可以分为数据总线,_地址总线__,_控制总线__。
7. 总线按照信号分类可以分为__________,__________,控制总线。 8. 总线按照数据传输方式分为并行总线_和_串行总线_ 。
9. 8086处理器的数据总线为16位,时钟频率为5MHz,那么实现一次16为数据传送的总线带宽是_20?10b/s。而对于系统时钟频率为66MHz的Pentium处理器来说,其2-1-1-1的猝发传送周期用5个时钟传送32个字节数据,则其总线带宽是422.4MB/S 。
10. 通常情况下,我们用AB表示地址总线,那么DB表示数据总线, 用CB_表示控制总线。 11. 位于集成电路内部的总线被称为芯片总线。用于同一块印刷电路板上的总线是内总线。 12. 总线仲裁的方法有用 集中仲裁和分布仲裁。
13. 通常总线带宽与位宽成正比,如果总线的频率为88MHz,总线的位宽为8位,则总线的带宽应为__________。
14. 外部总线也称为通信总线,其表现形式是位于微机后面板上的一些 __________ 。 15. IA32处理器进行串行传送时,需要___1___根传输线;并行传送时,每个数据位都需 要 ____1_条单独的传输线。 五.简答题
1. 为什么称处理器的数据总线是双向的? 数据总线承担着处理器与存储器、外设之间的数据交换既可以输入也可以输出故其是双向的 2. 8086的地址和数据总线为什么要分时复用?
为减少引脚个数,8086采用了地址总线和数据总线分时复用。即数据总线在不同时刻还具有地址总线的功能。
3. 具有三态能力的引脚输出高阻意味着什么?
相当于连接了一个阻抗很高的外部器件,信号无法正常输出;即放弃对该引脚的控制,与其它部件断开连接。
4. 总线周期中的等待状态是个什么工作状态?
处理器的运行速度远远快与存储器和I/O端口。处理器检测到存储器或I/O端口不能按基本的总线周期进行数据交换时,插入一个等待状态Tw。等待状态实际上是一个包车总线信号状态不变的时钟周期
5. 猝发传送是一种什么传送?
处理器只提供首地址。但可以从后续连续的存储单元中读写多个数据
6. 8086处理器的输入控制信号RESET,HOLD的含义各是什么?当它们有效时,8086 CPU将出现何种反应?
RESET:复位输入信号,,高电平有效。该引脚有效时,将迫使处理器回到其初始状态;转为无效时,CPU重新开始工作。
HOLD:总线请求,是一个高电平有效的输入信号。该引脚有效时,表示其他总线主控设备向处理器申请使用原来由处理器控制的总线。
7. 8086处理器的输入控制信号NMI和INTR的含义各是什么?当它们有效时,8086 CPU将出现何种反应?
NMI:不可屏蔽中断请求,是一个利用上升沿有效地输入信号。该引脚信号有效时,表示外界向处理器申请可屏蔽中断。
INMI:可屏蔽中断请求,是一个利用高电平有效的输入信号。该引脚信号有效时,表示中断请求设备向处理器申请可屏蔽中断。
8. 总线数据传输为什么要进行总线仲裁?
总线上可能连接多个需要控制总线的主设备,但任一时刻总线上只能有一个模块发送信息。总线仲裁可以确定使用总线的主模块,用以避免多个主模块同时占用总线
6