汇编语言程序设计——循环程序设计

循环控制指令

80x86指令系统中,有三条专门的循环控制指令:
属于程序转移类指令,也是相对转移。
相对位移量是8位以补码表示的二进制带符号整数。
隐含使用寄存器CX作循环次数计数器。在进入循环前,把循环次数送入CX。执行循环控制指令时,对CX进行减1计数
LOOP指令:
格式:LOOP 目标地址
功能:CX <==(CX)-1;
若(CX)≠0,转移到目标地址,继续循环;
否则( CX)=0 )退出循环顺序执行。

实例1

把字符串中大写改成小写

DATA SEGMENT ;设置数据段
STRING DB  41H,42H,0H
BX DW ?
DATA ENDS
STACK1 SEGMENT PARA STACK  ;设置堆栈
               DW 20H DUP(0)
 STACK1 ENDS
 CODE SEGMENT              ;设置代码段
            ASSUME CS: CODE, DS: DATA, SS: STACK1
AGAIN:      MOV	AX, DATA   ;置段基指于DS
            MOV DS,AX		
			MOV BX,OFFSET STRING
			MOV AL,[BX]   ;取一个字符
			OR  AL,AL     ;是否为结尾符0
			JZ  DONE      ;是,退出循环
			CMP AL,'A'    ;是否为大写A~Z
			JB NEXT       ;CF=1 AND ZF=0 时跳转到NEXT,否则继续执行
			CMP AL,'Z'
			JA NEXT
			OR AL,20H    ;A和a相差20H,是大写转换为小写
			MOV [BX],AL
NEXT: 		INC BX
			JMP AGAIN
DONE:
			MOV AH,4CH     ;调用4CH功能,4CH功能号
            INT 21H        ;终止程序
 CODE ENDS
      END AGAIN

实例2

1~100求和

DATA SEGMENT ;设置数据段
SUM DW ?
DATA ENDS
STACK1 SEGMENT PARA STACK  ;设置堆栈
               DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT              ;设置代码段
            ASSUME CS: CODE, DS: DATA, SS: STACK1
STATA:      MOV	AX, DATA   ;置段基指于DS
            MOV DS,AX	
            XOR AX,CX
            MOV CX,100
AGAIN:      ADD AX,CX    ;从100,99,........,2,1倒序累加
            LOOP AGAIN   ;CX <==(CX)-1
            MOV SUM,AX
            MOV AH,4CH
			INT 21H
CODE:	ENDS
		END STATA
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值