微机原理及应用习题道_第1页
微机原理及应用习题道_第2页
微机原理及应用习题道_第3页
微机原理及应用习题道_第4页
微机原理及应用习题道_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与应用习题1. 求ADDRI开始单元中连续存放的两个双字数据之和,将结果存放在ADDR2开始的单元,并将结果在显示器上显示出来。(假定和不超过双字)2. 在一个首地址为STR、长度为N的字符串中查找“空格”,找到则向DL中送1,否则向DL中送-1。3. 将两位十六进制数转换成ASCII码,并送屏幕显示,要求使用顺序结构实现。4. 使用分支结构实现将1位十六进制数转换成ASCII码。假设需要转换的十六进制数已存放在AL的低4位上,转换结果仍存放到AL中。5. 一个32位数存放在以数据段的BUF单元开始的位置。编写子程序统计该数中含“1”的个数,并将其结果存入RSLT字节单元。6. 用查表

2、法将1位十六进制数转换成相应的ASCII码,并将结果送屏幕显示。7. 将数据段中首地址为ADDR、长度为N的一组数据加1,并送回原处。8. 将数据段ADDR1地址处的200个字节数据,传送到数据段地址为ADDR2处。9. 编写程序,已知有某字串BUF1的首址为2000H,并且数据段与附加段重合。欲从BUF1处开始将20个字数据顺序传送至BUF2处。10. 有First和Second开始的2个长度相等的字符串,交换2个字符串的内容。11. 编写程序能够完成矩阵A与向量B相乘,结果存放在向量C中。已知:矩阵,向量。提示:对于计算公式为:;汇编语言程序采用双循环结构。12. 假设在内存BUF为首地址

3、的数据区中,有50个字节的无符号数,编一程序能够找出数据块中的最大者,并把它送至MAX单元中。13. 编写程序,给一串字符加上奇校验位,采用堆栈传递参数。14. 编写程序,分别将M1、M2、M3中两个压缩型BCD码求和,并将结果保存。15. 编写程序,求ARRAY开始的100个带符号字节数据的绝对值,结果放在Result开始的100个字节中。16. 查找字符串String中是否有“A”这个字符,如果有“A”,显示“Yes”,结束程序,若不含“A”则显示“No”,结束程序。17. 编程把BUF开始的10个正数升序排序,结果放在Result中。18. 假设从内存BUF单元起有若干学生成绩,成绩以“

4、*”结束。按照10090为优、8975为中等、7460及格、60以下为不及格,编写一程序,完成统计各分数段学生人数。19. 编写一个过程,完成统计DX中“1”的个数,并将结果送CX中。20. 一个8位带符号二进制数X存放在内存单元BUF中,试根据下列函数关系编写程序求Y值,并将结果存入RESULT单元。21. 编写程序对在数据段BUF1地址起存放一串字符个数进行统计,串结束标志为-1,并将统计的结果放到CX中。22. 编写一个完整的汇编程序,把50个字节数组中的正数、负数、零挑选出来,分别将正数、负数存入正数、负数数组,并计算其中正数、负数和零数据的个数,存入内存变量中。23. 编写一个完整的

5、汇编程序,统计数据段中存放的15个带符号的字数据(首地址TABLE)中正数、负数和零的个数,分别将个数存放在PLUS、MINUS和ZERO单元,并将正数、负数和零的个数在微机屏幕上以十六进制数的形式显示出来。24. 编写一个完整的汇编程序,自BUF开始的内存缓冲区中有N (N255)个字节为带符号的二进制数。要求把该数组中的正数、负数分开。正数放在PLADR开始的内存缓冲区中,正数的个数放在PLNUM单元中。负数放在NGADR开始的内存缓冲区中,负数的个数放在NGNUM单元中。25. 编写一个完整的汇编程序,统计以DATA1为首址的数据存储器中存放的一个数据块(以FFH为结束符)的长度(即字节

6、数),不包括结束符FFH,且长度小于256,将其存于CONT单元中。26. 编写一个完整的汇编程序,在数据存储器中有一数据块,其起始地址在FIRST(低字节)和FIRST+1(高字节)单元,数据块长度在LEN单元且不为0。要求统计该数据块中正偶数和负奇数的个数,并将统计结果分别存放在PUNIT和NUNIT单元。27. 编写一个完整的汇编程序,已知某应用系统规定:5个单字符命令AE的命令处理程序入口地址分别为PGMA、PGMB、PGMC、PGMD和PGME,输入命令的ASCII字符存放在累加器中。编制程序段的功能为:如果累加器中的内容为合法命令字符AE之一,则控制转入相应命令处理程序的入口;否则

7、转入出错处理程序入口ERR。28. 编写一个完整的汇编程序,从8000H开始的存储区中存放着80名同学某科目的成绩(0100分),试编程统计及格(60分以上)和不及格人数,并将统计结果存放在选定的寄存器中。29. 编写程序,能够实现将( DX,AX )中的(32位)内容向右逻辑移动4位。30. 编写程序完成统计数据段从4500H开始单元存放的100个单字节带符号数中负数和正数的个数,将结果分别放于DX和BX中。31. 编写程序完成将首地址为TABLE的数组中存放的100个8位无符号二进制数中,最小数和最大数找出来,分别存放到MIN和MAX单元中。32. 假设有一个8位无符号二进制数X存放在内存

8、单元为ADDR中,Y与X的关系表示在下面的函数中,编写一个程序,能够求出Y的值,并将结果存入RESULT单元。33. 有3个不带符号字节数X、Y、Z存放在内存WP开始的单元中,编写出完整的汇编源程序,能够计算(X×YZ)/Z的值。(X、Y、Z数可任意假设)34. 若在自1000H单元开始有一个100个数的数据块,要把它传送到自2000H开始的存储区中去。35. 在自0500H单元开始,存有100个数。要求把它传送到1000H开始的存储区中,但在传送过程中要检查数的值,遇到第一个零就停止传送。36. 在自0500H单元开始,存有100个数。要求把它传送到1000H开始的存储区中,但在传

9、送过程中检查数的值,零不传送,不是零则传送到目的区。37. 在自0500H单元开始,存有100个数,把数据块中的正数传送到自1000H开始的存储区。38. 在自0500H单元开始,存有100个数,把数据块中的正数传送到自1000H开始的存储区;而把其中的负数,传送到自1100H开始的存储区。且分别统计正数和负数的个数,分别存入1200H和1201H单元中。39. 自0200H单元开始,有100个无符号数,编一个程序求这100个数的和(用8位数运算指令),把和放在0264H和0265H单元(和用两字节表示),且高位在0265H单元。40. 若在0500H单元中有一个数x:(1) 利用加法指令把它

10、乘2,且送回原存储单元 (假定x×2后仍为一个字节);(2) x×4;(3) x×10 (假定x×10255)。41. 若在存储器中有两个数a和b(它们所在地址用符号表示,下同),编一程序实现a×10+b (a×10以及“和”用两字节表示)。42. 若在存储器中有数a、b、c、d(它们连续存放),编一个程序实现(a×10+b)×10+c)×10+d (和小于等于65535)43. 在0200H单元和020AH单元开始,存放两个各为10个字节的二进制数(地址最低处放的是最低字节),求它们的和,且把和放在02

11、14H开始的存储单元中。44. 若在0500H单元有一个数x,把此数的前四位变0,后四位维持不变,送回同一单元。45. 若在0500H单元有一个数x,把此数的前四位变“1”,后四位维持不变,送回同一单元。46. 把x的最低位变“1”,高7位不变,送至0600H单元。47. 若在0500H单元有一个数x,把此数的前四位变反,后四位维持不变,送回同一单元。48. 把x的最高位取反,后7位不变,把结果按二进制显示,并送至0600H单元。49. 若从0200H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数取补后送至0300H单元开始的存储区。50. 若在0200H和0201H单元中有一

12、个双字节数,编一个程序对它们求补。51. 若在0200H和0201H单元中有两个正数,编一个程序比较它们的大小,把较小的数放在0201H单元中。52. 若在0200H和0201H单元中有两个无符号数,编一个程序比较它们的大小,把较大的数放在0201H单元中。53. 若自0500H单元开始有1000个带符号数,把它们的最小值找出来,放在1000H单元中。54. 若自1000H单元开始有1000个无符号数,把它们的最大值找出来,放在2000H单元中。55. 在0200H单元中有一个数x,利用移位和相加的办法,使x×10(假定x×10>255)后送回原单元。56. 在020

13、0H和0201H单元中,存有一个两字节数(高位在后),编一个程序把它们整个右移一位。57. 在自BUFFER单元开始,放有一个数据块,BUFFER和BUFFER+1单元中放的是数据的长度,自BUFFER+2开始存放数据,每一单元放的是两位BCD码,把它们分别转换为ASCII码,放到自BLOCK开始的存储区中(低四位BCD码转换成的ASCII码放在地址低的单元),而BLOCK和BLOCK+1放转换成的ASCII码的长度。58. 在自BUFFER单元开始,放有一个数据块,BUFFER和BUFFER+1单元中放的是数据块的长度,自BUFFER+2开始存放的是以ASCII码表示的16进制数码(即09,

14、AF),把它们转换为16进制数码,放在同一单元中。59. 若在某存储区中已输入4个以ASCII码表示的16进制数码(高位在前),把它们转换为二进制数放入BX寄存器对中,并显示在屏幕上。60. 若自STRING单元开始存放一个字符串(以字符空格引导,以$结尾),编一个程序统计这个字符串的长度(忽略前导空格和结尾的$字符)。61. 在自STRI1和STRI2开始各有一个由10个字符组成的字符串,检查这两个字符串是否相等,在STFLAG单元中建立一个标志(相等为00,不等为FF)。62. 编一个程序,统计一个八位二进制数中的为“1”的位的个数。63. 编一个程序,使放在DATA及DATA+1单元的两

15、个八位带符号数相乘,乘积放在DATA+2及DATA+3单元中(高位在后)。64. 编一个程序,使放在DATA(被除数)及DATA+1(除数)的两个八位带符号数相除,商放在DATA+2单元,余数放在DATA+3单元中。65. 编一个程序,使放在DATA和DATA+1的两字节无符号数与在DATA+2及DATA+3中的无符号数相乘,乘积接着原来的数存放(高位在后)。66. 编一个程序,两个16位无符号数相除,商和余数接着原来的数存放(先放商,高位在后)。67. 把在BX寄存器对中的16位带符号二进制数转换为十进制数,且把符号位及各位十进制码转换为相应的ASCII码,放到自DATA开始的7个存储单元中

16、(高位在前),最后填以空格。68. 若自STRING开始有一个字符串(以#号作为字符串的结束标志),编一个程序,查找此字符串中有没有字符$,有多少个$(放在NUMBER单元中,没有$则其为0,否则即为$的个数);且把每一个$字符所存放的地址,放到自POINTR开始的连续的存储单元中。69. 把数据块传送程序编为一个子程序MOVE,源地址、目的地址和传送的字节数放在自ADDR开始的存储单元中。主程序调用子程序实现上述功能。70. 把八位无符号数乘法程序编为一个子程序,被乘数、乘数和乘积放在自DATA开始的存储单元中。主程序调用子程序实现上述功能。71. 编写子程序。将AL中的二进制数转换成对应的

17、BCD码(置于AL中)返回。若AL中的二进制数大于99,则置CF为1,AL不变,返回。主程序调用子程序实现上述功能。72. 编写子程序。将AL中的(两位)压缩BCD码转换成对应的二进制数(置于AL中)返回。主程序调用子程序实现上述功能。73. 编写子程序。将AX中的二进制数转换成对应的(4位压缩)BCD码(置于AX中)返回。若AX中的二进制数大于9999,则置CF为1,AX不变,返回。主程序调用子程序实现上述功能。74. 编写子程序。将AX中的(4位压缩)BCD码转换成对应的二进制数(置于AX中)返回。主程序调用子程序实现上述功能。75. 编写子程序。将AL中的二进制数转换成对应的ASCII码

18、(置于AL中)返回。主程序调用子程序实现上述功能。76. 编写子程序。将AL中的ASCII码转换成对应的二进制数(置于AL中)返回。若AL中的ASCII码不在09、AF之间,则置CF为1,AL不变,返回。主程序调用子程序实现上述功能。77. 编写子程序。将AX中的无符号十进制数转换成对应的ASCII码串存放于变量中。变量定义为:ASCII DB 5 DUP(?)。DX存放该变量的起始地址。要求子程序返回时, CX存放该ASCII码串中的字符个数。主程序调用子程序实现上述功能。78. 编写子程序。将AX中的有符号十进制数转换成对应的ASCII码串存放于变量中。变量定义为:ASCII DB 6 D

19、UP(?)。DX存放该变量的起始地址。要求子程序返回时, CX存放该ASCII码串中的字符个数。主程序调用子程序实现上述功能。79. 编写子程序。将一ASCII码字符串转换成对应的无符号二进制数(存放于AX中)。该ASCII码字符串的首地址存放于DX中,其字符个数存放于CX中。若出现非法字符或超过AX的存储范围等情况,置CF为1,AX不变,返回。主程序调用子程序实现上述功能。80. 编写子程序。将一ASCII码字符串转换成对应的有符号二进制数(存放于AX中)。该ASCII码字符串的首地址存放于DX中,其字符个数存放于CX中。若出现非法字符或超过AX的存储范围等情况,置CF为1,AX不变,返回。

20、主程序调用子程序实现上述功能。81. 编写子程序。用给定的字节(在AL中)填充一指定的内存区域。该内存区域的起始地址位于DI中,需填充的内存单元个数位于CX中。主程序调用子程序实现上述功能。82. 编写子程序。用给定的字(在AX中)填充一指定的内存区域。该内存区域的起始地址位于DI中,需填充的内存单元个数位于CX中。主程序调用子程序实现上述功能。83. 编写子程序。在一给定的内存区域中查找指定的字节。该内存区域的起始地址位于DI中,其存单元个数位于CX中。指定的字节位于AL中。若找到,则将该内存单元的偏移地址存放于DI中,且置ZF为1,返回。若未找到,DI不变,置ZF为0,返回。主程序调用子程

21、序实现上述功能。84. 编写子程序。在一给定的内存区域中查找指定的字。该内存区域的起始地址位于DI中,其存单元个数位于CX中。指定的字位于AX中。若找到,则将该内存单元的偏移地址存放于DI中,且置ZF为1,返回。若未找到,DI不变,置ZF为0,返回。主程序调用子程序实现上述功能。85. 编写子程序。求内存中一无符号字型数据序列的平均值。该无符号字型数据序列的起始地址位于BX中,数据个数位于CX中。要求求得的平均值整数部分(商)存放于AX中,小数部分(余数)存放于DX中。主程序调用子程序实现上述功能。86. 编写子程序。求内存中一有符号字型数据序列的平均值。该无符号字型数据序列的起始地址位于BX

22、中,数据个数位于CX中。要求求得的平均值整数部分(商)存放于AX中,小数部分(余数)存放于DX中。主程序调用子程序实现上述功能。87. 编写子程序。求内存中一无符号字节型数据序列的和。该无符号字节型数据序列的起始地址位于BX中,数据个数位于CX中。要求求得的和存放于AX中,且置CF为0;但若其和超过AX的存放范围,或数据个数为0等情况,则置CF为0,AX不变。主程序调用子程序实现上述功能。88. 编写子程序。求内存中一有符号字节型数据序列的和。该无符号字节型数据序列的起始地址位于BX中,数据个数位于CX中。要求求得的和存放于AX中,且置CF为0;但若其和超过AX的存放范围,或数据个数为0等情况

23、,则置CF为0,AX不变。主程序调用子程序实现上述功能。89. 编写子程序。求内存中一无符号字节型数据序列的最大值和最小值。该无符号字节型数据序列的起始地址位于SI中,数据个数位于CX中。要求求得的最大值存放于AH中,最小值存放于AL中。主程序调用子程序实现上述功能。90. 编写子程序。求内存中一有符号字节型数据序列的最大值和最小值。该无符号字节型数据序列的起始地址位于SI中,数据个数位于CX中。要求求得的最大值存放于AH中,最小值存放于AL中。主程序调用子程序实现上述功能。91. 编写子程序。将一无符号字节序列排成升序。该字节序列的首地址存放于SI中,其字节个数存放于CX中。主程序调用子程序实现上述功能。92. 编写子程序。将一有符号字节序列排成升序。该字节序列的首地址存放于SI中,其字节个数存放于CX中。主程序调用子程序实现上述功能。93. 编写子程序。比较两个字节型数据块。其中,第一个数据块的首地址存放于SI中,第二个数据块的首地址存放于DI中,CX中存放比较的字节个数。若两个数据块完全匹配,则置ZF=0,返回;否则,置ZF=1,并将不匹配的单元地址存放于DI中返回。主程序调用子程序实现上述功能。94. 编写子程序。比较两个字型数据块。其中,第一个数据块的首地址存放于SI中,第二个数据块的首地址存放于DI中,CX中存放比较

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论