微机原理及应用A试题集及其答案83488

发布时间 : 星期六 文章微机原理及应用A试题集及其答案83488更新完毕开始阅读

mov cmp ja mov shr

ebx,2

ebx,100 ;i循环入口 done ecx,ebx ecx,1 ;j=i/2

ecx,2 ;j循环入口

print eax,ebx ;xor edx,edx

iLoop:

jLoop: print:

cmp

jb mov cdq

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 mov eax,ebx call dispuid ;显示素数i的值 mov eax,offset blank

;显示空格 ;i=i+1

call dispmsg

nexti: inc ebx jmp iLoop done: call dispcrlf

ret

;返回操作系统

main endp ;主程序结束

end main ;end of assembly

3. 编程写一个完整的程序,将数组aray中的元素按逆序存放,要求程序中附加的变量最少。数据段的定义如下: .data aray dword 12,4, 168,122,-33,56,78,99,345, 66,-5

4. 编程写一个完整的程序,求数组aray中的最大值与最小值,并将它们分别存入max和min单元中。数据段的定义如下: .data aray dword 12,4,-168,122,-33,56,78,99,345,-66,-5 min dword ? max dword ? .code main proc ;主程序开始 mov eax,offset msg call dispmsg ;显示字符串 mov ecx,lengthof array ;数组元素的个数送ecx xor esi,esi ;esi间址指针

again: next:

mov ax,array[esi*type array] ;注意比例因子! cmp ax,array[esi*type array] jge next ;注意区分有符号数和无符号数! mov ax,array[esi*type array]

inc esi loop again

;esi指向下一个元素

movsx eax,ax call dispsid call dispcrlf ret

;注意符号位的扩展!

;返回操作系统

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 next: main end

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 inc ecx

.until (ecx>10000) ret

;返回操作系统

endp ;主程序结束 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循环入口

print: 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 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信号线表示( )

联系合同范文客服:xxxxx#qq.com(#替换为@)