您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 24个汇编实例小程序
24个汇编小程序题目列表:逆序输出字符串“BASEDADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和是编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“nomatch”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变写一段子程序skiplines,完成输出空行的功能。空行的行数由用户在主程序中通过键盘输入,并将行数放在ax寄存器中设有10个学生成绩分别是76,69,84,73,88,99,63,100和80。试编写一个子程序统计60-69分,70-79分,80-89分,90-99分和100分的人数,并分别放到S6,S7,S8,S9,S10单元中编写子程序嵌套结构的程序,把整数分别用二进制和八进制显示出来在D盘根目录建立一个文件abc.txt,第一次向文件写入“123456”六个字符,第二次增加“abcdefg”几个字符从键盘上输入文本文件:“d:\temp.txt”的内容后,然后新建一个文件“d:\temp2.txt”,把前一个文件的所有内容复制到后一个文件中从键盘上输入一个十进制数,以十六进制数显示出来。要求子程序用寄存器参数传送方法试编制一个程序,把bx寄存器中的二进制数用十六进制数的形式在屏幕上显示出来代码:1.逆序输出字符串“BASEDADDRESSING”s1segmentstack;定义栈段s1dw100dup(?);定义栈空间为100toplabelword;top指向栈顶s1endss2segment;定义数据段s2sdb'BASEDADDRESSING','$';定义字符串sS2endss3segment;定义代码段s3assumecs:s3,ds:s2,ss:s1mainprocfarmovax,s1;栈初始化——movss,axleasp,top;——栈初始化movax,s2;数据段初始化——movds,ax;——数据段初始化movsi,15l:movdl,s[si];dl获取字符串s的最后一个(从零开始的第十五个字符)movah,2;调用int21h2号功能输出dl上的值int21hdecsi;寄存器减一,准备获取下一个字符cmpsi,0jalmovah,4ch;终止int21hmainendps3endsendmain2.从键盘上输入两个数,分别放到x,y单元,求出它们的和s1segmentstackdw100hdup(?)toplabelwords1endss2segmenth1db'Pleaseinputx:','$';提示输入h2db'Pleaseinputy:','$';提示输入h3db'z=x+y:','$';提示输出crlfdb0dh,0ah,24h;定义回车换行xdw?ydw?s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1;初始化——movss,axleasp,topmovax,s2movds,ax;——初始化leadx,h1;int21h9号功能输出“提示输入x”的字符串movah,9int21hxorbx,bx;bx清零,即把bx置零InputX:movah,1;输入一个字符int21hcmpal,0dh;判断时候为“回车”字符jzexit1;如果是回车字符就跳转到exit1cmpal,30h;和30h(即字符0的asii值)比较jlexit1;如果输入字符小于'0',跳转到exit1cmpal,39h;和39h(即字符9的ascii值)比较jgexit1;如果输入字符大于'9',跳转到exit1subal,30h;al减去30h,输入字符转化成数字(从这一行开始到后面的addbx,ax为输入字符转化为数字的处理方法)cbw;al扩充为axxchgax,bxmovcx,10mulcxxchgax,bxaddbx,ax;subal,30h开始到这一行为输入字符转化为数字的处理方法jmpInputXexit1:movx,bx;把输入的存于bx的放到x中leadx,crlfmovah,9int21hleadx,h2movah,9int21hxorbx,bxInputY:;和InputX类似,输入ymovah,1int21hcmpal,0dhjzexit2cmpal,30hjlexit2cmpal,39hjgexit2subal,30hcbwxchgax,bxmovcx,10mulcxxchgax,bxaddbx,axjmpInputYexit2:movy,bx;把输入的存于bx的放到y中movbx,xaddbx,y;此时bx为两数加和leadx,crlfmovah,9int21Hleadx,h3movah,9int21hxorsi,si;si清零,用作计数movax,bx;把和放到ax上l4:movcl,10;把和连续除以10知道和变为零,余数依次进栈divclmovdl,ahmovdh,0pushdxincsimovah,0;重要,不能漏写cmpal,0jnzl4l5:popdx;余数依次出栈adddl,30h;余数转换为显示的余数字符movah,2;输入余数字符int21hdecsicmpsi,0jnzl5movah,4chint21Hmainendps3endsendmain3.是编写一段程序,要求在长度为10的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域,并分别显示up、down数组的个数和数组内的数字s1segmentstackdw100hdup(?)toplabelwords1endss2segmenth1db'thenumofuparrayandtheuparrayare(printsindecimalism):','$'h2db'thenumofdownarrayandthedownarrayare(printsindecimalism):','$'crlfdb0dh,0ah,24harraydb0,50h,11h,61h,22h,72h,33h,73h,41h,74h,'$';定义数组arrayupdb10dup(?);定义up数组downdb10dup(?);定义down数组s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axmovsi,0movdi,1movbp,1repeat:cmparray[si],42h;把array数组中小于42h的值放到down数组里,大于42h的值放到up数组里面jbdownarraymovdl,array[si]movup[bp],dlincsicmpsi,10jzexit1incbpjmprepeatdownarray:movdl,array[si]movdown[di],dlincsicmpsi,10jzexit2incdijmprepeatexit1:subdi,1jmpexitexit2:subbp,1exit:movdx,bp;把分配好的up数组和down数组在其有效数字后面添加'$',便于后面的输出结束movup[0],dlincbpmovup[bp],'$'movdx,dimovdown[0],dlincdimovdown[di],'$'movcl,10movsi,0leadx,h1movah,9int21hPrintUparray:cmpup[si],'$'jznextmoval,up[si]callprintincsijmpPrintUparraynext:leadx,crlfmovah,9int21hleadx,h2int21hxorsi,siPrintDownArray:cmpdown[si],'$'jzatendmoval,down[si]callprintincsijmpPrintDownArrayprintprocnear;print为输出十进制输出某个数的子程序movdi,0rediv:movah,0divclmovdl,ahmovdh,0pushdxincdicmpal,0jnzredivbreak:popdxadddl,30hmovah,2int21hdecdicmpdi,0jnzbreakmovdl,''movah,2int21Hretprintendpatend:movah,4chint21Hmainendps3endsendmain4.键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出s1segmentstackdw100hdup(?)toplabelwords1endss2segmenth1db'Pleaseinputastring:','$'h2db'Thechangedstringis:','$'crlfdb0dh,0ah,24htempdb?s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axleadx,h1movah,9int21hmovsi,0l:movah,1int21hcmpal,0dhjzexitcmpal,'a'jlputincmpal,'z'jgputinsubal,20h;把小写字符变为大写字符putin:movtemp[si],al;把字符放到temp数组里incsijmplexit:leadx,crlf;输出tmp数组movah,9int21hleadx,h2movah,9int21hincsimovtemp[si],'$'leadx,tempmovah,9int21hmovah,4chint21Hmainendps3endsendmain5.从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符s1segmentstackdw100hdup(?)toplabelwords1
本文标题:24个汇编实例小程序
链接地址:https://www.777doc.com/doc-5821377 .html