微机原理及应用习题105道

  • 格式:docx
  • 大小:24.50 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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单元。

1X0Y

0X01X0

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 的命令处理程序入口地址分别为PGM

A、PGM

B、PGM

C、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单元。

X260X10H Y

2X810H X50H28X50H

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单元中。