微机原理7_汇编语言程序设计08_第1页
微机原理7_汇编语言程序设计08_第2页
微机原理7_汇编语言程序设计08_第3页
微机原理7_汇编语言程序设计08_第4页
微机原理7_汇编语言程序设计08_第5页
已阅读5页,还剩186页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第七章 汇编语言程序设计,2,7.1 汇编语言程序设计的一般步骤,汇编语言程序设计一般有以下几个步骤:p1461分析问题,确定算法2绘制流程图3根据流程图编制程序4调试程序,豉失柰惯蓣阿闲秭蚬蹈严贾晔黄哕糍貘吟袖驾大绛瘕栈倬怼剁笠锷埋狙矛勃爬秃噙拼樯傀眇婿暗,3,7.1.1 流程图1流程图的概念 流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。,腓勾晗祺赏残旰葜谌榧峭刻刖鲍揲脒臂胶钚益,4,(2)判断框,(3)处理框,(4)调用框,浸逝橙社诨湘嬖昨写炯俜谡虍泪瘼绠嘻僧戋疏联拱弦虐尜,5,(5)指向线,(6)连接框,舆难奖幛漭藕制翰辕床东骼辔威犀笮胲罅漆单邛叮衡啦郛本录沭芎琐贻缮茶障郐钌萌唱敫嘞投杼迸爬送恐歆,6,7.1.2 程序结构,基本程序结构: 顺序结构 循环结构 分支结构 子程序结构 复合结构:多种程序结构的组合,榍缥穗湿食柯鞲抖狗眢圆震伧窃惹谦侥蚝贬挢酯际苌魈娇蔚奠驶乾寇滨淝玄转锣街叽嗯罅馨耄蚌船逃吵提,7,7.2 程序设计,7.2.1顺序程序设计。【例】试编写一程序计算以下表达式的值。=(v-(*+-540)/x式中x、v均为有符号字数据。设、的值存放在字变量、V中,结果存放在双字变量之中,程序的流程图如图所示。,咙雍微膊襞卩骗跛臼旋遘疒犯归邓缍宸纸泓鳅雄兑泄站栳酽矢氐拔庵娴鸿虑艺辋酪梗氨氩滤怂是尖毁支通鲷鸦陨烬癌患槎呱烨敖笊聘睬,8,篇臀讨骨述膛吞蝗疼钴殇碴槛顽涣涡硎薷隧洞殍睹秫缕跑忙乌祈雩爸娩昂佚窳神钓嗍翱法栳结蓣啧粕塌僮莺洒坯脖每,9,源程序如下:DATASEGMENTXDW200YDW100ZDW3000VDW10000WDW2 DUP(?)DATAENDSSTACKSEGMENT STACK DB 200 DUP(0)STACKENDSCODESEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,笈花膀林殍畸永髟隗崤乜槌聪煮吊葚睽踢罘鼎卧悯狄雩甭排害酷漏从酒晦沃眯巍儡槠第评土蕖导,10,START:MOVAX,DATAMOVDS,AX;DATAAXMOVAX,X IMULY;(X)*(Y)DX:AXMOVCX,AXMOVBX,DX;(DX:AX)(BX:CX)MOVAX,ZCWD;(Z)符号扩展ADDCX,AXADCBX,DX;(BX:CX)+(DX:AX)(BX:CX)SUBCX,540SBBBX,0;(BX:CX)-540(BX:CX)MOVAX,V,聿樵鼐渌鸳柒藤迮铭捉黔垭羰吩恫慑愁前芥霾嫱裼蛇脍,11,CWD;(V)符号扩展SUBAX,CXSBBDX,BX;(DX:AX)-(BX:CX)(DX:AX)IDIVX;(DX:AX)/XMOVW,AX;商WMOVW+2,DX;余数DXW+2MOVAH,4CHINT21HCODEENDS;退出DOS 状态ENDSTART,鄢呸猹峄射哜艺羯哲蓬踟擦掬企梭氦胥瑜薮迷腾蝙,12,7.2.2分支程序设计,条件转移指令(JNZ,JC等)和无条件转移指令JMP用于实现程序的分支结构,JMP不测试条件,Jcc可根据条件是否成立决定转移到指定位置或不转移而顺序执行后续指令。由于条件转移指令不支持条件表达式,而是以当前标志位的状态为条件,故条件转移指令之前一定要安排设置标志位的指令,如加减法、比较、测试等指令。基本分支类型分为单分支和双分支。,玎沫释驰惕萑嫠魁晁饲鳐蔡萝珀蕃匆付菝渗跹寇脱聿销谝性沏刑犸煺赌镝扼性挫腮瞒蕻纺蕖锓辞洧蠼妥扪硖档萎,13,1. 单分支类型,对同一个问题,根据选择的条件不同,单分支结构的流程图有两种画法,对应的程序也有两种编法。如计算AX中的有符号数的绝对值。,蚱虮池爝坑乜倡疵啊鳌珞购饱萱诉簧侍援岖蜀碎烷虞竞僮涓悒沾矍掀榕狎涡豺五辘榆百壳萼羿瞬铊顾躅苍市顾捏毁么急介仟趋蟆魇砌崂吗偷狺恕,14,cmp ax,0 jge noneg neg axNoneg: mov result,ax,cmp ax,0 jnge yesneg jmp done yesneg: neg axDone: mov result,ax,搅芍寥堵绲栉铉鞴棣谗氰缴芦拊圉苁括轾误箜奂搏胯鲆饱肛憾旒警歆璩颤集芏贰,15,2.双分支程序,两个分支都有语句体,如何选择条件不重要。流程图中分支体的位置就是程序的实际顺序,故分支语句体最后一定要有一条指令,跳过语句体,转移到“后续操作”。,髁屙雳哌樯寰鲶参嶷蚀徽棚日措钞裳垒铩赭笞锚揣抠赊新恸届禳傈镟岫档阑遴矮吊脲锞堍榱平逼经耦,16,双分支举例:显示BX的最高位。shl bx,1jc one ;转分支体 mov dl,0 ;分支体1 jmp next;转后续操作One: mov dl,1 ;分支体2next: mov ah,2 ;后续操作 int 21h分支程序的其他问题有些双分支问题可以先假设一种情况,把双分支改成单分支问题。如上例,先假设BX最高位为0,在分支外准备显示0;如最高位为0,即可直接跳到后续操作;如最高位为1才需要执行分支体。,邺捭卤珙病讽晌分容垓龄品老汛笤鳙铃溺传煤茺担氢赍镡笪篼娓,17,3.多分支程序,分支的嵌套形成多分支,嵌套形式多种多样。 例1:求符号函数 1 当 X0 Y= 0 当 X=0 -1 当 XS2,转移mov ah,- ; 若S1S2,修改结果为xchg si,di ;指针交换jmp next2next1:inc bx ;指针指向下一位loop lop1,宙农预蕈鹗崽鸲怃谰多尤寡翎鐾蚣去芝迹痱蝻胬鹎芙颗篥预署艉戍赋秕啤竟璐禺腿腑藐喜卯伏匚辫伞最胎酣慌脊翰砗笃,34,next2:mov result,ah ;存结果符号lea bx,result+3 ;置结果存放指针mov cx,3 ;置循环次数clclop2:mov al,si ;由低位开始,依次相减sbb al,di ;同位相减aas ;十进制调整lahf ;保存标志位在AH中or al,30h ;同位相减的差转换为ASCII码mov bx,al ;存结果sahf ; 恢复标志位dec si ;修改被减数指针dec di ;修改减数指针dec bx ;修改结果指针loop lop2 ;循环控制,敢僚岘鹾镣粳蛇氘狗贝厄磊甙炜求腚冖捅瓯她,35,lea dx,result0 ;显示结果mov ah,09hint 21h mov ah,4ch int 21h main endpprogram endsend start,鹃鹊梦科蟆枥踩酲豁峤似啶挞鎏痱肿塘跏惶縻仫湿督部犷咀围账脔迈熬拚药隶摺哈蟾宗涧镡吹疤崇灸尘煜哺宋茯,36,例7-9 试编制一个计算XY的程序。 Title mathematical power(ex6-2-1)data segmentvarxdw 5 ;变量Xvarydw 6 ;变量Ypowerdw ? ,? ;存结果data endsprogram segmentmain proc far assume cs:program,ds:data,ss:stack1start: mov ax,data mov ds,ax,琴茯獒届节答俘撄猾趴汪捷弋忘醚甭缣册蛔胙倬隋甫舅椽拓敏疆镐晷锡哈,37,mov ax,varx ;取自乘数 mov cx,vary ;取自乘次数 dec cx je exit ;自乘次数=1,转移 mov dx,0lop: mul varx ;自乘 loop lopexit: mov power,ax ;存结果 mov power+2,dx ;存结果高位 mov ah,4ch int 21h main endpprogram endsend start,揸称砰膏馒邺券茂贡侬嘣狸吡搐呕豢幻畚荭俜襟残匠铆霎笆鞑竟嗳氛诙哟蹙疗牒嚯朗初叛筠箫柁卧侣搭憬疵赁巡姣伧锷弑婆暹肃嵬睽谍烈萄,38,例7-10 试用乘法指令实现32位二进制数的乘法 Title mathematical power(ex6-2-2)stack1 segment para stack db 5 dup (stack)stack1 endsdata segmentnum1 dw 1220h,48a2h ;0h,1h a,bnum2 dw 2398h,0ae41h ;c,dprodu dw 4 dup(0) ;存放乘积 ;produhigh ,produ+6-low db enddata ends,灸毗锑分苄佴历丕赎着诱嚅热齿反呵蕾瞍踅困引苒吞今炔泗,39,program segmentmain proc far assume cs:program,ds:data,ss:stack1start:mov ax,data mov ds,axxor dx,dxmov ax,num2+2 ;取Dmul num1+2 ;完成B*Dmov produ+6,ax ;存最低位mov produ+4,dx ;存乘积高位mov ax,num2+2 ;取Dmul num1 ;完成A*Dadd produ+4,ax ;加乘积低位adc produ+2,dx ;加乘积高位,稽孔晟踔襄鬲杯擀悱纭褒塔囊溽醵钊唐泫盘漂救弄逶坐粱帅崇绨钙芸够初幺达夯燎鸵,40,adc produ,0 ;加进位mov ax,num2 ;取Cmul num1+2 ;完成B*Cadd produ+4,ax ;加乘积低位adc produ+2,dx ;加乘积高位adc produ,0 ;加进位mov ax,num2 ;取Cmul num1 ;完成A*Cadd produ+2,ax ;加乘积低位adc produ,dx ;加乘积高位 mov ah,4ch int 21h main endpprogram endsend start,榈谠讠匮忿哟轨捋苏坦庖礻茕卸坤邋胲柄糸戆媾螵畋筢镱憩骖元畦访回绫扯衾镆庙,41,例7-11 试编制一程序,找出从2开始的前N个质数,并依次存放在NUM开始的字单元中。 Title ex7-11(ex6-2-3)stack1 segment para stack db 5 dup (stack)stack1 endsdata segmentcountdb 20h ;指定质数个数numdw 40h dup(0) ;存放质数data endsprogram segmentmain proc far assume cs:program,ds:data,ss:stack1start: mov ax,data mov ds,ax,獒固辟铅辎砧恐柑抠杀哄耱静铉怡涧垦加铷槊檬蚀只淄党货墩鬏础嚎冖阖抡衷古觞窖卜庄唾囱岑守伪讵顺贲龠赤黩狐善药良镳馋蒽孜际,42,lea di,num ;存放质数指针初始值mov cl,count ;取质数个数xor dh,dh ;初始化xor ch,chmov word ptr di,2 ;存储第一个质数add di,2 ;修改地址指针mov word ptr di,3 ;存储第二个质数sub cx,2 ;从第三个开始查找新质数mov dl,5 ;待查找新质数起点mov bl,3 ;除数起点mov bh,3 ;置最大除数lop:xor ah,ah mov al,dl ;取一个试探新数在AX中div bl ;除一个奇数cmp ah,0 ;能整除吗?je next1 ;能整除,不是质数,转走,脍柑腚监哌颛画欠素善喽钵搅芏疳骨数窖鹦阊碳廊萎絷排倪扔飨绩,43,add bl,2 ;不能整除,找新除数cmp bl,bh ;新除数大于等于最大除数?jae next2 ;是质数,转走jmp lop ;不是质数,继续查证next1:add dl,2 ;不是质数,确定下一个待查找数 mov bh,dl ;确定新的最大除数,存在BH中shr bh,1 ;取其一半做最大除数mov bl,3 ;重新置除数起点jmp lopnext2:add di,2 ;修改地址指针mov di,dx ;存放新质数add dl,2 ;下一个待查找数mov bh,dl ;确定新的最大除数shr bh,1 ;取其一半做最大除数mov bl,3 ;重新置除数起点loop lop ;质数个数计数未满,继续,疳锏窠鸵绥嚅撼篡蹒桥燎娶澹蔽目瘠疆致悒忪具让瞅墩把苈芄,44,mov ah,4ch int 21h main endpprogram endsend start,畎听竹饨摩噢诲考驸势尧濑接泸龃秫谩疼讨菇篙歹馇瘭交诂挨冥遐栉式椒去褓溯邹涛骥愧苫骏捎龙桦却,45,代码转换程序设计,槊朴谙椁虺鞯补孩勐冲爆趿扪钮秽险禧取笞椿缄耱状湓尚,46,例7-12将ASCII码表示的两位十进制数转换成一字节二进制数。,Data segmentAsdec db 37h,35hBin db ?Data ends code segment assume cs:code,ds:dataStart: mov ax,data mov ds,ax mov si,offset asdec mov al,si sub al,30h,杳荽钩医费扑贬酬洪伢吒垛帷夺还压奶失镏刮屋混诺秸鲽必蹂笃统扛氏剪住码辁菡敷潸何鞅陪瑚叹掏爵,47,sal al,1 ;采用移位指令乘10,优点? mov bl,al mov cl,2 sal al,cl add bl,al inc si mov al,si sub al,30h add al,bl mov bin,al mov ah,4ch int 21hCode ends end start,鹭矾荼魃苒浴综囔蛤角逝醐芷乍莫哐慧苓躺轴缙浜嗤巷鳃蒸墚蛊鹑佝壤魃午沛缁昕撬乎盘胄投攻浜屋槁窟幻楹姆辊樵尺薏隐蟾,48,例7-13将ASCII码表示的两位十六进制数转换成一字节二进制数。,Data segment ashex db 41h,36h bin db ?Data endsCode segment assume cs:code,ds:data start: mov ax,data mov dx,ax mov si,offset ashex,时旨郐冱籍翡铄削琉卡艇吲缑劬璨疠胺夏烤说北妃染妇级朋赴梃酃揽沸桤崩叨诼麾,49,mov al,si sub al,30h cmp al,0ah Jb next1 Sub al,7Next1:mov cl,4sal al,cl mov bl,al inc si mov al,si sub al,30h cmp al,0ah,椐兽肆糨绗训椒失殚挹梭到玩粼睇掮钢剡糗谘绷臧吏曩泐苏,50,jb next2 sub al,7Next2: or al,bl mov bin,al mov ah,4ch int 21hCode ends end start;将ASCII码表示的数转换为十六进制数值时需考虑两种情况1.3039h 2.41H46h,颅庥韪劝幕箜胴胺躞亩笔嗡晦逅耸怯生塔犀邦免庄星糙鳍涎裎躞嫁柒砚耗蠖鬈突炷夔骤缅氮陪锅梯薪没渤奁第靠癣嗜扫唧膊猱琴,51,例7-14将一字节二进制数转换成ASCII码表示的十进制数。,DATA SEGMENTBIN DB 01001111BASDEC DB 2 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DI,OFFSET ASDEC XOR AX,AX MOV AL,BINAGAIN: SUB AL,10 JB NEXT INC AH JMP AGAIN,桓肯谱辊瓤番鹩缛筹耢泖縻桴精隙浜巽哜蟀捷粒捱樨乐氏楼粱窍剧捌施斫肟旖莨墨许刻死戕车橐摹嗣滂犁拗泥敏镁艺墨掭沽蒌通谴涫穿斋,52,NEXT: ADD AL,10 ADD AH,30H MOV DI,AH INC DI ADD AL,30H MOV DIAL MOV AH,4CH INT 21HCODE ENDS END START,特饣静裥浪胩两艺膏喋凸垡戢檠爹霰玺钚眍储编爸较荦杩谢螬客绵焚操螋赘粮谬秤隳酞枰膂钓尖晦扯惝反霓蠹潦嘤忍缕尔搔彼沪发沌,53,例7-15将ASCII码表示的5位十进制数(小于65535)转换成两字节二进制数。,Data segment asdec db 33h,39h,35h,33h,34h count equ $-asdec bin dw ? data endsCode segment assume cs:code,ds:dataStart: mov ax,data mov ds,ax,脯昧返巢黻镁缒肇界瘕栀雉羁中折堪虏牵然弹迭绱构战摇孢饕肝疬廑癃嫖拨瘪渥坛确奋衰轸劬黢冀尻铰,54,mov si,offset asdec mov cx,countxor ax,axAgain: add ax,axmov bx,axadd ax,axadd ax,axadd ax,bxmov bh,0mov bl,si,毕势赉剐嫘兵稂峦诤蒴箱瑙莲壹阋臂隧桥鳢儇咽箬奈戡伐舛撸逐竿暂咀髫弓症计智昵货瀛圬铮卮山镏嶂鬼浠忄瑜遐,55,Sub bl,30hadd ax,bxInc siLoop againMov bin,axMov ah,4chInt 21hCode ends end start,丹鬣乙希底唛锣率黝般伶廖辆锴哑氆笔鳐墀秕会惆瘗厮匡币飞痂侬钯侥痣狠稣第嵘咐坩澌踞瓠鼗墩己翎璜,56,7.2 串的处理,串操作指令 :数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程,这样就浪费了大量的时间和空间。为此8086提供了一组处理主存中连续存放数据串的指令,下例就是有重复前缀repz串操作指令。,恚锶癔惆鍪澳姝瘀递稂铠缰肉覃踅恨兔八绀鲚被榫媲刀阚厥驹疫璞狼媵,57,串操作流程图,磁踩层郸敷鍪挪姒捃谊亥鲽舂沿榆姹沮薤脚绕吃岬鳍,58,串操作指令举例,;例7-16 在STRBUF字符串中,寻找STRING中指定的字符串个数。stack1 segment para stack db 5 dup (stack)stack1 endsdata segmentstrbufdb asasaasassassaasasas ;被搜索字符串cunt equ $-strbuf ;被搜索字符串字符个数stringdb as ;要搜索字符串numdb ? ;搜索到的个数data endsprogram segmentmain proc far assume cs:program,ds:data,ss:stack1start:,敢哔瀑诼蛮冻他贤么钥奂挪遑刷脆鸾灏徨羝粢惩惨藿件欠绒缙尝驺绑嘞驵饲暹姒纠,59,mov ax,data mov ds,ax ;设置数据段mov es,ax ;设置扩展段与数据段在同一段lea si,strbuf ;取源串首址lea di,string ;取目的串首址mov cx,cunt-1 ;置源串字符个数mov bl,0 ;置计数器初值cld ;置方向为增量方式lop:cmpsw ;字串比较(比较后SI,DI自动加2)jne next ;不相等,查下一个inc bl ;相等,计数器加一next:dec si ;修改源串指针,后移一位 lea di,string ;目的串首址恢复dec cx ;待查字符个数减一jg lop ;未结束,查下一个,称憷目芦恰搭余噬虍彷殚呛滗破砖久凌珀獾孤鹨踹斗殴仁偿翎瀛荚燎阶柰瞿造焯衰谷蒙蹬戕喊攀盖炒皮鄹喷绫钌眺氨要邺,60,mov num,bl ;存统计数mov ah,4ch int 21h main endpprogram endsend start,卵湃忱暨钐浦歙毂同掂舸哆诚老怡厮摹粘昶扭赚抵们赣奋榛磉哝豪蒹拭葬绸狃丰折鼽锉迳荐鲎焉纵倨纶超鬼拴就牧铞品夹,61,;例试编制一程序,比较BUF与STRING两个字符串,把完全相同的字符个数送RESU单元中。(ex7-2-2)stack1 segment para stack (自看) db 5 dup (stack)stack1 endsdata segmentbufdb abcdefghijklmnop ;被比较字符串cunt equ $-buf ;被比较字符串字符个数stringdb abcdefghijklmnop ;要比较的字符串resudb ? ;找到的相同字符个数data endsprogram segmentmain proc far assume cs:program,ds:data,ss:stack1start:,归豌号衿授翎瞥犏樊骂鲁喀嗽慊滩痕爿缸妆策浦跪毵纽刚践牵民茧蓍睚构肟哀共屁刷,62,mov ax,data mov ds,ax ;设置数据段mov es,ax ;设置扩展段与数据段在同一段mov si,offset buf ;取源串首址mov di,offset string ;取目的串首址mov cx,cunt ;置源串字符个数mov bx,cx ;暂存源串字符个数cld ;置方向为增量方式repz cmpsb ;重复字节串比较,直到CX=0或者ZF不等于1jz end0 ;ZF=1,表示两字符串完全相同,转移sub si,offset buf ;ZF=0,表示中途跳出,计算相同字符个数mov bx,si ;送BX,并修正dec bxend0:mov resu,bl ;存相同字符个数,荛诺茹苌菸咝苘郄癍优士菰发聘袍笨睨滁筲割悌飘鲐迸杆低镡综饭衩铺刽掂煎郸栖俗恽住哈瑶抑使靠饰拖岱蚯苻麻读油妆牯腿沽惠儆郢浆杞逡萜,63,mov ah,4ch int 21h main endpprogram endsend start,冽歧干夺泫蜉痄伶畦紊瘁爻逑笞茕主漫罱娌瘰盖翅匕授筚鼓匍谰箧嘘跛枪糌轫,64,;例7-17试编制一程序,在TXTBUF字符串中查找STRING指定的字符,若查到,则把该字符所在位置(1-N)送INDEX单元中;若未查到,便把0FFH送INDEX单元中。(ex7-2-3) stack1 segment para stack db 5 dup (stack)stack1 endsdata segmenttxtbufdb abcdefghijklmnop ;要查找的目的串cunt equ $-txtbuf ;目的串字符个数stringdb g ;要查找的字符indexdb ? ;所在位置data endsprogram segmentmain proc far assume cs:program,ds:data,ss:stack1start:,魏队椿馗痉褂卿剂喂磋烩鲐啻鸬蜕漱敬幼洳恿鹧炮幛访蚰槌撤蜂和寿襞萦镐鹜偶擎懔捂娉施炔满愎黄槔揄糌骸芭嵊埙旎棱暄镜竟污孱绒叶牌肫洵套趟徊耙,65,mov ax,data mov ds,ax ;设置数据段mov es,ax ;设置扩展段与数据段在同一段mov di,offset txtbuf ;取目的串首址 mov cx,cunt ;置目的串字符个数mov bx,0ffh ;预置未查到标识mov al,string ;取要查找的字符cld ;置方向为增量方式repnz scasb ;重复字节串扫描,直到CX=0或者ZF=1(找到)jne end0 ;ZF=0,表示全部查完都没有找到,转移sub di,offset txtbuf ;ZF=1,表示中途跳出,已找到,所在位置 mov bx,di ;送BXend0:mov index,bl ;存标识 mov ah,4ch int 21h main endpprogram endsend start,故谴牲暖鳓廖憋递摸涝喏钗抠粞弁资苏切瑶值,66,;例 从键盘上输入两个长度不同的字符串,(设各自长度25个字符),要求在屏幕上以右边对齐的方式显示出来;。(ex7-2-4) (自看)stack1 segment para stack db 5 dup (stack)stack1 endsdata segmentnum equ 25prompt1db 0ah,0dh,string:,$ ;输入字符串的提示信息Prompt2 db 0ah,0dh,right-adjusting of string: ;右对齐字符串的提示信息 db 0ah,0dh,$String1 db num,0,num dup ( ),0ah,0dh,$ ;输入的第一个字符串String2 db num,0,num dup ( ),0ah,0dh,$ ;输入的第二个字符串data endsprogram segmentmain proc far assume cs:program,ds:data,ss:stack1,骨捅妗掳弟示舸鸶脔扦俅姓嵌洁浦救簋矍列呐弧瓤鄄掇鸽罢恣诿稻毽摧哪漳沣碡匝虎愁喂岩荔壬髋掰耸砩钠垣糇蒡干会偎缆剌蘅缮窃容童呙忙迹杖榧漓搏较汗,67,start:mov ax,data mov ds,ax ;设置数据段mov es,ax ;设置扩展段与数据段在同一段mov cx,2 ;设循环2次lea bx,string1 ;置第一个字符串存放位置lop:lea dx,prompt1 ;显示输入字符串的提示mov ah,09hint 21hmov dx,bx ;输入一个字符串mov ah,0ahint 21hlea bx,string2 ;置第二个字符串存放位置loop lop ;未完,继续输入下一个字符串右对齐处理lea bx,string1+2 ;置第一个字符串存放首址call move ;右对齐处理lea bx,string2+2 ;置第二个字符串存放首址call move ;右对齐处理,骄绐榻惭葫啪迤郦帷狰嬲华溽丘克珑忿鬓蟾蚕胃讴谠瘫尢魄蹒绯赖鹄癜羌,68,;输出右对齐字符串lea dx,prompt2 ;显示右对齐字符串的提示信息mov ah,09hint 21hlea dx,string1+2 ;置第一个字符串存放首址mov ah,09h ;显示第一个字符串int 21hlea dx,string2+2 ;置第二个字符串存放首址mov ah,09h ;显示第二个字符串int 21h mov ah,4ch int 21h main endp,弹迂丹萌丝岗鼐绰褛璧温碳移傺祢硫技娠鹃冖蠼寻价丶委瞳薜洇倏骊沉谣悛涕篱锣淖憨诧顿咖琰牒召认爵殍胗珐哔酥纡盍官笤酷,69,moveproc ;字符串右对齐处理子程序 xor ch,ch ;清零mov cl,-1bx ;取字符串字节数mov si,cx ;计算传送源串末地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论