一、分析题(每题4分,共500分)1.编写一完整程序,比较两个字符串STR1和STR2所含字符是否完全相同,如果相同(AL)=1,不相同(AL)=0.2.编写一段程序统计BUF缓冲区100个字数据中为0的个数,并将统计结果保存在DL中。3.比较5个字节的字符串A和B,若两个字符串不相等则字节标志单元FLG置1;否则清0。4.设STR开始有一个长度为50个字节的字符串,编一段程序,将字符串的所有字符向后(大地址)移动20个字节。5.已知在AX、BX中放有一个32位二进制数,求其补码,并送入CX、DX之中,其中AX、CX放高位。6.在A字单元有一个有符号被除数,在B字单元有一个有符号除数,求其商存于C字单元中,余数存D字单元中,试编程实现之。7.8.编写一个完整的程序放在代码段CSEG中,要求把数据段中两个字单元X和Y的内容相加,结果放在AX中.9.试编写一程序段把40个字母A的字符串从源缓冲区传送到目的缓冲区。10.在A地址处有10个数据,现要求传送到B地址处,请编程实现。11.在A、B地址起各有4个字节单元的无符号数,试编程实现二个无符号数的和,并将值存于C址起的单元中。12.按下面要求写出程序的框架:①定义一个数据段,其中开辟100个字单元、初值为0;②定义一个代码段,并在其中指定段寄存器、指定主程序从0100H开始、给有关段寄存器赋值;③程序结束。13.编制将DS段中名为BUFB的字节存储区改写为空白字符(编码为20H)的程序段。假定BUFB存储区定义为BUFBDBNDUP('^'),其中N为字面常量。14.将BUF中的16位数分成四组,每组四位,然后把这四组数分别存放在A、B、C、D字节变量中。15.编一段程序把BX中的二进制数用十六进制数的形式在屏幕上显示出来.16.在附加段有一个字数组,其首地址已存放在DI寄存器中,在数组的第一个字中存放着该数组的长度.要求编制一个程序使该数组中的数按照从小到大的次序排列整齐.(起跑排序算法)17.在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中.18.在STR字符串中搜索字符A。如果找到该字符,则用字符B替代字符A;如果未找到该字符,则在STR字符串后插入字符B,试编写此程序。19.下列程序是检查并统计BUF缓冲区中以回车(0DH)结束的ASCⅡ码串中十进制数的字符个数。若全部是十进制数字符,则将统计的结果送RESUL单元;否则输出‘ERROR!’。请在程序的空格处填写适当的指令。20.设有数组X和Y.X数组中有X1...X10;Y数组中有Y1,...Y10.试编制Z1=X1+Y1,Z2=X2+Y2,Z3=X3-Y3,Z4=X4-Y4,Z5=X5-Y5,Z6=X6+Y6,Z7=X7-Y7,Z8=X8-Y8,Z9=X9+Y9,Z10=X10+Y10.结果存入Z数组.21.编写一程序,统计BUF字缓冲区中的确个数据中为0的个数,并将统计的结果以十六制数的形式显示输出。22.编一程序从键盘输入一个字母,然后找出它的前导字符和后续字符(如B的前导字符为A,后续字符为C),并顺序显示输出这三个字符。23.AX中有一个16位二进制数,编一段程序统计其中值为1的位的个数,统计结果存放在CX中。24.编程计算SUM=a1b1+a2b2+a3b3+…+a10b10。25.下列程序段是将X中的64位的无符号的二进制数除以Y中的16位的无符号的二进制数,其结果的商存放在W,余数存放在N中的程序,请在程序段的空格处填上适当的指令。XDW4DUP(?)YDW7WDW4DUP(0)NDW0…MOVDX,0MOVAX,X+6_______(1)_______DIVBXMOVW+6,AXMOVAX,X+4DIVBX________(2)______MOVAX,X+2DIVBX________(3)________MOVAX,XDIVBX________(4)_________________(5)__________26.编写一段程序,将数据段中S1开始的任意十个字符按相同顺序传送到以S2为起始地址的存储单元中。27.已知数据区中从A开始存放任意10个字节数据,求非零数据个数,将结果存于B存储单元。28.试编制一个程序把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来.29.有两个3位的ASCII数和ASC3定义如下:ASC1DB'578'ASC2DB'694'ASC3DB'0000'请编写计算ASC3=ASC1+ASC2的程序。30.编写一段汇编程序,要求实现对从键盘输入的小写字母用大写字母显示出来。31.将BUF中的8位二进制数转换成八进制数,其中的最高位存放在A字节单元中,最低位存放在C字节单元中。同时显示转换后的结果。32.试编写一段汇编程序,实现从键盘接收一个小写字母,然后找出它的前导字符,和后续字符,并按顺序输出这三个字符的功能.33.下列程序段是将BUF缓冲区中的两个字节的非压缩型BCD码转换成ASCII码并送显示器显示的程序,请在程序的空格处填上适当的指令。BUFDB5,7…MOVDL,BUF_________(1)____________MOVAH,2_________(2)_____________________(3)____________ADDDL,30HMOVAH,2__________(4)____________34.设X,Y,Z为有符号的16位二进制数,编写程序计算表达式W=(X+Y+10)*Z/(X+Y)(不考虑加法溢出),其中W存放商,W+2存放余数。35.在所定义的字节数组中找出第一个非0数据,并显示输出其所在数组的下标。36.下列程序段是A和B中的24位的无符号数相加,其结果放在双字的C变量中的程序,请在程序段的空格处填上适当的指令。ADB3DUP(?)BDB3DUP(?)CDD0…MOVAL,A___________(1)___________XCHGCH,CLMOVBL,B___________(2)____________XCHGDH,DLADDCX,DX___________(3)____________MOVAH,0___________(4)____________ADCAH,BHMOVC,CX____________(5)____________37.编写一程序,将x变量中的16位二进制数转换成十六进制数并输出。38.设有一字符串存放在以STING为首址的数据区中,其最后一个字符'$'作为结束标志,编一程序,计算该字符串的长度并送到LEN单元中.39.下列程序是将BCD字节缓冲区中的数据转换为十六进制数并输出。请在程序的空格处填写适当的指令。40.下列程序段是A和B中的24位的无符号数相加,其结果放在双字的C变量中的程序,请在程序段的空格处填上适当的指令。ADB3DUP(?)BDB3DUP(?)CDD0…MOVAL,A___________(1)___________XCHGCH,CLMOVBL,B___________(2)____________XCHGDH,DLADDCX,DX___________(3)____________MOVAH,0___________(4)____________ADCAH,BHMOVC,CX____________(5)____________41.给出一组数:249AH,7802H,0FFFFH,1234H,9031H,0002H,867AH,2A3EH,将其视为无符号数,找出其中最大数和最小数,结果送入AX和DX中。42.从键盘接收一个个位数,然后响铃N次.43.设有单字节无符号数X,Y,Z,若X+Y255,则求X+Z,否则求X-Z,运算结果放在F1中。X,Y,Z,F1均为字节变量名。44.设在内存某一数据区以STRING地址开始存放了一字符串,其最后一个字符为“$”,其ASSCII码为24H。要求检查该字符串中所有字符的奇偶性,规定每个字符对应的一个字节数中必须有偶数个“1”,则为正确。若奇偶性正确,结果为0,否则结果为-1。试编写程序。45.有一个50个字符的串,试把其中小写字母改为大写字母,把数字改为“*”,其它字符不变。46.下列程序是将BUF缓冲区的多精度数求补。请在程序的空格处填写适当的指令。47.将A字节变量中的48位无符号数与B字节变量中的16位无符号数相乘,并将结果存放在C字节变量中。48.编写一程序,将BUF字节缓冲区中的100字节按相反方向存放到BUFl中。49.有一个首地址为A的N字数组,编制程序使该数组中的数按照从大到小的次序排列.(起跑排序算法)50.下面程序段是判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。_______________ANDAH,08H_______________MOVAH,OFFHJMPNEXTZERO:MOVAH,0NEXT:……51.以BUF为首地址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。请完成程序。BUFDB5,6,7,58H,62,45H,127,……COUNTEQU$-BUFMAXDB?┆MOVBX,OFFSETBUFMOVCX,COUNT-1MOVAL,[BX]LOP1:INCBX________________JAENEXTMOVAL,[BX]NEXT:DECCX________________MOVMAX,AL┆52.下列程序是统计BUF字缓冲区中正数、负数和0的个数并分别送P、N和Z字变量。请在程序的空格处填写适当的指令。53.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示.54.下列程序是统计以0为结尾的STR字符串中大写字母、小写字母、数字和非数字字母的个数分别送A、B、C、D字单元保存。请在程序的空格处填写适当的指令。55.将A和B中的2位压缩型BCD码相加后并输出结果。56.设在以EXAMSTU为首址的存区中依次存放着某考区245个理科生的七门成绩,现要统计每个考生的总成绩,并将其存放在该考生单科成绩之后的两个单元。试编出完成这一任务的程序。57.在首地址为TABLE的数组中按递增有序存放着100H个16位的补码数,试编写一个程序,把数组中出现次数最多的数及其出现次数分别存放在NUMB和COUN字单元中。58.设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查找单词RED在该文中出现的次数,并以“RED出现的次数:XXXX”的格式显示出次数。59.下列程序段是将BUF缓冲区中的两个字节的非压缩型BCD码转换成ASCII码并送显示器显示的程序,请在程序的空格处填上适当的指令。BUFDB5,7…MOVDL,BUF_________(1)____________MOVAH,2_________(2)_____________________(3)____________ADDDL,30HMOVAH,2__________(4)____________60.下列程序是将有符号数字节缓冲区BUF中小于100的数送BUF1字节缓冲区中保存。请在程序的空格处填写适当的指令。61.编程序,将AX寄存器中的16位数分成四组,每组四位,然后把这四组数分别放在AL、BL、CL、DL中。62.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数,试编制一个程序,把既在A中出现又在B出现在整数存放于数组C中。63.编写一程序,将BUF缓冲区中的2位十六进制数转换成二进制数并输出。64.统计变量X中的值有多少位为1,并记入ONE变量中.65.编写一程序,将字符串缓冲区BUF中的小写字母转换成大写字母。66.从键盘上接收一个四位的16进制数,并在终端上显示出与它等值的二进制数.67.将A单元的内容求补,并与原内容相“与”,结果存入B单元中。68.编写一程序,用串比较指令,比较STR1和STR2字符串,若两个字符串完全相等,则输出‘OK!’;若不相等,则输出‘ER