版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.请任意输入一个字符串,将该串倒序后在屏幕上显示。.modelsmall.stack10h.datastringdb100dup(50)#db:definedbyte,定义100个字节,初始化为50.codestart:movax,@datamovds,ax #ds:数据段寄存器,对应全局变量leadx,string#lea:存储器地址偏移量存入dxmovah,0ah#0ah:中断号,从键盘接收字符串并放入缓冲区(回车键结束)。缓冲区首地址存于dx。缓冲区第2字节开始实际存字符。int21h #转入中断子程序的入口movdl,0ah#0ah:换行符的asc码movah,02h#02h:显示输出int21hxorbh,bhmovbl,string[1]#缓冲区的第0字节存入最多接收的字符数,第1字节存放实际输入的字数lop:movdl,string[bx+1]movah,02hint21hdecbxjnzlopmovah,4ch#4ch:退出程序int21hendstart.请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。.modelsmall.databufdb100dup(50).databufdb100dup(50)count1db00hcount2db00h定义100字节初始化50初始化0space个数A个数str1db'numofspaceis:$'str2db'numofAis:$'.codestart:movax,@datamovds,axleadx,bufmovah,0ahint21hmovdl,0ah #换行movah,02h #显示输出int21hxorbh,bh #0movbl,buf[1]lop:moval,buf[bx+1]#最后一个字符xoral,'' #space?jzspacemoval,buf[bx+1]xoral,'A'jzchar_Anext:decbxjnzlopjzshowspace:addcount1,01hjmpnextchar_A:addcount2,01hjmpnextshow:leadx,str1movah,09h#显示字符串int21hmovdl,count1adddl,30hmovah,02hint21h
#换行##换行#输出movdl,count2adddl,30hmovah,02hint21hmovdl,0ahmovah,02hint21hmovah,4chint21hendstart.请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。.modelsmall.stack10h.databufdb100dup(50).codestart:movax,@datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hxorbh,bhmovbl,buf[1]movsi,0002hlop:moval,buf[si]xoral,''jznextjnzshownext:decbxjzbreakincsijmplopshow:movdl,buf[si]movah,02hint21hjmpnextbreak:movah,4chint21hendstart.请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。.modelsmall.stack10h.databufdb100dup(50).codestart:movax,@datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hxorbh,bhmovbl,buf[1]movsi,0002hlop:moval,buf[si]xoral,'A'jzshow_ccjnzshow_charnext:decbxjzbreakincsijmplopshow_cc:movdl,'C'movah,02hint21hint21hjmpnextshow_char:movdl,buf[si]movah,02hint21hjmpnextbreak:movah,4chint21hendstart.请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。.modelsmall.stack10h.databufdb100dup(50).codestart:movax,@datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hxorbh,bhmovbl,buf[1]leasi,buf+2 ;cld ;将标志寄存器的方向标志位df清零lop:lodsb ;将子串中SI指针所指的一个字节装入ALcmpal,'A'jnbifupjbshow_charnext:decbxjnzlopjzbreakifup:cmpal,'Z'jbeshow_downjashow_charshow_char:movdl,almovah,02hint21hjmpnextshow_down:addal,'a'-'A'movdl,almovah,02hint21hjmpnextbreak:movah,4chint21hendstart.请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。.modelsmall.stack10h.databufdb100dup(50).codestart:movax,@datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hxorbh,bhmovbl,buf[1]leasi,buf+2cldlop:lodsbcmpal,'A'jnbifupjbshow_charnext:decbxjnzlopjzbreakifup:cmpal,'Z'jbenextcmpal,'a'jnbifdownifdown:cmpal,'z'jbenextjmpshow_charshow_char:movdl,almovah,02hint21hjmpnextbreak:movah,4chint21hendstart一、.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk,并将结果在显示器上显示。.modelsmall ;说明用的简略定义,这句话不用管.stack10h ;堆栈段,一般这么写;STACKSEGMENT;DB20DUP(?);STACKENDS.datastringdb0ah,'data,name,time,file,code,path,user,quit,text$'bufdb100dup(50)rpldb'disk?;数据段一般格式;DATASEGMENT; stringdb0ah,?data,name,time,file,code,path,user,quit,text$'; bufdb10dup(50); rpldb'disk?
.codestart:.codestart:movmovmovleamov;代码段一般格式;CODESEGMENT;ASSUMECS:CODE,DS:DATA,SS:STACK;STARTPROCFAR;PUSHDX;MOVAX,0;PUSHAX;MOVAX,DATAS;MOVDS,AX 这句之后的copy进来就能用;你要写的代码;STARTENDP;CODESENDS;ENDSTARTax,@datads,axes,axdx,buf ;10号DOS调用输入字符串ah,0ahint21hleasi,string[1] ;设置循环初值leadi,buf[2]cldlop:movcx,0004hrepzcmpsb;比较输入字符串与SI当前指向的字符串jnznext ;判断字符串是否相等,不等直接跳出andcx,cx ;判断是否四个字符都相等jzreplacejmpnextnext:addsi,cxmoval,[si]cmpal,'$' ;判断是否到字符串结尾jzbreakincsileadi,buf[2]jmplop;替换;替换subsi,0004hmovdi,sileasi,rplmovcx,0004hrepmovsbbreak: ;输出leadx,stringmovah,09hint21h.exitendstartDATASSEGMENTstringdb0ah,'data,name,time,file,code,path,user,quit,text$bufdb10dup(50)rpldb'disk?DATASENDSSTACKSSEGMENTdb20dup(?)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmoves,axleadx,bufmovah,0ahint21hleasi,string[1]leadi,buf[2]cld【清方向标志位,把标志(flags)寄存器的DF=0,地址指针si、di增加;如是std则把DF=1,地址指针减小也。使)F的值为0,在执行串操作时,使地址按递增的方式变化,这样便于调整相关段的的当前指针。这条指令与STD(SeTDirectionflag)的执行结果相反,即置DF的值为1。】lop:movcx,0004hrepzcmpsb【比较输入字符串与SI当前指向的字符串】jnznextandcx,cxjzreplacejmpnextnext:addsi,cxmoval,[si]cmpal,,$,jzbreakincsileadi,buf[2]jmplopreplace:subsi, 0004h【修正指针的值,指向下一个数据】movdi, sileasi, rplmovcx, 0004hrepmovsbbreak:leadx,stringmovah,09hint21hMOVAH,4CHINT21HCODESENDSENDSTART.现有一组字符串为ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII大小排序,并在显示器上显示。.modelsmall.stack10h.datarawdb0ah,'ram,yes,red,the,get,for,and,key,not,may$'countequ($-raw-1)/4.codestart:movax,@datamovds,axxorbh,bhmovbl,countcldlop:leasi,raw[1]decbxandbx,bxjzbreaklop1:movcx,0003hlop2:moval,[si]cmpal,[si+4]jaexchangejbnoexchdeccxjznextincsijmplop2next:addsi,cxincsimoval,[si+4]xoral,'$'jzlopincsijmplop1noexch:deccxjmpnextexchange:moval,[si]xchgal,[si+4]xchgal,[si]deccxjznextincsijmpexchangebreak:leadx,rawmovah,09hint21h.exitendstart.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除,并在显示器上显示。datasegmentbuf1db'data,name,time,file,code,path,user,quit,text$'buf2db50dup(?)inputdb10dup(50)dataendscodesegmentassumeds:data,cs:codestart:movax,datamovds,axmoves,axleadx,inputmovah,0ahint21hleabx,buf2leasi,buf1leadi,input[2]movcx,0004hcldlop:cmpsbjnzcopydeccxjzdeletejmplopnext:moval,[si-1]cmpal,'$'jzbreakleadi,input[2]movcx,0004hjmplopcopy:addsi,cxsubsi,0005hmovdi,bxmovcx,0005hrepmovsbmovbx,dijmpnextdelete:incsijmpnextbreak:moval,'$'mov[bx-1],almovdl,0ahmovah,02hint21hleadx,buf2movah,09hint21hmovah,4chint21hcodeendsendstart.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序将上述字符串排序(升序)并插入disk使其人仍然有序,并在显示器上显示。datasegmentbuf1db'data,name,time,file,code,path,user,quit,text$'count1equ($-buf1)/5buf2db'data,name,time,file,code,path,user,quit,text,disk$'count2equ($-buf2)/5dataendsstacksegmentstackdb10dup(?)stackendscodesegmentassumeds:data,cs:codesortprocfarpushsilop:popsipushsidecbxandbx,bxjzbreaklopl:movcx,0004hlop2:moval,[si]cmpal,[si+5]jaexchangejbnoexchdeccxjznextincsijmplop2next:moval,[si+5]xoral,'$'jzlopincsijmploplexchange:moval,[si]xchgal,[si+5]xchgal,[si]incsideccxjznextjmpexchangenoexch:addsi,cxjmpnextbreak:movdl,0ahmovah,02hint2lhpopdxmovah,09hint2lhretsortendpstart:movax,datamovds,axmovbx,countl+1leasi,buflcallsortmovbx,count2+1leasi,buf2callsortmovah,4chint21hcodeendsendstart.键盘输入一个十进制数(字类型),以十六进制的形式输出。datasegmentbufdb10dup(50)hexdb4dup(0),'h',0ah,'$'coefdw0001htempdw0000hdataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,bufmovah,0ahint21hmovbl,buf[1]xorbh,bhxorax,axmoval,01hlop:moval,buf[bx+1]xorah,ahsubal,30hmovdx,coefmuldxaddtemp,axmovax,coefmovdx,10muldxmovcoef,axdecbxjzshowjmplopshow:movbx,0movcl,12lop1:movax,tempshrax,clandal,000fhmovhex[bx],alsubcl,4incbxcmpbx,4jzlop2jmplop1movbx,4lop2:moval,hex[bx-1]cmpal,9jacharjmpnumnext:decbxjzbreakjmplop2char:addhex[bx-1],'a'-0ahjmpnextnum:addhex[bx-1],'0'jmpnextbreak:movdl,0ahmovah,02hint21hleadx,hexmovah,09hint21hmovah,4chint21hcodeendsendstartax存字al存字节cbw字节一字(扩展)读取输入数值入bxxchgax,bx[存入axmovcx,10mulcxaddbx,ax循环移位:rol.键盘输入一个十进制数(字类型),以二进制的形式输出。datasegmentbufdb10dup(50)hexdb16dup(0),'b',0ah,'$'coefdw0001htempdw0000hdataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,bufmovah,0ahint21hmovbl,buf[1]xorbh,bhxorax,axmoval,01hlop:moval,buf[bx+1]xorah,ahsubal,30hmovdx,coefmuldxaddtemp,axmovax,coefmovdx,10muldxmovcoef,axdecbxjzshowjmplopshow:movbx,0movcl,15lop1:movax,tempshrax,clandal,0001hmovhex[bx],aladdhex[bx],30hsubcl,1incbxcmpbx,16jzbreakjmplop1break:movdl,0ahmovah,02hint21hleadx,hexmovah,09hint21hmovah,4chint21hcodeendsendstart.键盘输入一个二进制数(字类型),以十六进制的形式输出。datasegmentbufdb20dup(50)tempdw0000hcoefdw0001haimdb4dup(0),'h',0ah,'$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hmoval,buf[1]xorah,ahmovsi,axlop:moval,[si+1]subal,30hxorah,ahmovdx,coefmuldxaddtemp,axmovax,coefmovdx,0002hmuldxmovcoef,axdecsijzshowjmplopshow:movbx,0movcl,12lopl:movax,tempshrax,clandal,000fhmovaim[bx],alsubcl,4incbxcmpbx,4jzlop2jmplop1movbx,4lop2:moval,aim[bx-1]cmpal,9jacharjmpnumnext:decbxjzbreakjmplop2char:addaim[bx-1],'a'-0ahjmpnextnum:addaim[bx-1],'0'jmpnextbreak:movdl,0ahmovah,02hint21hleadx,aimmovah,09hint21hmovah,4chint21hcodeendsendstart.键盘输入一个二进制数(字类型),以十进制的形式输出。datasegmentbufdb20dup(50)tempdw0000hcoefdw0001haimdb5dup(0),0ah,'$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hmoval,buf[1]xorah,ahmovsi,axlop:moval,[si+1]subal,30hxorah,ahmovdx,coefmuldxaddtemp,axmovax,coefmovdx,0002hmuldxmovcoef,axdecsijzshowjmplopshow:movsi,5movax,tempmovbx,10move:xordx,dxdivbxmovaim[si-1],dladdaim[si-1],30hdecsijzbreakjmpmovebreak:movdl,0ahmovah,02hint21hleadx,aimmovah,09hint21hmovah,4chint21hcodeendsendstart.键盘输入一个十六进制数(字类型),以十进制的形式输出。datasegmentbufdb10dup(50)tempdw0000hcoefdw0001haimdb5dup(0),0ah,'$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hmoval,buf[1]xorah,ahmovsi,axlop:moval,[si+1]cmpal,'a'jbnumjmpcharnext:xorah,ahmovdx,coefmuldxaddtemp,axmovax,coefmovdx,0010hmuldxmovcoef,axdecsijzshowjmplopnum:subal,30hjmpnextchar:subal,'a'-10jmpnextshow:movsi,5movax,tempmovbx,10move:xordx,dxdivbxmovaim[si-1],dladdaim[si-1],30hdecsijzbreakjmpmovebreak:movdl,0ahmovah,02hint21hleadx,aimmovah,09hint21hmovah,4chint21hcodeendsendstart.键盘输入一个十六进制数(字类型),以二进制的形式输出。datasegmentbufdb50dup(50)tempdw0000hcoefdw0001hhexdb16dup(0),'b',0ah,'$'dataendscodesegmentassumecs:code,ds:datainputprocfarleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hretinputendpprintprocfarmovbx,0movcl,15lop1:movax,tempshrax,clandal,0001hmovhex[bx],aladdhex[bx],30hsubcl,1incbxcmpbx,16jzbreakjmploplbreak:movdl,0ahmovah,02hint21hleadx,hexmovah,09hint21hretprintendpstart:movax,datamovds,axcallinputmoval,buf[1]xorah,ahmovsi,axlop:moval,[si+1]cmpal,'a'jbnumjmpcharnext:xorah,ahmovdx,coefmuldxaddtemp,axmovax,coefmovdx,0010hmuldxmovcoef,axdecsijzshowjmplopnum:subal,30hjmpnextchar:subal,'a'-10jmpnextshow:callprintmovah,4chint21hcodeendsendstart⑴输入、转换及显示均用子程序形式书写。⑵程序能够循环接收不同的十进制数,并对之处理,当按下非数字键时退出主程序,返回操作系统。四、.将一组有符号数中的负数求和,并统计负数的个数,并在屏幕上以十进制的形式显示结果。38H,4AH,0C5H,83H,9CH,0B4H,7FH,0C4H,05H,0F5Hdatasegmentbufdb38h,4ah,0c5h,83h,9ch,0b4h,7fh,0c4h,05h,0f5hcountequ$-bufsumdw0coutdw0tempdw0aimdb5dup(0),0ah,'$'dataendscodesegmentassumecs:code,ds:dataprintprocfarmovsi,5movax,tempmovbx,10move:xordx,dxdivbxmovaim[si-1],dladdaim[si-1],30hdecsijzbreakjmpmovebreak:leadx,aimmovah,09hint21hretprintendpstart:movax,datamovds,axmovsi,countxorcx,cxxorah,ahlop:moval,[si-1]cmpal,0jlnegativejmpnextnext:decsijzshowjmplopnegative:addcout,1cbwsubsum,axjmpnextshow:movax,coutmovtemp,axmovdl,0ahmovah,02hint21hcallprintmovdl,0ahmovah,02hint21hmovax,summovtemp,axmovdl,'-'movah,02hint21hcallprintmovah,4chint21hcodeendsendstart.键盘输入十个数,分别统计0到9,10到99,100以上的数的个数,并显示结果。datasegmentstr1db'0〜9:$'str2db'10〜99:$'str3db'>100:$'bufdb10dup(50)countdb3dup(0)dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovcx,10lop:leadx,bufmovah,0ahint21hmovbl,buf[1]xorbh,bhdecblmoval,01haddcount[bx],aldeccxjzshowmovdl,0ahmovah,02hint21hjmplopshow:movsi,3iften:moval,count[si-1]xoral,0ahjzchangedecsijzbreakjmpiftenchange:movcount[si-1],'a'-'0'break:leadx,str1movah,09hint21hmovdl,count[0]adddl,30hmovah,02hint21hmovdl,0ahint21hleadx,str2movah,09hint21hmovdl,count[1]adddl,30hmovah,02hint21hmovdl,0ahint21hleadx,str3movah,09hint21hmovdl,count[2]adddl,30hmovah,02hint21hmovdl,0ahint21hmovah,4chint21hcodeendsendstart.键盘输入两组数743216、527864,按BCD码求和,并将结果显示在屏幕上。datasegmentbuf1db20dup(50)buf2db20dup(50)buf3db20dup(50)dataendscodesegmentassumecs:code,ds:datainputprocfarmovah,0ahint21hmovbx,dxmoval,[bx+1]xorah,ahmovsi,axlop:moval,30hsub[bx+si+1],aldecsijzbreakjmplopbreak:movdl,0ah;空格,换行movah,02h;输出换行int21hretinputendpstart:movax,datamovds,axleadx,buf1callinputleadx,buf2callinputmovbl,buf1[1]xorbh,bhxorah,ahmovbuf3[bx+1],'$'add_lop:moval,buf1[bx+1]addal,buf2[bx+1]addal,ahxorah,ahaaamovbuf3[bx],aladdbuf3[bx],30hdecbxjzifcpjmpadd_lopifcp:andah,ahjznocpjmpcpnocp:leadx,buf3[1]jmpshowcp:moval,0addal,ahmovbuf3[bx],aladdbuf3[bx],30hleadx,buf3show:movah,09hint21hmovah,4chint21hcodeendsendstart.键盘输入下列两组十进制数,求其和,并将结果显示在屏幕上3578941846531425.键盘输入一串二进制数1ah,7ch,0bah,3ah,45h,63h求其和,并将结果显示在屏幕上。.从键盘输入一串可显示字符(以回车符结束),并按字母、数字、空格分类计数,然后显示出这三类统计的结果。datasegmentbufdb100dup(50)strldb'Thenumofnumis:$'str2db'Thenumofcharis:$'str3db'Thenumofspaceis:$'c1dw0c2dw0c3dw0tempdw0aimdb4dup(0),0ah,'$'dataendscodesegmentassumecs:code,ds:dataprintprocfarmovsi,5movax,tempmovbx,10move:xordx,dxdivbxmovaim[si-1],dladdaim[si-1],30hdecsijzbreak1jmpmovebreak1:leadx,aimmovah,09hint21hmovdl,0ahmovah,02hint21hretprintendpifnumprocfarcmpal,'0'jbbreak2cmpal,'9'jabreak2addc1,1break2:retifnumendpifcharprocfarcmpal,'A'jbbreak3cmpal,'Z'jbepluscmpal,'a'jbbreak3cmpal,'z'jbeplusplus:addc2,1break3:retifcharendpifspaceprocfarcmpal,''jnzbreak4addc3,1break4:retifspaceendpstart:movax,datamovds,axleadx,bufmovah,0ahint21hmovdl,0ahmovah,02hint21hmovbl,buf[1]xorbh,bhlop:moval,buf[bx+1]callifnumcallifcharcallifspacedecbxjzbreakjmplopbreak:leadx,str1movah,09hint21hmovax,c1movtemp,axcallprintleadx,str2movah,09hint21hmovax,c2movtemp,axcallprintleadx,str3movah,09hint21hmovax,c3movtemp,axcallprintmovah,4chint21hcodeendsendstart五、.编写程序,将十个字的有符号数中最大、最小值求出,并在显示器上输出。125ah,4357h,0f50h,0b43h,4ac4h,7454h,8b15h,0a2a4h,0f3ch,00f6hdatasegmentbufdw125ah,4357h,0f50h,0b43h,4ac4h,7454h,8b15h,0a2a4h,0f3ch,00f6htempdw0aimdb4dup(0),'h',0ah,'$'maxnumdw0minnumdw0strldb'maxnumis:$'str2db'minnumis:$'dataendscodesegmentassumecs:code,ds:dataprintprocfarmovbx,0movcl,12lop1:movax,tempshrax,clandal,000fhmovaim[bx],alsubcl,4incbxcmpbx,4jzlop2jmplop1movbx,4lop2:moval,aim[bx-1]cmpal,9jacharjmpnumnext:decbxjzbreakjmplop2char:addaim[bx-1],'a'-0ahjmpnextnum:addaim[bx-1],'0'jmpnextbreak:leadx,aimmovah,09hint21hretprintendpstart:movax,datamovds,axmovbx,18movax,[bx]movcx,[bx]lop:subbx,2cmpax,[bx]jlmaxcmpcx,[bx]jgminnextt:cmpbx,0jzexitjmplopmax:movax,[bx]jmpnexttmin:movcx,[bx]jmpnexttexit:movmaxnum,axmovminnum,cxmovtemp,axleadx,str1movah,09hint21hcallprintleadx,str2movah,09hint21hmovax,minnummovtemp,axcallprintmovah,4chint21hcodeendsendstart.键盘输入10个字节数(无符号数),求出最大、最小值,并在显示器上输出。datasegmentmindb0ffhmaxdb00hsumdw0tempdb?aimdb2dup(?),'h',0ah,'$'bufdb10dup(8)strldb'minnumis:$'str2db'maxnumis:$'str3db'meannumis:$'dataendsstacksegmentstackdb50dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackinputprocfarpushcxleadx,bufmovah,0ahint21hmovbx,2movcx,0xordx,dxlop3:moval,buf[bx+1]cmpal,'9'jbenum1jmpchar1next3:shlal,cladddl,aladdcx,4decbxjzbreak2numl:subal,'0'jmpnext3char1:subal,'a'-10jmpnext3break2:moval,dlcmpal,minjbmov_mincmpal,maxjamov_maxjmpnext1mov_min:movmin,aljmpnext1mov_max:movmax,aljmpnext1next1:xorah,ahaddsum,axmovdl,0ahmovah,02hint21hpopcxretinputendpshowprocfarmovbx,2movcx,0lop1:moval,tempshral,clandal,0fhcmpal,9jacharjmpnumnext2:addcl,4decbxjzbreak1jmplop1char:addal,'a'-10movaim[bx-1],aljmpnext2num:addal,'0'movaim[bx-1],aljmpnext2break1:leadx,aimmovah,09hint21hretshowendpstart:movax,datamovds,axmovcx,10lop:callinputdeccxjznextjmplopnext:movbx,10movax,sumdivblmovsum,axleadx,strlmovah,09hint21hmoval,minmovtemp,alcallshowleadx,str2movah,09hint21hmoval,maxmovtemp,alcallshowleadx,str3movah,09hint21hmovax,summovtemp,alcallshowmovah,4chint21hcodeendsendstart.一个有符号字数组以0为结束标志,编程求这个数组的最大值、最小值、平均值。.modelsmall.stack10h.databufdb10dup(8)countdb?resultdw?tempdw?aimdb5dup(?),0ah,'$'.codefunc1procfarmovbl,alincalmulblretfunclendpfunc2procfarmoval,countxorah,ahmovbl,alincalmulblmovresult,axretfunc2endpfunc3procfarpopdxpopcxpopaxmovbl,alincalmulblpushaxpushcxpushdxretfunc3endpprintprocfarmovax,tempmovsi,5movax,tempmovbx,10lop2:xordx,dxdivbxadddl,30hmovaim[si-1],dldecsijzbreak2jmplop2break2:leadx,aimmovah,09hint21hretprintendpinputprocfarleadx,bufmovah,0ahint21hmoval,buf[2]subal,30hmovbl,10mulbladdal,buf[3]subal,30hxorah,ahretinputendpstart:movax,@datamovds,axcallinputmovcount,alcallfunc1movtemp,axcallprintcallfunc2movax,resultmovtemp,axcallprintmoval,countxorah,ahpushaxcallfunc3popaxmovtemp,axcallprintmovah,4chint21hendstart.在BUFFER中定义了的十个带符号字,将其中的负数变成绝对值,并以十进制方式输出。datasegmentbufdw0012h,0fff0h,0ef0fh,00ach,700ah,0012h,0fff0h,0ef0fh,00ach,7fffhtempdw?aimdb5dup(?),0ah,'$'dataendsstacksegmentstackdb10dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackprintprocfarpushcxpushsimovax,tempcmpax,0jlnegtivejmppostivenegtive:negaxmovtemp,axjmpcontinue1postive:jmpcontinue1continue1:movsi,5movax,tempmovbx,10lop2:xordx,dxdivbxadddl,30hmovaim[si-1],dldecsijzbreak2jmplop2break2:leadx,aimmovah,09hint21hpopsipopcxretprintendpstart:movax,datamovds,axmovcx,10leasi,buflop:lodswmovtemp,axcallprintdeccxjzbreakjmplopbreak:movah,4chint21hcodeendsendstart.已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把在A中而不在B中出现的整数放于数组C中。.modelsmall.dataadw0,10,2,3,4,5,6,7,8,9,1,11,12,13,14,15,16,17,18,19bdw10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39ccdw20dup(?).codestart:movax,@datamovds,axleasi,aleadi,ccmovcx,21lopl:deccxjzbreaklmovax,[si]incsiincsimovbx,60lop2:cmpax,b[bx-2]jzfalsedecbxdecbxjztruejmplop2false:jmplop1true:mov[di],axincdiincdijmplop1break1:movah,4chint21hendstart.已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把既在A中又在B中出现的数存放于数组C中。.modelsmall.dataadw0,10,2,3,4,5,6,7,8,9,1,11,12,13,14,15,16,17,18,19bdw10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39ccdw20dup(?).codestart:movax,@datamovds,axleasi,aleadi,ccmovcx,21lopl:deccxjzbreaklmovax,[si]incsiincsimovbx,60lop2:cmpax,b[bx-2]jztruedecbxdecbxjzfalsejmplop2false:jmplop1true:mov[di],axincdiincdijmplop1break1:movah,4chint21hendstart.设有4个学生参加5门考试,请计算每个学生的平均成绩和每门课的平均分成绩,并在显示器上显示,输出格式如下:Chg1chg2chg3chg4chg5meamS1 78S2 67S3 92S4 43Aver不计小数。.modelsmall859655955543768210079928997846575.datastr1db'chg1chg2chg3chg4chg5mean',0ah,'$'str2db's178855510097$'str3db's26796437984$'str4db's39255769265$'str5db's44395828975$'str6db'mean$'sdb78,85,55,100,97,67,96,43,79,84,92,55,76,92,65,43,95,82,89,75resultldb4dup(?)result2db5dup(?)aimdb2dup(?),' $'.stack10h.codeprintprocfarxorah,ahmovbl,10divbladdax,3030hmovaim[0],almovaim[1],ahleadx,aimmovah,09hint21hretprintendpstart:movax,@datamovds,axmovbx,0movdi,0lopl:xorax,axxorcx,cxmovcl,s[bx]addax,cxmovcl,s[bx+1]addax,cxmovcl,s[bx+2]addax,cxmovcl,s[bx+3]addax,cxmovcl,s[bx+4]addax,cxmovdl,5divdlmovresult1[di],aladdbx,5incdicmpdi,4jzbreak1jmplop1break1:movbx,0lop2:xorax,axxorcx,cxmovcl,s[bx]addax,cxmovcl,s[bx+5]addax,cxmovcl,s[bx+10]addax,cxmovcl,s[bx+15]addax,cxmovdl,4divdlmovresult2[bx],alincbxcmpbx,5jzbreak2jmplop2break2:leadx,strlmovah,09hint21hleadx,str2movah,09hint21hmoval,result1[0]callprintmovdl,0ahmovah,02hint21hleadx,str3movah,09hint21hmoval,result1[1]callprintmovdl,0ahmovah,02hint21hleadx,str4movah,09hint21hmoval,result1[2]callprintmovdl,0ahmovah,02hint21hleadx,str5movah,09hint21hmoval,result1[3]callprintmovdl,0ahmovah,02hint21hleadx,str6movah,09hint21hmovsi,0lop3:moval,result2[si]callprintincsicmpsi,5jzexitjmplop3exit:movdl,0ahmovah,02hint21hmovah,4chint21hendstart30.编程计算从2开始的N(N<50)个偶数之和(2+4+6+…),主程序从键盘输入整数N,调用子程序求出N个偶数之和,由主程序显示结果。尝试分别使用以下3种方法编写完整程序。(1)利用寄存器传递参数(2)利用公共数据段变量传递参数(3)利用堆栈传递参数.modelsmall.stack10h.databufdw10dup(0)numdb10dup(8)tempdw?coefdw?aimdb6dup(?),0ah,'$.codeinputprocfarleadx,nummovah,0ahint21hmovdl,0ahmovah,02hint21hmoval,num[2]cmpal,'-'jznegtive1jmppostive1negtive1:movcl,num[1]deccljmpnext1postive1:movcl,num[1]next1:xorch,chxorbh,bhmovbl,num[1]movcoef,1movtemp,0lop1:moval,num[bx+1]subal,30hxorah,ahmulcoefaddtemp,axmovax,10mulcoefmovcoef,axdecbxdeccxjzbreakljmploplbreakl:moval,num[2]cmpal,'-'jnzexit1movax,tempnegaxmovtemp,axexit1:retinputendpsortprocfarmovcx,10sort_lop1:deccxjzsort_breakmovbx,18sort_lop2:movax,buf[bx]cmpax,buf[bx-2]jlexchangesort_next:decbxdecbxjzsort_lop1jmpsort_lop2exchange:xchgax,buf[bx-2]xchgax,buf[bx]jmpsort_nextsort_break:retsortendpprintprocfarmovax,tempcmpax,0jgprint_pjmpprint_nprint_p:movaim[0],'+'jmpprint_nextprint_n:movaim[0],'-'negaxmovtemp,axjmpprint_nextprint_next:movbx,5movcx,10print_lop:xordx,dxdivcxadddl,30hmovaim[bx],dldecbxjzprint_breakjmpprint_lopprint_break:leadx,aimmovah,09hint21hretprintendpstart:movax,@datamovds,axmovsi,20lop:callinputmovax,tempmovbuf[si-2],axdecsidecsijzbreakjmplopbreak:callsortmovax,buf[18]movtemp,axcallprintmovah,4chint21hendstart31.多模块程序设计(1)设计一个包括:键盘输入、显示、排序、转换、退出程序的主菜单。(2)从键盘输入10个字型带符号数。(3)把10个带符号十进制数转换成二进制数。(4)把10个二进制数按从小到大顺序排列。(5)把10个带符号二进制数转换成十进制数。(6)把最大数用十进制数的形式显示在屏幕上要求:(1)整个程序用四个模块组成:主菜单,排序子模块,转换子模块,其它。(2)键盘输入与显示功能分别用宏指令实现。(3)排序及转换功能分别用子程序实现。.modelsmall.stack10h.databufdb10dup(8)countdb?resultdw?tempdw?aimdb5dup(?),0ah,'$.codefunc1procfarmovbl,alincalmulblretfunclendpfunc2procfarmoval,countxorah,ahmovbl,alincalmulblmovresult,axretfunc2endpfunc3procfarpopdxpopcxpopaxmovbl,alincalmulblpushaxpushcxpushdxretfunc3endpprintprocfarmovax,tempmovsi,5movax,tempmovbx,10lop2:xordx,dxdivbxadddl,30hmovaim[si-1],dldecsijzbreak2jmplop2break2:leadx,aimmovah,09hint21hretprintendpinputprocfarleadx,bufmovah,0ahint21hmoval,buf[2]subal,30hmovbl,10mulbladdal,buf[3]subal,30hxorah,ahretinputendpstart:movax,@datamovds,axcallinputmovcount,alcallfunc1movtemp,axcallprintcallfunc2movax,resultmovtemp,axcallprintmoval,countxorah,ahpushaxcallfunc3popaxmovtemp,axcallprintmovah,4chint21hendstart32.将两个磁盘文件合并成一个新的文件。.modelsmall.stack10h.datafile1db'C:\exam\demo1.txt',0file2db'C:\exam\demo2.txt',0file3db'C:\exam\demo3.txt',0bufdb256dup(?)handledw?countdw?.codestart:movax,@datamovds,axleadx,file1moval,0movah,3dh ;打开文件int21hmovhandle,axmovbx,axmovcx,255leadx,bufmovah,3fh ;读取文件int21hmovbx,axmovcount,axmovbx,handlemovah,3eh ;关闭文件int21hleadx,file2movah,3dhmoval,0int21hmovhandle,axmovbx,countleadx,buf[bx]movbx,axmovcx,255movah,3fhint21haddcount,axmovbx,handlemovah,3ehint21hleadx,file3movah,3chmovcx,0int21hmovhandle,axmovbx,axleadx,bufmovcx,countmovah,40hint21hmovah,4chint21hendstart33.将一磁盘文件‘E:\ASS\FILE.ASM’读入内存2000:0000h中,并将文件以反序形式(头尾对应字符互换)仍以相同路径存入磁盘中。.modelsmall.stack10h.datafile1db'C:\exam\demo1.txt',0file2db'C:\exam\demo4.txt',0bufdb256dup(?)countdw?handledw?.codestart:movax,@datamovds,axmoves,axleadx,file1movah,3dhmoval,0int21hmovhandle,axmovbx,axmovax,2000hmovds,axmovdx,0movcx,256movah,3fhint21hmovbx,axmovax,@datamovds,axmovcount,bxmovbx,handlemovah,3ehint21hmovbx,countleasi,bufadd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山东枣庄市台儿庄区教育系统招聘教师9人建设笔试备考题库及答案解析
- 2026安徽国风新材料股份有限公司选聘海外业务团队负责人1人建设考试参考试题及答案解析
- 2026广西科技大学辅导员招聘建设考试参考题库及答案解析
- 2026江西吉安市泰和县旅游投资发展有限公司面向社会招聘4人建设笔试备考题库及答案解析
- 2026其亚新疆集团有限公司招聘建设笔试备考题库及答案解析
- 2026北京中科航天人才服务有限公司内蒙古分公司招聘建设笔试备考题库及答案解析
- 2026山东济南市儿童医院招聘卫生高级人才和博士(控制总量)31人建设笔试备考题库及答案解析
- 2026年湖南常德市第一中医医院招聘15人(第一批)建设笔试模拟试题及答案解析
- 2026山东威海市市直卫生健康系统事业单位招聘152人建设考试参考题库及答案解析
- 2026江苏南京大学现代工程与应用科学学院博士后招聘1人建设考试参考试题及答案解析
- 工业机器人离线编程说课1010
- 55m集散两用船船体结构规范设计
- 电厂集控全能运行值班员应知应会(终结版)
- 精选李叫兽精选集:文案不是文字
- 岩土工程原位测试5波速
- 车辆伤害应急预案演练记录(简单)
- JJG 141-2000工作用贵金属热电偶
- GB/T 17193-1997电气安装用超重荷型刚性钢导管
- 小学音乐四分音符-八分音符-课件-(2)ppt
- GB/T 13234-2018用能单位节能量计算方法
- 隧道施工开挖台车验收表
评论
0/150
提交评论