好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

汇编语言第五章循环计本.ppt

49页
  • 卖家[上传人]:pu****.1
  • 文档编号:588190654
  • 上传时间:2024-09-07
  • 文档格式:PPT
  • 文档大小:463.02KB
  • / 49 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第五章第五章 汇编语言程序设计汇编语言程序设计第一节第一节 循环结构程序设计循环结构程序设计 一、循环结构程序概述一、循环结构程序概述 在程序中,在程序中,凡能有规则重复执行的程序段凡能有规则重复执行的程序段称作循环称作循环 包含循环程序段的程序称为循环结构程序包含循环程序段的程序称为循环结构程序 1、循环程序的组成、循环程序的组成...循环的初始状态:循环的初始状态:设置一些初值,如设寄存器、设置一些初值,如设寄存器、计数器的初值等计数器的初值等循环体:循环体:由工作部分和修改部分构成工作部由工作部分和修改部分构成工作部分是循环程序具体要完成的功能,是循环的主分是循环程序具体要完成的功能,是循环的主要部分,修改部分是控制循环的一些参数有规要部分,修改部分是控制循环的一些参数有规律的变化律的变化循环控制部分:循环控制部分:控制循环的结束控制循环的结束 2 2、循环程序的结构形式:、循环程序的结构形式:循环初始化循环初始化 循环控制条件循环控制条件循环体循环体循环初始化循环初始化循环体循环体循环控制条件循环控制条件 二、循环程序设计方法二、循环程序设计方法(95页页)1.循环指令循环指令说明说明:①①这些指令对状态标志位都没影响这些指令对状态标志位都没影响.②②LOOPE/LOOPZ 和和LOOPNE/LOOPNZ两两类类指指令令有有条条件件地地形形成成循循环环,前前者者当当规规定定的的循循环环次次数数未未完完成成时时,还还必必须须满满足足“相相等等”或或“等于零等于零”的条件,才能继续循环。

      后者类似,条件相反的条件,才能继续循环后者类似,条件相反两个两个条件必须同时成立,条件必须同时成立,才继续循环才继续循环动画动画 ((CX))-1 CX循环次数循环次数CX循环体循环体((CX))=0??YNLOOPE/LOOPZZF=1?YN((CX))-1 CX循环次数循环次数CX循环体循环体((CX))=0??YNLOOP操作图操作图ZF=0?LOOPNE/LOOPNZ 例例1 1:在屏幕上显示:在屏幕上显示1010行行 ““how do you do”how do you do”,, 程序名程序名: exa.asm: exa.asm ((2 2)求)求1~N1~N自然数的和,结果存在自然数的和,结果存在RESULTRESULT单单元程序如下:程序如下: MOVMOV AX AX,, 0 0 MOVMOV CX CX,, N NDONEDONE::ADD AXADD AX,,CXCX LOOPLOOP DONE ;DONE ;和它等价的指令是?和它等价的指令是? MOVMOV [RESULT] [RESULT],,AXAX (2)在一首址为在一首址为ARRAY1长度为长度为20的字符串查找字符的字符串查找字符“*”,如果找到,则将结果单元,如果找到,则将结果单元RESULT清清0,否则,否则结果单元为全结果单元为全1。

      LEA SI,, ARRAY1 DEC SI ;为后面循环从第为后面循环从第1个字符作准备个字符作准备. MOV [RESULT],,0FFH ;先假设没找到先假设没找到,送全送全1 MOV CX,,20 MOV AL,,’*’ ;;*的的ASCII为为42D=2AHDONE::INC SI CMP AL,,[SI] ;;与第一个字符比较与第一个字符比较 LOOPNE DONE ;;不相等且不相等且CX<>0,,ZF=0继续循环继续循环 Jcxz END1 ;退出循环时退出循环时CX为为0 或没找到或没找到 MOV [RESULT],,0 ;找到找到END1:: HLT 2 2 串操作指令串操作指令(75(75页页) )包括包括串传送、存取、比较、扫描串传送、存取、比较、扫描等等操作操作. . 利利用用串串操操作作指指令令可可以以直直接接处处理理两两个个存存储储器操作数,方便地处理字符串或数据块。

      器操作数,方便地处理字符串或数据块 串指令的特点串指令的特点((1 1).指令格式).指令格式串指令可以显式地带有操作数,也可以使串指令可以显式地带有操作数,也可以使用隐含格式例如串传送指令用隐含格式例如串传送指令MOVSMOVS,,可以有以可以有以下几种格式:下几种格式:显式:显式:MOVS DST,SRCMOVS DST,SRC隐式:隐式:MOVSBMOVSB; ;字节传送字节传送 MOVSWMOVSW; ;字传送字传送 MOVSDMOVSD; ;双字传送双字传送 ((2 2).操作数).操作数串指令可以处理串指令可以处理寄存器操作数寄存器操作数和和存储器操作存储器操作数数若为寄存器操作数则只能放在累加器中,对若为寄存器操作数则只能放在累加器中,对于字节操作数应放在于字节操作数应放在ALAL中,字操作数放在中,字操作数放在AXAX中对于存储器操作数应先建立地址指针:对于存储器操作数应先建立地址指针: 若为若为源操作数源操作数,则必须把,则必须把源串首地址放入源串首地址放入SISI寄存器寄存器,,缺省情况寻址缺省情况寻址DSDS所指向的段。

      所指向的段 若为若为目标操作数目标操作数,则必须把,则必须把目标串首地址放目标串首地址放入入ES:DIES:DI寄存器寄存器,,不允许使用段超越前缀不允许使用段超越前缀 ((3 3).地址指针的修改).地址指针的修改串指令执行后系统自动修改地址串指令执行后系统自动修改地址指针指针SISI、、DIDI若为字节型操作其修改若为字节型操作其修改量为量为1 1,若为字型操作其修改量为,若为字型操作其修改量为2 24 4).方向标志).方向标志方向标志方向标志DFDF决定地址指针的增减决定地址指针的增减方向方向若若DFDF==0 0,,则地址指针增量;若则地址指针增量;若DFDF==1 1,,则地址指针减量则地址指针减量 ((5 5).重复前缀).重复前缀串指令前可以加重复前缀串指令前可以加重复前缀REPEREPE//REPZREPZ、、 REPREP或或REPNEREPNE//REPNZ,REPNZ,使后跟的串指令重复使后跟的串指令重复执行 重复次数应事先初始化在计数器重复次数应事先初始化在计数器CXCX 二、串指令二、串指令1 1.串传送指令.串传送指令 MOVS(76MOVS(76页页) )显式格式:显式格式:MOVS DST,SRCMOVS DST,SRC隐含格式:隐含格式:MOVSBMOVSB MOVSW MOVSD MOVSW MOVSD功能功能: :源源→→目标目标, ,即即([SI])→ES:[DI],([SI])→ES:[DI],且自且自动修改动修改SISI、、DIDI指针。

      指针标志:不影响标志位标志:不影响标志位 串传送指令允许目的串和源串都是串传送指令允许目的串和源串都是存储器操作数,在这一点上有别于存储器操作数,在这一点上有别于M0VM0V指令动画演示动画演示 ①① 把自把自buffer1buffer1开始的开始的200200个字节数据传送到个字节数据传送到buffer2buffer2开开始的区域中始的区域中 MOVMOVAX,SEG buffer1AX,SEG buffer1MOVMOVDS,AXDS,AXMOV MOV AX,SEG buffer2AX,SEG buffer2MOV MOV ES,AXES,AXLEALEASI, buffer1SI, buffer1LEALEADI, buffer2DI, buffer2MOVMOVCX,200CX,200CLDCLDREPREPMOVSBMOVSB 和它等价的程序段是什么?和它等价的程序段是什么?;200;200个字节数据传送完毕后执行下一条指令个字节数据传送完毕后执行下一条指令 前面的例子中语句 前面的例子中语句 REPREP MOVSBMOVSB和它等价的程序段是什么?和它等价的程序段是什么?LAST:MOV AL,[SI]LAST:MOV AL,[SI] MOV ES:[DI],AL MOV ES:[DI],AL INC SI INC SI INC DI INC DI LOOP LAST LOOP LASTLast: Last: movsbmovsb Loop last Loop last 2 2.取串指令.取串指令 LODS显式格式:显式格式:LODS SRCLODS SRC隐含格式隐含格式::LODSBLODSB LODSW LODSD LODSW LODSD功能:源功能:源→→累加器,即累加器,即([SI]) →AL([SI]) →AL(或(或AXAX、、EAXEAX),),且自动修改且自动修改SISI指针。

      指针说明:若说明:若DFDF==0,0,则则LODSB(LODSB(或或LODSW)LODSW)使使SISI加加1 1(或(或2 2);若);若DFDF==1 1,则,则LODSBLODSB(或(或LODSWLODSW)使)使SISI减减1 1(或(或2 2)标志:不影响标志位标志:不影响标志位 ② ② 自自buffer1buffer1开始的开始的1010个非压缩个非压缩BCDBCD码形式存放的十进码形式存放的十进制数转换成制数转换成ASCIIASCII码,按顺序显示在屏幕上设码,按顺序显示在屏幕上设DSDS、、ESES已已按要求设置按要求设置 LEALEA SI, buffer1 SI, buffer1MOVMOV CX,10 CX,10CLDCLD MOV AH,02H MOV AH,02H GET GET: : LODSBLODSBOROR AL,30H AL,30HMOV DL,ALMOV DL,AL INT 21H INT 21H LOOPLOOP GET GET HLT HLT 3 3.存串指令.存串指令 STOS显式格式:显式格式:STOS DSTSTOS DST隐含格式:隐含格式:STOSBSTOSB STOSW STOSW STOSD STOSD功能:累加器功能:累加器→→目标,即目标,即(AL((AL(或或AXAX、、EAX))EAX)) →ES:[DI] →ES:[DI],,且自动修改且自动修改DIDI指针。

      指针说明:若说明:若DFDF==0,0,则则STOSBSTOSB使使DIDI加加1 1;; 若若DFDF==1 1,,则则STOSBSTOSB使使DIDI减减1 1标志:不影响标志位标志:不影响标志位 ③ ③ 把自把自buffer1buffer1开始的非压缩开始的非压缩BCDBCD码存放码存放的十进的十进制数制数转换成转换成ASCIIASCII码码,,并放到并放到buufer2buufer2中中, ,字符串字符串长度为长度为1010字节设DSDS、、ESES已按要求设置已按要求设置 LEA LEA SI, buffer1 SI, buffer1LEALEA DI, buffer2 DI, buffer2MOVMOV CX,10 CX,10CLDCLD LOP LOP: : LODSBLODSBOROR AL,30H AL,30HSTOSBSTOSBLOOP LOPLOOP LOP 例例. . 用用4 4到到5 5种方法编写实现以下功能的程序片断种方法编写实现以下功能的程序片断。

      ① ① 把自把自buffer1buffer1开始的开始的200200个字节数据传送到个字节数据传送到buffer2buffer2开开始的区域中始的区域中 MOVMOVAX,SEG buffer1AX,SEG buffer1MOVMOVDS,AXDS,AXMOV MOV AX,SEG buffer2AX,SEG buffer2MOV MOV ES,AXES,AXLEALEASI, buffer1SI, buffer1LEALEADI, buffer2DI, buffer2MOVMOVCX,200CX,200CLDCLDREPREPMOVSBMOVSB 和它等价的程序段是什么?和它等价的程序段是什么?;200;200个字节数据传送完毕后执行下一条指令个字节数据传送完毕后执行下一条指令 前面的例子中语句 前面的例子中语句 REPREPMOVSBMOVSB和它等价的程序段是什么?和它等价的程序段是什么?Last:MovLast:Mov al,[sial,[si] ] MovMov ES:[di],alES:[di],al Inc Inc sisi Inc Inc didi Loop last Loop lastLast: Last: movsbmovsb Loop last Loop lastLast:LodsbLast:Lodsb stosbstosb Loop last Loop lastMOV CX,100MOV CX,100CLDCLDREP MOVSWREP MOVSW 6 6.串比较指令.串比较指令 CMPS显式格式:显式格式:CMPS DST,SRCCMPS DST,SRC隐含格式:隐含格式:CMPSBCMPSB CMPSW CMPSWCMPSDCMPSD功能:源-目标功能:源-目标, ,即即([SI])([SI])--(ES:[DI])(ES:[DI]),,并且根并且根据指令执行结果设置标志位,然后自动修改据指令执行结果设置标志位,然后自动修改SISI、、DIDI指针。

      指针说明:若说明:若DFDF==0,0,则则CMPSB(CMPSB(或或CMPSW)CMPSW)使使SISI、、DIDI各加各加1 1(或(或2 2)若DFDF==1,1,则则CMPSBCMPSB((或或CMPSWCMPSW))使使SISI、、DIDI各减各减1 1((或或2 2))标志:影响标志:影响ZFZF、、SFSF、、CFCF、、OFOF、、AFAF和和PFPFREPE/REPZ REPE/REPZ cmpscmps : :指令结束后如果指令结束后如果ZfZf为为1 1,表明两串数,表明两串数据相等,据相等,ZfZf为为0 0 ,表明至少有一个元素不相等 ,表明至少有一个元素不相等或或REPNE/REPNZREPNE/REPNZ  CMPSCMPS   上机作业:字符串比较上机作业:字符串比较(5-18.asm)设设数据区有两个字节串,串数据区有两个字节串,串1 1的长度为的长度为5 5,,串串2 2的长度为的长度为10.10.请判断:请判断: 若串若串2 2的最后的最后5 5 个字符和串 个字符和串1 1 相同, 相同,则置则置FLAGFLAG单元为单元为““Y”Y”,,否则置为否则置为““N”N” STRING1 DB ‘ ….. ’STRING2 DB ‘………..’FLAG DB ‘Y’MOV SI,OFFSET STRING1+4MOV DI,OFFSET STRING2+9MOV CX,5STDREPE CMPSBJZ EXITMOV FLAG ‘N’EXIT: MOV AH, 4CHINT 21H 7 7.串扫描指令.串扫描指令 SCAS ( (搜索关键字)搜索关键字)(82页页)显式格式:显式格式:SCAS DST SCAS DST 隐含格式:隐含格式:SCASB SCASWSCASB SCASW 功能:功能: 累加器-目标累加器-目标, ,即即(AL((AL(或或AX))AX))-(-(ES:[DI]ES:[DI]),),并且并且根据指令执行结果设置标志,然后自动修改根据指令执行结果设置标志,然后自动修改DIDI指针。

      指针指令执行后,指令执行后,DIDI自动指向下一个元素,若自动指向下一个元素,若ZfZf==1 1,,说说明相等,明相等,   如果用   如果用REPEREPE  SCASBSCASB,,指令执行后,指令执行后,DIDI自动指向下自动指向下一个元素,若一个元素,若ZfZf==1 1,,说明串中每一个都与目标相等,说明串中每一个都与目标相等,    REPNE/REPNZREPNE/REPNZ  SCASB SCASB ④④在一首址为在一首址为ARRAY1长度为长度为20的字符串查找字符的字符串查找字符“*”,如果找到,则将结果单元,如果找到,则将结果单元RESULT清清0,否则,否则结果单元为全结果单元为全1 LEA SI,, ARRAY1MOV [RESULT],,0FFH ;先假设没找到先假设没找到,送全送全1 MOV CX,,20 MOV AL,,’*’ ;;*的的ASCII为为42D=2AH CLD REPNE SCASB JNZ END1 ;退出循环时退出循环时CX为为0 或或 没找到没找到 MOV [RESULT],,0 ;找到找到END1:: HLT (三)循环结构的基本模式:(三)循环结构的基本模式: 单重循环结构和多重循环结构单重循环结构和多重循环结构(四)常用循环控制方法:(四)常用循环控制方法:1.计数器控制法:适用于循环次数已知情况。

      计数器控制法:适用于循环次数已知情况 2 .2 .条件控制法条件控制法 :: 循环次数未知的情况循环次数未知的情况 3. 3. 逻辑尺控制法:适用于作特殊的处理逻辑尺控制法:适用于作特殊的处理 例例2:求:求1~N的自然数的和设的自然数的和设N为为50以内的数以内的数DATA SEGMENT SJ DB 31,?,? RESULT DW ?? DATA ENDS CODE SEGMENT ASSUME CS::CODE,,DS::DATA START:: MOV AX,,DATA MOV DS,, AX MOV AX,, 0 MOV CL,, [SJ] DONE:: ADD AL,, CL ADC AH,,0 DEC CL JNZ DONE MOV [RESULT],,AX MOV AH,,4CH INT 21H CODE ENDS END START 作业作业从从自自然然数数1开开始始累累加加,,直直到到累累加加和和大大于于500为为止止,,统统计计被被累累加加的的自自然然数数的的个个数数,,并并把把统统计计的的个个数数送送入入单单元元N中中,,把把累累加加和和送送入入单单元元SUM中中。

      sum1.asm) 分分析析::用用两两个个寄寄存存器器,一一个个放放累累加加的的次次数数,,一一个放累加的和,条件控制法个放累加的和,条件控制法. 上机作业:上机作业:1 把把x单元开始存放的单元开始存放的20个无符号数个无符号数中的最大数送中的最大数送z单元,并显示出最大数单元,并显示出最大数 要求从键盘动态输入要求从键盘动态输入20个数,并且个数,并且都是两位数都是两位数bj1.asm) BXBX1234例例5.1::把把 BX BX 中中的的二二进进制制数数以以十十六六进进制制的的形式显示在屏幕上形式显示在屏幕上. ………… MOV CH, 4MOV CH, 4ROTATE: MOV CL, 4ROTATE: MOV CL, 4 ROL BX, CLROL BX, CL MOV AL, BL MOV AL, BL AND AL, 0FH AND AL, 0FH ADD AL, 30HADD AL, 30H ; ’0’~’9’ ASCII 30H~39H ; ’0’~’9’ ASCII 30H~39H CMP AL, 3AH ; CMP AL, 3AH ;是否大于是否大于9 9 JL PRINTITJL PRINTIT ADD AL, 7HADD AL, 7H ; ’A’~’F’ ASCII 41H~46H ; ’A’~’F’ ASCII 41H~46HPRINTIT: MOV DL, ALPRINTIT: MOV DL, AL MOV AH, 2 MOV AH, 2 INT 21H INT 21H DEC CHDEC CH JNZ ROTATE JNZ ROTATE ………… ………… MOV BX, 0 MOV BX, 0NEWCHAR: MOV AH, 1 NEWCHAR: MOV AH, 1 ;键盘输入;键盘输入 INT 21HINT 21H SUB AL, 30H SUB AL, 30H JL EXIT ; JL EXIT ; <0<0退出退出 CMP AL, 9CMP AL, 9 JG EXIT ; JG EXIT ; >9>9退出退出 CBWCBW XCHG AX, BX XCHG AX, BX MOV CX, 10 MOV CX, 10 MUL CX MUL CX XCHG AX, BX XCHG AX, BX ADD BX, AX ADD BX, AX JMP NEWCHAR JMP NEWCHAREXIT: ……EXIT: ……例:从键盘接收十进制数并存入例:从键盘接收十进制数并存入 BXBX( ( 0×10)+1 )×10+2 )×10+5 1 2 531 32 35BxBx始终放转换始终放转换后用的数后用的数 x dw 110,120,130,140,150,160,170,180,190,200 y dw ? ……….. …………..MOV AX, X MOV BX, OFFSET X MOV CX, 9 L1: INC BX INC BX CMP AX , [BX] JAE L2 XCHG AX, [BX] L2: LOOP L1 MOV Y,AX此程序段完成什么功能此程序段完成什么功能复习复习 在一首址为在一首址为ARRAY1长度为长度为20的字符串查找字符的字符串查找字符“*”,如果找到,则将结果单元,如果找到,则将结果单元RESULT清清0,否则,否则结果单元为全结果单元为全1。

      请填空请填空 LEA DI,,MOV [RESULT],,0FFH ;先假设没找到先假设没找到,送全送全1 MOV CX,, MOV AL,,2AH ;;*的的ASCII为为42D=2AH CLD REPNE ;退出循环时退出循环时CX为为0 或或 没找到没找到 MOV [RESULT],,0 ;找到找到END1:: HLT 程序段如下:程序段如下: MOV AX,, 0 MOV CX,, NDONE::ADD AX,,CX LOOP DONE MOV [RESULT],,AX该程序段完成什么功能该程序段完成什么功能? X DW ?X DW ?HEAD DW 3,5,15,23,37,49,52,65,78,99HEAD DW 3,5,15,23,37,49,52,65,78,99END1 DW 105END1 DW 105N DW 32 N DW 32 例例5-4(166页页):将正数:将正数 N N 插入一个已整序的正数插入一个已整序的正数字数组字数组(按递增按递增顺序)顺序) ………… MOV AX, N MOV AX, N MOV HEAD-2, 0FFFFH MOV HEAD-2, 0FFFFH MOV SI, 0 MOV SI, 0COMPARE:COMPARE: CMP END1 [SI], AX;CMP END1 [SI], AX;相对寻址相对寻址 JLE INSERTJLE INSERT ;小于;小于N,N,直接插入最后直接插入最后 MOV BX, END1 [SI]MOV BX, END1 [SI] MOV END1 [SI+2], BX MOV END1 [SI+2], BX SUB SI, 2 SUB SI, 2 JMP SHORT COMPAREJMP SHORT COMPAREINSERT:INSERT: MOV END1 [SI+2], AX MOV END1 [SI+2], AX …… ……3 35 5151523233737494952526565787899991051053232-1-1HEADHEADEND1END1N N X X  例例5.55.5:有数组:有数组 x(x1,x(x1,x2,……x2,……,x10) ,x10) 和和 y(y1,y2,……,y10)y(y1,y2,……,y10),, 编程计算编程计算 z z(z1,(z1,z2,……z2,……,z10),z10)z1 = x1 + y1z1 = x1 + y1z2 = x2 + y2z2 = x2 + y2z3 = x3 - y3z3 = x3 - y3z4 = x4 - y4z4 = x4 - y4z5 = x5 - y5z5 = x5 - y5z6 = x6 + y6z6 = x6 + y6z7 = x7 - y7z7 = x7 - y7z8 = x8 - y8z8 = x8 - y8z9 = x9 + y9z9 = x9 + y9z10= x10 + y10z10= x10 + y10 逻辑尺:逻辑尺:0 0 1 1 0 1 1 1 0 00 0 1 1 0 1 1 1 0 01 1 减法减法0 0 加法加法把标志位放入存储单元把标志位放入存储单元, ,存存储单元就称为逻辑尺储单元就称为逻辑尺 x x dwdw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y y dwdw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z z dwdw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 z1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_rule logic_rule dwdw 00dch ;0000,0000,1101,1100 00dch ;0000,0000,1101,1100 ………… movmov bxbx, 0, 0 movmov cxcx, 10, 10 movmov dxdx, logic_rule, logic_rulenext: next: movmov ax, ax, x[bxx[bx] ] shrshr dxdx, 1, 1 jcjc subtract subtract add ax, add ax, y[bxy[bx] ] jmpjmp short result short result ; ; 向前引用向前引用subtract: subtract: sub ax, sub ax, y[bxy[bx] ]result: result: movmov z[bxz[bx], ax], ax add add bxbx, 2, 2 loop next loop next …… …… 5.1.3 多重循环程序设计【【例例5.75.7】】在在以以BUFBUF为为首首址址的的字字存存储储区区中中存存放放有有N N个个有有符符号号数数,,现现需需将将它它们们按按大大到到小小的的顺顺序序排排列列在在BUFBUF存储区中,试编写其程序。

      存储区中,试编写其程序 采采用用冒冒泡泡排排序序算算法法从从第第一一个个数数开开始始依依次次对对相相邻邻两两个个数数进进行行比比较较,,如如次次序序对对,,则则不不交交换换两两数数位位置置;;如如次次序序不不对对则则使使这这两两个个数数交交换位置,则第一遍比较后最小值排到最后换位置,则第一遍比较后最小值排到最后 •数数 108169032•第一遍第一遍 101690328•第二遍第二遍 169032108•第三遍第三遍 903216108•程序流程图如书本图程序流程图如书本图5--8所示 •程序如下:程序如下:DATASEGMENTBUFDW 3,,-4,,6,,7,,9,,2,,0,,-8,,-9,,-10DATAENDSCODESEGMENTASSUME CS::CODE,,DS::DATA,,SS::STACK START::MOVAX,,DATAMOVDS,,AXMOVCX,,10 ;元素个数;元素个数DEC CX ; ;比较遍数比较遍数LOOP1:: MOVDX,,CX ;保保存存外外循循环环的的循循环环次次数数也可以做内循环计数(比较也可以做内循环计数(比较次数)次数)MOVBX,,0LOOP2:: MOVAX,,BUF[BX] ;相邻两数比较;相邻两数比较CMP AX,,BUF[BX+2]JGE LXCHGAX,,BUF[BX+2];;大数放大数放AXMOV BUF[BX],,AX ;;并并将将大大数数送送相应单元相应单元 L::ADDBX,,2 ;;进下一个单元,准备取下一个数进下一个单元,准备取下一个数 Loop loop2 MOVCX,,DX ;;恢复外循环次数,恢复外循环次数, LOOP LOOP1 MOVAH,,4CH INT21HCODEENDSEND START思考:外循环次数还可用什么指令处理?思考:外循环次数还可用什么指令处理? 上机:上机: 编写打印如下图形程序编写打印如下图形程序(yhsj)01 02 1 03 2 1 04 3 2 1 05 4 3 2 1 06 5 4 3 2 1 07 6 5 4 3 2 1 08 7 6 5 4 3 2 1 09 8 7 6 5 4 3 2 1 0 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.