loop
again
movsx eax,ax ;注意符号位的扩展! call call ret
dispsid dispcrlf
;返回操作系统
main endp ;主程序结束
end main ;end of assembly(最大值)
5. 编程写一个完整的程序统计msg中的空格的个数与小写字母的个数,并分别将它们存入space单元与char单元中。数据段的定义如下:
.data
msg byte 'I love XUT !',13,10,0 space dword ? char dword ?
6. 编程写一个完整的程序,将字符串msg中所有的小写字母转换为大写字母。数据段的定义如下:
.data
msg byte 'I love XUT !',13,10,0
7. array是一无符号数数组,数据段的定义如下。要求:编程写一个完整的程序求出数组元素中偶数的和,并将它存入esum单元中。
.data
array
dword
12,34,123,78,43,234,79,86,98,20
esum dword ?
8. “回文串”是一个正读和反读都一样的字符串,比如“eye”、“level”、“noon”等。请写一个程序测试一字符串是否是“回文”, 是“回文”则显示“Y”,否则显示“N”。 显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。
9. 回文是指正读和反读都一样的数或文本。例如:11、121、12321等,编写程序,求10到10000之间所有回文数并输出。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。 include io32.inc .data
blank byte
' ',0
;字符串
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 div imul add
edx,edx ebx esi,10 esi,edx
.endw cmp esi,ecx jne next mov eax,ecx call
dispuid
call dispcrlf
next: inc ecx
.until (ecx>10000) ret
;返回操作系统
main end
main ;end of assembly
10. 编程写一个名为Prime的子程序,用于测试一个整数是否是素数,主子程序间的参数传递通过堆栈完成。调用Prime子程序求出2~100之间的所有素数,并将它们存入Parray数组中,素数的个数存入变量Pcounter中。 include io32.inc .data
msg
proc ;主程序开始
eax,offset msg ebx,2
ebx,100 ;i循环入口 done ecx,ebx ecx,1
print eax,ebx
;j=i/2
mov mov ja mov shr
byte
' List of prime number',13,10,0 ' ',0
blank byte
endp ;主程序结束
.code main
call dispmsg
iLoop: cmp
jLoop: cmp jb mov
ecx,2 ;j循环入口
cdq div or jz dec jmp
;xor edx,edx
;被除数送eax,32位除法
ecx
edx,edx ;cmp edx,0
nexti ;if i mod j=0 then goto next i ecx jLoop
;显示素数i的值
;显示空格 ;i=i+1
print: mov
call mov
eax,ebx dispuid
eax,offset blank ebx iLoop dispcrlf
call dispmsg jmp
nexti: inc done: call main
ret
;返回操作系统
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位的微处理器可直接寻址的最大范围是( )。 应
3. 当控制线READY=0时,应在( )之间插入等待周期Tw 应
5. 8086的READY信号线表示( )
A 就绪 B 复位 C 时钟 D 测试
A 总线请求 B 总线响应 C 中断请求 D 中断响应
A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 A 完成数据传送 B 输出地址 C 输出控制信号 D检测数据传送 A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 A 总线上每秒传输的最大数据量 B 总线上每秒传输的最大字节量 C 总线上每秒传输的二进制位数 D 总线上每秒传输的十进制位数
A 总线位宽 B 总线字宽 C 总线带宽 D 数据位数 A 不同类型 B 同类型 C 近距离 D 远距离 A 不同类型 B 同类型 C 近距离 D 远距离 A 通用的串行总线接口 B 通用的并行总线接口 6. 8086的HOLD信号线表示( ) 7. 8086的写总线周期在T1状态( ) 8. 8086的写总线周期在T2状态( ) 9. 8086的写总线周期在T3状态( ) 10. 8086的写总线周期在T4状态( ) 11. MB/s的含义是 ( )
A T1和T2之间 B T2和T3之间 C T3和T4之间 D 任何时候
A 可屏蔽中断响应 B 不可屏蔽中断 C 可屏蔽中断 D不可屏蔽中断响A 1MB B 16MB C 64MB D 4GB
A 可屏蔽中断响应 B 不可屏蔽中断 C 可屏蔽中断 D不可屏蔽中断响2. 8086的INTR信号线表示( )
4. 8086的NMI信号线表示( )
12. 总线上每秒传输的最大字节量称为 ( ) 。 13. 串行通信适用于微机间 ( )的数据传送。 14. 并行通信适用于微机间 ( )的数据传送。 15. USB是一种 ( )
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____表达最低位地址信号,