一、分析题(每题4分,共320分)
1. 设X、Y、Z、R、W均为存放16位带符号数单元的地址,编一段程计算: Z←(W*X)/(Y+6),R←余数。
2.
3. 把AX中存放的16位二进制数K看作8个二进制的“四分之一”字节。试编写程序数一下值为3的四分之一字节数,并将该数显示出来。
4. 变量X为带符号整数,按下面的要求编制程序:(1)如果X的绝对值大于5,变量FX赋值为0(2)如果X的绝对值不大于5,变量FX的值为1-X.
5. 根据AL寄存器中哪一位为1(从低位到高位)把程序转移到8个不同的程序分支中去.(用变址寻址的方式实现跳跃表法的程序)
6. 设在某一个位移量测试系统当中,需通过位移传感器循环检测16位位移量。每次检测的位移量通过A/D转换后获得的数值在-128—+127之间。现需对位移量进行线性补偿。设已有三个补
偿子程序BS1,BS2,BS3。设计规定则由BS3完成。逻辑尺控制法,实现上述问题的循环程序设计。
7. 在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,编制一段程序,求它们对应项的绝对值之和,并将和数存入以SUM为首地址的数据区中。
8. 试编制一个汇编语言程序求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中.
9. 使AL高4位置1,判断低4位是否大于9,如大于9,则使低4位变反,否则将低4位置成9,试编程实现之。
10. 在首地址为TABLE的数组中按递增次序存放着100(16进制)个16位补码数,试编写一个汇编语言程序把出现次数最多的数及出现次数分别存放于AX,CX中.
11. 设A和B缓冲区中是两个以若干个文本行组成的文本文件(文本文件以1AH结束),每个文本行以回车符(0DH)和换行符(0AH)结束。试编写一程序,以行为单位依次比较,如果两行相等,则往下比较;如果两行不相等,则显示这两行的行号和内容。
12. 编写一段程序,将AL中的第7位和第0位、第6位和第1位、第5位和第2位、第4位和第3位互换。
13. 数组A和B,各有20个数据,它们各已按升序排放。现要求将这两个数组合并为一个数组C,且要求其数据也按升序排放,试编程实现。
14. 将正数N插入一个已整序的字数组的正确位置.该数组的首地址和末地址分别为ARRAY_HEAD和ARRAY_END,其中所有数均为正数且已按递增的次序排列.
15. 统计一班30名学生成绩的等级(A:90-100,B:80-89,C:70-79,D:60-69,E:60以下)。统计结果分别存入A,B,C,D,E单元中。
16. 从键盘接收三个16进制数,并根据对三个数的比较显示出如下信息:(1)如果三个数都不相等则显示0;(2)如果三个数中有二个数相等则显示1;(3)如果三个数都相等,则显示2.
17. 试编程计算S=1+2*3+3*4+4*5+…+N*(N+1),直到第N项N*(N+1)大于100时为止。
18. 试编制一个程序,把BUF缓冲区中的4位十六进制数转换为ASCⅡ码,并将对应的ASCⅡ
码依次存放到MEM数组中的4个字节中(例如,当BUF缓冲区中的内容为2A49H时,程序执行完后,MEM中的4个字节内容为39H、34H、41H和32H),并将转换的结果输出。
19. "在DATA字数组中存放有100H个16位补码数,试编写一个汇编语言程序,求他们的平均值放在AX寄存器中,并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中.
20. 编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首地址的数据区,每个数据占两个字节,和数SUM也为两个字节。
21. 已知数组A包括15个互不相等的整数,数组B包含20个互不相等的整数.试编制一程序把既在A中又在B中出现的整数存放于数组C中.
22. 试编制一个程序把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中.例如,当(AX)=2A49时,程序执行完后,MEM中的四个字节内容为39H,34H,41H,32H.
23. 在STRING到STRING+99单元中存放着一个字符串,测试该字符串中是否有数字,如有则把DL的第5位置1,否则0.
24. 以下程序完成对首地址为A的N字正整数数组从小到大排序。填上缺少的指令。
DATA SEGMENT
A DW N DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:___________________
MOV DS,AX
MOV CX,N
___________________
LOOP1:MOV DI,CX
MOV BX,0
LOOP2:MOV AX,A[BX]
CMP AX,A[BX+2]
___________________
XCHG AX,A[BX+2]
MOV A[BX],AX
CTN: ADD BX,2
LOOP LOOP2
____________________
LOOP LOOP1
MOV AH,4CH
INT 21H
CODE ENDS
END START
25. 有一首地址为MEM的100D字数组,试编制程序删除数组中所有为0的项,并将后续项向前压缩,最后将数组的剩余部分补上0.
26. 100个字数组的首地址为MEM,删除数组中所有为0的响,并将后续向前压缩,最后将数组中的剩余部分补上0.
27. 编制一个能循环显示十条新闻标题的控制程序,每条新闻的地址转换表NEWS放在数据区中.
28. 已定义了两个整数变量A和B,试编写程序完成下述功能:(1)若两个数中有一个奇数,则将奇数存入A中,偶数存入B中;(2)若两个数均为奇数,则将两数均加1存入原变量;(3)若两个数均为偶数,则两个变量均不变。
16进制
29. 设在某一个位移量测试系统当中,需通过位移传感器循环检测16位位移量。每次检测的位移量通过A/D转换后获得的数值在-128—+127之间。现需对位移梁进行线性补偿。设已有三个补偿子程序BS1,BS2,BS3。设计规定则由BS3完成。试用开关控制法编程。
30. 在A址起有一个50字节长的字符串,请查串中含有最后一个“?”字符字节相对A址的距离(设串中含有多个“?”号)。
31. 数据段中已定义了一个有N个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2N单元中,并将该数的偏移地址放在M+2(N+1)单元中.
32. 在A1单元开始定义了一个长度为N的字符串,出其中所有小写字母并存放到以A2单元开始的存储区中。统计小写字母的个数,放到SL单元中。请编写出完整的源程序。
33. 设TAB 是存放数字开方后的数字表,其中每个开方值占两个字节,低字节存放开方的值的整数部分,高字节存放余数部分,试用查表的方法求出X字单元中的开方值,并将结果存放在Y单元中。
34. 编写一程序,从键盘输入四位16进制数,在终端上显示与它等值的二进制数。
35. 试编制计算S=1+2*2+3*3+4*4+5*5的程序。
36. 试编写程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不同则显示‘NO MATCH’。
37. 编写程序,将一个包含有20个数据的数组M分成两个数组,正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来.
38. 下列程序是将键盘输入的十进制数(-32768~32767)转换为二进制数并送BIN保存。请在程序的空格处填写适当的指令。
39. 试编写一程序,比较数组ARRAY中的三个补码数,并根据比较结果在终端上显示如下信息:(1)如果三个数都不等则显示0;(2)如果三个数中有二个相等则显示1;(3)如果三个数都相等则显示2。
40. 有一个首地址为A的N个字的数组,请编写程序使该数组的数按照由小到大的次序排列。
41. 现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL’
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
____________________
LOP:MOVSB
____________________
LOOP LOP
42. 将AX寄存器中的16位数分成四组,每组四位,然后把这四组数分别放在AL,BL,CL,DL,中.
43. 数组A包含15个互不相等的整数,数组B包含20个互不相等的整数,编写程序,将既在A数组中出现又在B数组中出现的整数存放于数组C中.
44. 下列程序是将FIR的多位非压缩型BCD码与SEC的一位非压缩型BCD码相乘,其结果存放在THIR缓冲区中。请在程序的空格处填写适当的指令。
45. 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次。
46. 用非压缩BCD码完成÷3的运算,并将结果在屏幕上输出
分析:设被除数从低位到高位以ASCII码形式存放在数据区以BUF1为首地址的单元中,除数也以ASCII码形式存放在数据区以BUF2为首地址的单元中,相除后所得的商也从低位到高位以ASCII码形式存放在数据区以DIFER为首地址的单元中。
47. 编写程序,从键盘接收一个小写字母,然后到它的前导字符和后续字符,再按顺序显示这三个字符。
47. 编写程序,从键盘接收一个小写字母,然后到它的前导字符和后续字符,再按顺序显示这三个字符。
48. 下列程序是将FIR变量的多位压缩BCD码与SEC变量的两位压缩BCD码相乘,其结果是送THIR。请在程序的空格处填写适当的指令。
49. X、Y分别为32位二进制数,Z为8位二进制数,编程序实现X=X+Y+Z(不考虑溢出,数据存储时高地址存高位)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论