




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.24 个汇编小程序题目列表:逆序输出字符串“ BASED ADDRESSING”从键盘上输入两个数,分别放到x, y 单元,求出它们的和试编写一段程序,要求在长度为10h 的数组中,找出大于42h 的无符号数的个数并存入地址为 up 开始区域,找出小于42h 的无符号数的个数并存入地址为down 的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含 20 个数据的数组 M 分成两组: 正整数组 P 和负整数组 N,分别把这两个数组中的数据的个数显示出来求出首地址为data 的 100 个
2、字数组中的最小偶数,并把它放在ax 中输入两船字符串 string1 和 string2 ,并比较两个字符串是否相等, 相等就显示“match ”,否则显示“no match ”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为 mem 的 100 个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10 号功能调用)放在string 中,是编制一个程序测试字符串中是否存在数字。如有,则把cl 的第五位置1,否则
3、将该位置置0在首地址为data 的字数组中,存放了100h 的 16 位字数据,试编写一个程序,求出平均值放在 ax 寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx 寄存器中 (f 分别考虑有符号数、无符号数情况)一直数组 A 包含 15 个互不相等的整数,数组 B 包含 20 个互不相等的整数。试编制一个程序,把既在 A 中又在 B 中出现的整数存放于数组 C 中设在 A、B 和 D 单元中分别存放着三个数。若三个数都不是0,则求出三个数的和并存放在S 单元,若其中有一个数为0,则把其它两个单元也清零。请编写此程序Word 文档.从键盘输入一系列字符(以回车键结束) ,并按字母
4、、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量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 分的人数,并分
5、别放到S6, S7, S8,S9, S10 单元中编写子程序嵌套结构的程序,把整数分别用二进制和八进制显示出来在 D 盘根目录建立一个文件 abc.txt ,第一次向文件写入“ 123456 ”六个字符,第二次增加 “abcdefg ”几个字符从键盘上输入文本文件:“ d:temp.txt ”的容后,然后新建一个文件“ d:temp2.txt ”,把前一个文件的所有容复制到后一个文件中从键盘上输入一个十进制数,以十六进制数显示出来。要求子程序用寄存器参数传送方法试编制一个程序,把bx 寄存器中的二进制数用十六进制数的形式在屏幕上显示出来代码:1.逆序输出字符串“ BASED ADDRESSIN
6、G”s1segment stack;定义栈段 s1dw100dup(?);定义栈空间为 100toplabelword;top指向栈顶s1endss2segment;定义数据段 s2sdbBASED ADDRESSING,$;定义字符串 sS2endss3segment;定义代码段 s3assumecs:s3,ds:s2,ss:s1Word 文档.mainprocfarmovax,s1;栈初始化 movss,axleasp,top; 栈初始化movax,s2;数据段初始化 movds,ax; 数据段初始化movsi,15l:movdl,ssi;dl 获取字符串 s 的最后一个(从零开始的第十五
7、个字符)movah,2;调用 int 21h 2 号功能输出 dl 上的值int21hdecsi;寄存器减一,准备获取下一个字符cmpsi,0jalmovah,4ch;终止int21hmainendps3endsendmain2.从键盘上输入两个数,分别放到x, y 单元,求出它们的和s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input x:,$;提示输入h2dbPlease input y:,$;提示输入h3dbz=x+y:,$;提示输出crlfdb0dh,0ah,24h;定义回车换行xdw?ydw?s2
8、endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1;初始化movss,axleasp,topmovax,s2Word 文档.movds,ax;初始化leadx,h1;int 21h 9 号功能输出“提示输入 x”的字符串movah,9int21hxorbx,bx;bx 清零,即把 bx 置零InputX:movah,1;输入一个字符int21hcmpal,0dh;判断时候为“回车”字符jzexit1;如果是回车字符就跳转到 exit1cmpal,30h;和 30h(即字符0 的 asii 值)比较jlexit1;如果输入字符小于 0
9、,跳转到 exit1cmpal,39h;和 39h( 即字符 9的 ascii 值 )比较jgexit1;如果输入字符大于9 ,跳转到 exit1subal,30h;al 减去 30h ,输入字符转化成数字(从这一行开始到后面的 add bx,ax 为输入字符转化为数字的处理方法)cbw;al 扩充为 axxchgax,bxmovcx,10mulcxxchgax,bxaddbx,ax;sub al,30h 开始到这一行为输入字符转化为数字的处理方法jmpInputXexit1:movx,bx;把输入的存于 bx 的放到 x 中leadx,crlfmovah,9int21hleadx,h2mov
10、ah,9int21hxorbx,bxInputY:;和 InputX 类似,输入 ymovah,1int21hcmpal,0dhjzexit2cmpal,30hjlexit2Word 文档.cmpal,39hjgexit2subal,30hcbwxchgax,bxmovcx,10mulcxxchgax,bxaddbx,axjmpInputYexit2:movy,bx;把输入的存于 bx 的放到 y 中mov bx,xaddbx,y;此时 bx 为两数加和leadx,crlfmovah,9int21Hleadx,h3movah,9int21hxorsi,si;si 清零,用作计数movax,bx
11、;把和放到 ax 上l4:movcl,10;把和连续除以 10 知道和变为零,余数依次进栈divclmovdl,ahmovdh,0pushdxincsimov ah,0;重要,不能漏写cmpal,0jnzl4l5:popdx;余数依次出栈adddl,30h;余数转换为显示的余数字符movah,2;输入余数字符int21hdecsicmpsi,0jnzl5movah,4chWord 文档.int21Hmainendps3endsendmain3.是编写一段程序,要求在长度为10 的数组中,找出大于 42h的无符号数的个数并存入地址为 up 开始区域,找出小于42h的无符号数的个数并存入地址为do
12、wn 的开始区域,并分别显示 up、 down 数组的个数和数组的数字s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbthe num of up array and the up array are(prints in decimalism) :,$h2dbthe num of down array and the down array are(prints in decimalism) :,$crlfdb0dh,0ah,24harraydb0,50h,11h,61h,22h,72h,33h,73h,41h,74h,$;定义数
13、组 arrayupdb10 dup(?);定义 up 数组downdb10 dup(?);定义 down数组s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axmovsi,0movdi,1movbp,1repeat:cmparraysi,42h;把 array 数组中小于 42h 的值放到 down 数组里,大于42h 的值放到 up数组里面jbdownarraymovdl,arraysimovupbp,dlincsicmpsi,10jzexit1Word 文档.in
14、cbpjmprepeatdownarray:movdl,arraysimovdowndi,dlincsicmpsi,10jzexit2incdijmprepeatexit1:subdi,1jmp exitexit2:subbp,1exit:movdx,bp;把分配好的 up 数组和 down数组在其有效数字后面添加$ ,便于后面的输出结束movup0,dlincbpmovupbp,$movdx,dimovdown0,dlincdimovdowndi,$movcl,10movsi,0leadx,h1mov ah,9int21hPrintUparray:cmpupsi,$jznextmov al,
15、upsicallprintincsijmpPrintUparraynext:leadx,crlfmov ah,9int21hWord 文档.leadx,h2int21hxorsi,siPrintDownArray:cmpdownsi,$jzatendmov al,downsicallprintincsijmpPrintDownArrayprintprocnear;print 为输出十进制输出某个数的子程序movdi,0rediv:movah,0divclmovdl,ahmovdh,0pushdxincdicmpal,0jnzredivbreak:popdxadddl,30hmovah,2int
16、21hdecdicmpdi,0jnzbreakmovdl, movah,2int21Hretprintendpatend:movah,4chint21Hmainendps3endsendmainWord 文档.4.键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input a string:,$h2dbThe changed string is:,$crlfdb0dh,0ah,24htempdb?s2endss3segmentassumecs:s3,
17、ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axleadx,h1movah,9int21hmov si,0l: mov ah,1 int 21h cmp al,0dh jz exit cmp al,ajl putin cmp al,zjgputinsub al,20h;把小写字符变为大写字符putin:mov tempsi,al;把字符放到temp 数组里incsijmplexit:leadx,crlf;输出 tmp 数组Word 文档.movah,9int21hleadx,h2movah,9int21hincsim
18、ovtempsi,$leadx,tempmovah,9int21hmovah,4chint21Hmainendps3endsendmain5.从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input a lowercase: ,$h2dbThe the three chars are: ,$crlfdb0dh,0ah,24hs2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1m
19、ovss,axleasp,topmovax,s2movds,axl:leadx,h1movah,9int21hWord 文档.mov ah,1int21hcmp al,ajllcmp al,zjglmovcl,alleadx,crlfmovah,9int21Hleadx,h2mov ah,9int21hdecclmovdl,cl;输出前导字符movah,2int21hmovdl, movah,2int21hincclmovdl,cl;输出该字符mov ah,2int21hmovdl, movah,2int21hincclmovdl,cl;输出后导字符movah,2int21hmovah,4ch
20、int21Hmainendps3endsendmainWord 文档.6.把一个包含 20 个数据的数组 M 分成两组:正整数组 P 和负整数组 N,分别把这两个数组中的数据的个数显示出来s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbthe positive number is: ,$h2dbthe negative number is: ,$crlfdb0dh,0ah,24harraydw50h,-11h,61h,-22h,72h,-33h,73h,-41h,74h,21h,67h,-90h,73h,77h,-1h,-89
21、h,-11h,61h,-22h,2 0h,$s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axmovbx,0movsi,0l:movdx,arraysicmpdx,0jladdlow;有符号数比较用 jladdsi,2cmpsi,40jzexitjmpladdlow: incbxaddsi,2cmpsi,40jzexitjmplexit:leadx,h2Word 文档.movah,9int21hmovax,bxcallprintleadx,crlfmovah,9in
22、t21hleadx,h1movah,9int21hmov ax,20subax,bxcallprintjmpatendprintprocnear;打印数字字符的子程序movcl,10movsi,0repeat: divclmovdl,ahadd dl,30hmovdh,0pushdxincsimov ah,0cmpal,0jnzrepeatl2:popdxmovah,2int21hdecsicmpsi,0jnzl2retprintendpatend:movah,4chWord 文档.int21Hmainendps3endsendmain7.打印输出首地址为data 的 20 个字数组中的最小偶
23、数s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbthe min even number is: ,$crlfdb0dh,0ah,24hdatadw50,-11,61,-22,72,-33,73,-41,74,21,67,-90,73,77,-1,-89,-11,61,-22,20,$s2endss3segmentassumecs:s3,ds:s2,ss:s1mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axmovbx,65534;bx 存最小数,初始令最小值置为65534
24、movsi,0mov cl,100mov dl,2l2:movax,datasicmpax,0jnll4negax;如果是负数,则求补l4:divclmoval,ahmov ah,0divdlWord 文档.cmp ah,0jnzl1cmp bx,datasi;比较最小值和数组中的每个数jll1;如果数组中的数大于最小值跳转到l1mov bx,datasi;如果数组中的数小于最小值则将其赋给最小值l1: add si,2cmp si,40jzexitjmp l2exit:leadx,h1movah,9int21hcmpbx,0jnll5negbxmovdl,-movah,2int21hl5:m
25、ovax,bxcallprint;调用子程序输出最小值jmpatendprintprocnearmovcl,10movsi,0repeat: divclmovdl,ahadd dl,30hmovdh,0pushdxincsimov ah,0cmpal,0jnzrepeatl3:popdxWord 文档.movah,2int21hdecsicmpsi,0jnzl3retprintendpatend:movah,4chint21Hmainendps3endsendmain8.输入两船字符串 string1 和 string2 ,并比较两个字符串是否相等,相等就显示“ match ”,否则显示“no
26、 match ”s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input the first string: ,$h2dbPlease input the second string: ,$h3dbMATCH,$h4dbNO MATCH,$crlfdb0dh,0ah,24hstr1db50,?,50 dup($)str2db50,?,50 dup($)s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s
27、2movds,axleadx,h1Word 文档.mov ah,9int21hleadx,str1mov ah,0ahint21hleadx,crlfmov ah,9int21hleadx,h2int21hleadx,str2mov ah,0ahint21hleadx,crlfmov ah,9int21hmovdl,str1+1;str1+1为 str1 实际的字符个数cmpdl,str2+1;str2+1为 str2 实际的字符个数jnzlmovsi,2l2:movdl,str1sicmpdl,str2sijnzlincsicmpsi,50jzl3jmpl2l:leadx,h4;输出不匹配信
28、息movah,9int21hl3:leadx,h3;输出匹配信息movah,9int21hmovah,4chWord 文档.int21Hmainendps3endsendmain9.从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input a hexadecimal number: ,$h2dbThe number is printed in binary number: ,$tempdb17 dup($)crlfdb0dh,0ah,24hs2end
29、ss3segmentassume cs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movds,axrepeat: leadx,h1mov ah,9int21hmovbx,0movcx,4newchar:;接收新字符movah,1int21hcmpal,30hjbrepeatcmpal,46hjgrepeatcmpal,39hWord 文档.jnbl1;如果输入字符大于9 跳到 l1subal,30hjmpl2l1:cmpal,41hjbrepeat;如果输入字符小于A,则输入错误,跳到 repeatsubal,37h;输
30、入字符为 AZ ,故相应地要减37hjmpl2l2:cbw;l2 为把输入字符转化为数值xchgax,bxmovdx,10hmuldxxchgax,bxaddbx,ax;loopnewchardec cxcmp cx,0jnznewcharleadx,crlfmovah,9int21hleadx,h2int21hmovsi,0movcx,10h;cx 作计数器,即待会要循环 16次l5:rolbx,1;bx 循环左移以为,最高位进标志位jcl3;若标志位为 1 则跳转到 l3movtempsi,0jmpl4l3:movtempsi,1l4:incsiloopl5leadx,tempmovah,
31、9int21hmovah,4chint21HWord 文档.mainendps3endsendmain10 从键盘输入一系列以 $为结束符的字符串, 然后对其中的非数字字符计数, 并显示计数结果s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input a string: ,$h2dbThe number of the chars that is not digit:,$crlfdb0dh,0ah,24hs2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,
32、s1movss,axleasp,topmovax,s2movds,axleadx,h1mov ah,9int21hmovcx,0l2:movah,1int21hcmpal,$jzexitcmpal,30hjblcmpal,39hjnbljmpl2l:inccxWord 文档.jmpl2exit:leadx,crlfmovah,9int21hleadx,h2int21hmovsi,0movbl,10movax,cxl4:divblmovdl,ahmovdh,0pushdxincsimovah,0cmpal,0jnzl4l5:popdxadddl,30hmovah,2int21hdecsicmps
33、i,0jnzl5movah,4chint21Hmainendps3endsendmain11.有一个首地址为 mem 的 10 个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零s1segment stackdw100hdup(?)toplabelwords1endsWord 文档.s2segmentmemdw0,1,0,3,0,0,4,5,6,0,$crlfdb0dh,0ah,24hs2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,topmovax,s2movd
34、s,axmov si,0mov di,2repeat:cmp di,20jzexitmov bx,memsimov dx,memdicmp bx,0jnznextxchgbx,dxmov memsi,bxmov memdi,dxnext:cmp memsi,0jzladdsi,2l: add di,2 jmp repeatexit:movah,4chint21Hmainendps3endsendmain;以下是该算法描述;定义两个指针,当前指针si 和检查指针 di ,先把 si 指针指向第一个字得到的值bx,;di 指向第二个字得到的值dx。若 bx 为 0, di 自加 2,否则,则交换这
35、两字,;若此时 si 指向字为0,则 di, 否则, di, si 都自己加 2。如此循环直到di 指向最后一个字。;这样就把所有非零字至于前面了。Word 文档.12.从键盘上输入一串字符(用回车键结束,使用10 号功能调用)放在 string 中,是编制一个程序测试字符串中是否存在数字。如有,则把cl 的第五位置 1,否则将该位置置 0s1segment stackdw100hdup(?)toplabelwords1endss2segmenth1dbPlease input a string: ,$h2dbcx: ,$crlfdb0dh,0ah,24hstringdb50,?,50 dup($)s2endss3segmentassumecs:s3,ds:s2,ss:s3mainprocfarmovax,s1movss,axleasp,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年佳木斯道路危险品运输从业资格证模拟考试题库
- 专利申请书代理委托协议
- 某中学体育设施安全维护制度
- 珍惜爱作文900字4篇
- 2025年液压破碎锤项目提案报告
- 2025年统计学期末考试题库:综合案例分析题-统计学在市场细分工具中的应用
- 读小王子有感:寻找生命的意义作文11篇
- 学术研究成果及表现证明书(6篇)
- 2025年辅导员录用考试:学生思想政治教育方法创新策略与实践案例分析试题
- 2025年电子商务师(初级)职业技能鉴定试卷:电子商务数据分析与应用案例
- PTBD管路维护技术
- 220kV变电运行中的故障排除方法
- 高压灭菌器应急预案
- 环卫车辆交通安全知识讲座
- 学生顶岗实习成绩考核表
- NB-T 47013.15-2021 承压设备无损检测 第15部分:相控阵超声检测
- 保安报名表和资格审查表
- 2023年黄冈市团风县社区工作者招聘考试真题
- 煤矿典型事故案例分析培训课件
- 15D501 建筑物防雷设施安装
- 试产总结报告模板
评论
0/150
提交评论