微机原理及应用习题105道.docx

上传人:b****0 文档编号:12830084 上传时间:2023-04-22 格式:DOCX 页数:12 大小:35.47KB
下载 相关 举报
微机原理及应用习题105道.docx_第1页
第1页 / 共12页
微机原理及应用习题105道.docx_第2页
第2页 / 共12页
微机原理及应用习题105道.docx_第3页
第3页 / 共12页
微机原理及应用习题105道.docx_第4页
第4页 / 共12页
微机原理及应用习题105道.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微机原理及应用习题105道.docx

《微机原理及应用习题105道.docx》由会员分享,可在线阅读,更多相关《微机原理及应用习题105道.docx(12页珍藏版)》请在冰豆网上搜索。

微机原理及应用习题105道.docx

微机原理及应用习题105道

《微机原理与应用》习题

1.求ADDRI开始单元中连续存放的两个双字数据之和,将结果存放在ADDR2开始的单元,并将结果在显示器上显示出来。

(假定和不超过双字)

2.在一个首地址为STR、长度为N的字符串中查找“空格”,找到则向DL中送1,否则向DL中送-1。

3.将两位十六进制数转换成ASCII码,并送屏幕显示,要求使用顺序结构实现。

4.使用分支结构实现将1位十六进制数转换成ASCII码。

假设需要转换的十六进制数已存放在AL的低4位上,转换结果仍存放到AL中。

5.一个32位数存放在以数据段的BUF单元开始的位置。

编写子程序统计该数中含“1”的个数,并将其结果存入RSLT字节单元。

6.用查表法将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为首地址的数据区中,有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单元起有若干学生成绩,成绩以“*”结束。

按照100~90为优、89~75为中等、74~60及格、60以下为不及格,编写一程序,完成统计各分数段学生人数。

19.编写一个过程,完成统计DX中“1”的个数,并将结果送CX中。

20.一个8位带符号二进制数X存放在内存单元BUF中,试根据下列函数关系编写程序求Y值,并将结果存入RESULT单元。

21.编写程序对在数据段BUF1地址起存放一串字符个数进行统计,串结束标志为-1,并将统计的结果放到CX中。

22.编写一个完整的汇编程序,把50个字节数组中的正数、负数、零挑选出来,分别将正数、负数存入正数、负数数组,并计算其中正数、负数和零数据的个数,存入内存变量中。

23.编写一个完整的汇编程序,统计数据段中存放的15个带符号的字数据(首地址TABLE)中正数、负数和零的个数,分别将个数存放在PLUS、MINUS和ZERO单元,并将正数、负数和零的个数在微机屏幕上以十六进制数的形式显示出来。

24.编写一个完整的汇编程序,自BUF开始的内存缓冲区中有N(N≤255)个字节为带符号的二进制数。

要求把该数组中的正数、负数分开。

正数放在PLADR开始的内存缓冲区中,正数的个数放在PLNUM单元中。

负数放在NGADR开始的内存缓冲区中,负数的个数放在NGNUM单元中。

25.编写一个完整的汇编程序,统计以DATA1为首址的数据存储器中存放的一个数据块(以FFH为结束符)的长度(即字节数),不包括结束符FFH,且长度小于256,将其存于CONT单元中。

26.编写一个完整的汇编程序,在数据存储器中有一数据块,其起始地址在FIRST(低字节)和FIRST+1(高字节)单元,数据块长度在LEN单元且不为0。

要求统计该数据块中正偶数和负奇数的个数,并将统计结果分别存放在PUNIT和NUNIT单元。

27.编写一个完整的汇编程序,已知某应用系统规定:

5个单字符命令A~E的命令处理程序入口地址分别为PGMA、PGMB、PGMC、PGMD和PGME,输入命令的ASCII字符存放在累加器中。

编制程序段的功能为:

如果累加器中的内容为合法命令字符A~E之一,则控制转入相应命令处理程序的入口;否则转入出错处理程序入口ERR。

28.编写一个完整的汇编程序,从8000H开始的存储区中存放着80名同学某科目的成绩(0~100分),试编程统计及格(60分以上)和不及格人数,并将统计结果存放在选定的寄存器中。

29.编写程序,能够实现将(DX,AX)中的(32位)内容向右逻辑移动4位。

30.编写程序完成统计数据段从4500H开始单元存放的100个单字节带符号数中负数和正数的个数,将结果分别放于DX和BX中。

31.编写程序完成将首地址为TABLE的数组中存放的100个8位无符号二进制数中,最小数和最大数找出来,分别存放到MIN和MAX单元中。

32.假设有一个8位无符号二进制数X存放在内存单元为ADDR中,Y与X的关系表示在下面的函数中,编写一个程序,能够求出Y的值,并将结果存入RESULT单元。

33.有3个不带符号字节数X、Y、Z存放在内存WP开始的单元中,编写出完整的汇编源程序,能够计算(X×Y–Z)/Z的值。

(X、Y、Z数可任意假设)

34.若在自1000H单元开始有一个100个数的数据块,要把它传送到自2000H开始的存储区中去。

35.在自0500H单元开始,存有100个数。

要求把它传送到1000H开始的存储区中,但在传送过程中要检查数的值,遇到第一个零就停止传送。

36.在自0500H单元开始,存有100个数。

要求把它传送到1000H开始的存储区中,但在传送过程中检查数的值,零不传送,不是零则传送到目的区。

37.在自0500H单元开始,存有100个数,把数据块中的正数传送到自1000H开始的存储区。

38.在自0500H单元开始,存有100个数,把数据块中的正数传送到自1000H开始的存储区;而把其中的负数,传送到自1100H开始的存储区。

且分别统计正数和负数的个数,分别存入1200H和1201H单元中。

39.自0200H单元开始,有100个无符号数,编一个程序求这100个数的和(用8位数运算指令),把和放在0264H和0265H单元(和用两字节表示),且高位在0265H单元。

40.若在0500H单元中有一个数x:

(1)利用加法指令把它乘2,且送回原存储单元(假定x×2后仍为一个字节);

(2)x×4;

(3)x×10(假定x×10≤255)。

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个字节的二进制数(地址最低处放的是最低字节),求它们的和,且把和放在0214H开始的存储单元中。

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单元中有一个双字节数,编一个程序对它们求补。

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.在0200H和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进制数码(即0~9,A~F),把它们转换为16进制数码,放在同一单元中。

59.若在某存储区中已输入4个以ASCII码表示的16进制数码(高位在前),把它们转换为二进制数放入BX寄存器对中,并显示在屏幕上。

60.若自STRING单元开始存放一个字符串(以字符空格引导,以$结尾),编一个程序统计这个字符串的长度(忽略前导空格和结尾的$字符)。

61.在自STRI1和STRI2开始各有一个由10个字符组成的字符串,检查这两个字符串是否相等,在STFLAG单元中建立一个标志(相等为00,不等为FF)。

62.编一个程序,统计一个八位二进制数中的为“1”的位的个数。

63.编一个程序,使放在DATA及DATA+1单元的两个八位带符号数相乘,乘积放在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个存储单元中(高位在前),最后填以空格。

68.若自STRING开始有一个字符串(以‘#’号作为字符串的结束标志),编一个程序,查找此字符串中有没有字符$,有多少个$(放在NUMBER单元中,没有$则其为0,否则即为$的个数);且把每一个$字符所存放的地址,放到自POINTR开始的连续的存储单元中。

69.把数据块传送程序编为一个子程序MOVE,源地址、目的地址和传送的字节数放在自ADDR开始的存储单元中。

主程序调用子程序实现上述功能。

70.把八位无符号数乘法程序编为一个子程序,被乘数、乘数和乘积放在自DATA开始的存储单元中。

主程序调用子程序实现上述功能。

71.编写子程序。

将AL中的二进制数转换成对应的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码(置于AL中)返回。

主程序调用子程序实现上述功能。

76.编写子程序。

将AL中的ASCII码转换成对应的二进制数(置于AL中)返回。

若AL中的ASCII码不在’0’~’9’、’A’~’F’之间,则置CF为1,AL不变,返回。

主程序调用子程序实现上述功能。

77.编写子程序。

将AX中的无符号十进制数转换成对应的ASCII码串存放于变量中。

变量定义为:

ASCIIDB5DUP(?

)。

DX存放该变量的起始地址。

要求子程序返回时,CX存放该ASCII码串中的字符个数。

主程序调用子程序实现上述功能。

78.编写子程序。

将AX中的有符号十进制数转换成对应的ASCII码串存放于变量中。

变量定义为:

ASCIIDB6DUP(?

)。

DX存放该变量的起始地址。

要求子程序返回时,CX存放该ASCII码串中的字符个数。

主程序调用子程序实现上述功能。

79.编写子程序。

将一ASCII码字符串转换成对应的无符号二进制数(存放于AX中)。

该ASCII码字符串的首地址存放于DX中,其字符个数存放于CX中。

若出现非法字符或超过AX的存储范围等情况,置CF为1,AX不变,返回。

主程序调用子程序实现上述功能。

80.编写子程序。

将一ASCII码字符串转换成对应的有符号二进制数(存放于AX中)。

该ASCII码字符串的首地址存放于DX中,其字符个数存放于CX中。

若出现非法字符或超过AX的存储范围等情况,置CF为1,AX不变,返回。

主程序调用子程序实现上述功能。

81.编写子程序。

用给定的字节(在AL中)填充一指定的内存区域。

该内存区域的起始地址位于DI中,需填充的内存单元个数位于CX中。

主程序调用子程序实现上述功能。

82.编写子程序。

用给定的字(在AX中)填充一指定的内存区域。

该内存区域的起始地址位于DI中,需填充的内存单元个数位于CX中。

主程序调用子程序实现上述功能。

83.编写子程序。

在一给定的内存区域中查找指定的字节。

该内存区域的起始地址位于DI中,其存单元个数位于CX中。

指定的字节位于AL中。

若找到,则将该内存单元的偏移地址存放于DI中,且置ZF为1,返回。

若未找到,DI不变,置ZF为0,返回。

主程序调用子程序实现上述功能。

84.编写子程序。

在一给定的内存区域中查找指定的字。

该内存区域的起始地址位于DI中,其存单元个数位于CX中。

指定的字位于AX中。

若找到,则将该内存单元的偏移地址存放于DI中,且置ZF为1,返回。

若未找到,DI不变,置ZF为0,返回。

主程序调用子程序实现上述功能。

85.编写子程序。

求内存中一无符号字型数据序列的平均值。

该无符号字型数据序列的起始地址位于BX中,数据个数位于CX中。

要求求得的平均值整数部分(商)存放于AX中,小数部分(余数)存放于DX中。

主程序调用子程序实现上述功能。

86.编写子程序。

求内存中一有符号字型数据序列的平均值。

该无符号字型数据序列的起始地址位于BX中,数据个数位于CX中。

要求求得的平均值整数部分(商)存放于AX中,小数部分(余数)存放于DX中。

主程序调用子程序实现上述功能。

87.编写子程序。

求内存中一无符号字节型数据序列的和。

该无符号字节型数据序列的起始地址位于BX中,数据个数位于CX中。

要求求得的和存放于AX中,且置CF为0;但若其和超过AX的存放范围,或数据个数为0等情况,则置CF为0,AX不变。

主程序调用子程序实现上述功能。

88.编写子程序。

求内存中一有符号字节型数据序列的和。

该无符号字节型数据序列的起始地址位于BX中,数据个数位于CX中。

要求求得的和存放于AX中,且置CF为0;但若其和超过AX的存放范围,或数据个数为0等情况,则置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中存放比较的字个数。

若两个数据块完全匹配,则置ZF=0,返回;否则,置ZF=1,并将不匹配的单元地址存放于DI中返回。

主程序调用子程序实现上述功能。

95.编写子程序。

交换两个字节串。

其中,第一个字节串的首地址存放于SI中,第二个字节串的首地址存放于DI中,CX中存放字节串的字节个数。

主程序调用子程序实现上述功能。

96.编写子程序。

交换两个字串。

其中,第一个字串的首地址存放于SI中,第二个字串的首地址存放于DI中,CX中存放字串的字个数。

主程序调用子程序实现上述功能。

97.编写子程序。

将一个字符串中的小写字母转换成大写字母。

该字符串的首地址存放于BX中,字符个数存放于CX中。

主程序调用子程序实现上述功能。

98.编写子程序。

将一个字符串中的大写字母转换成小写字母。

该字符串的首地址存放于BX中,字符个数存放于CX中。

主程序调用子程序实现上述功能。

99.编写子程序。

从键盘输入一个十六进制数,将其存储到DX中。

若输入数据中出现非法字符,则返回。

主程序调用子程序实现上述功能。

100.编写子程序。

将DX中的十六进制数输出到屏幕上。

主程序调用子程序实现上述功能。

101.编写子程序。

从键盘输入一个BCD码十进制数,将其存储到DX中。

若输入数据中出现非法字符,则返回。

主程序调用子程序实现上述功能。

102.编写子程序。

将DX中的BCD码十进制数输出到屏幕上。

主程序调用子程序实现上述功能。

103.编写子程序。

从键盘输入一个有符号十进制数,将其存储到DX中。

若输入数据中出现非法字符,则返回。

主程序调用子程序实现上述功能。

104.编写子程序。

从键盘输入一个无符号十进制数,将其存储到DX中。

若输入数据中出现非法字符,则返回。

主程序调用子程序实现上述功能。

105.编写子程序。

将内存中的一字符块显示到屏幕上。

该字符块的首地址存放于BX中,字符个数存放于CX中。

主程序调用子程序实现上述功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1