循环控制指令是一组增强型的条件转义指令,用来控制一个程序段的重复执行,重复次数由CX寄存器中的内容决定。这类指令的字节数均为2,第1字节是操作码,第2字节是8位偏移量,转移的目标都是短标号。
LOOP 循环指令(Loop)
指令格式:LOOP 短标号
指令功能:这条指令用于控制重复执行一系列指令。指令执行前必须事先将重复次数放在CX寄存器中,每执行一次LOOP指令,CX自动减1。如果减1后CX≠0,则转移到指令中所给定的标号处继续循环;若自动减1后CX=0,则结束循环,转去执行LOOP指令之后的那条指令。一条LOOP指令相当于执行一下两条指令的功能:
DEC CX
JNZ 标号
以下是
计算 123 * 236 的结果 最后得到结果为 AX = 7164H
assume cs:code
; loop 循环指令 cx = cx - 1 检测cx 是不是等于 0
; 循环体
; cx 循环次数
code segment
mov ax, 0
mov cx, 123
addNumber: add ax, 236
mov dx, 1000H
mov dx, 2000H
loop addNumber ;标号 地址
mov ax, 4C00H
int 21H
code ends
end
以下是
求FFFF:0 到FFFF:F 字节型数据的和 结果存放在DX中
assume cs:code
; loop 循环指令 cx = cx - 1 检测cx 是不是等于 0
code segment
mov ax, 0FFFFH
mov ds, ax
mov bx, 0
mov ax, 0
mov dx, 0
mov cx, 16
addNumber: mov al, ds:[bx]
add dx, ax
inc bx
loop addNumber ;标号 地址
mov ax, 4C00H
int 21H
code ends
end
注:数据不允许字母开头 0FFFFH 0BCH
以下是运行结果:
将FFFF:0~FFFF:F 中的字节型数据 复制到 0:200 - 0:20F中
第一种方式:
assume cs:code
code segment
mov bx, 0
mov cx, 16
copyDate: mov ax, 0FFFFH
mov ds, ax
mov dl, ds:[bx]
mov ax, 0020H
mov ds, ax
mov ds:[bx], dl
inc bx
loop copyDate
mov ax, 4C00H
int 21H
code ends
end
第二种方式
assume cs:code
; 数据不允许字母开头 0FFFFH 0BCH
code segment
mov ax, 0FFFFH
mov ds, ax
mov ax, 0020H
mov es ,ax
mov bx, 0
mov cx, 16
copyDate: mov dl, ds:[bx]
mov es:[bx], dl
inc bx
loop copyDate ;标号 地址
mov ax, 4C00H
int 21H
code ends
end
运行结果:
注:0:200H ~ 0:2FFH 和 0:7E00H ~ 0:FFFFH 属于可用区域,否则会涉及到内存安全的问题。
向内存0:200 - 0:23F 传递数据0~63(3FH)
assume cs:code
code segment
mov ax, 0020H
mov es, ax
mov bx, 0
mov ax, 0
mov cx, 64
addNumber: mov es:[bx], al
inc bx
inc al
loop addNumber
mov ax, 4C00H
int 21H
code ends
end
运行结果:
下面的程序功能是将 mov ax, 4C00H 之前的指令复制到内存 0:200
需要考虑:
1.复制的是什么?
2.从哪里到哪里?
3.有多少个字节?
assume cs:code
code segment
mov ax, cs
mov ds, ax
mov ax, 0020H
mov es, ax
mov bx, 0
mov cx, 17H
copyDate: mov al, ds:[bx]
mov es:[bx], al
inc bx
loop copyDate
mov ax, 4C00H
int 21H
code ends
end
要复制的指令所占的字节
程序执行后:
上一篇:汇编语言 AND逻辑与指令
下一篇:使用DOSBox编译汇编代码
推荐阅读最新更新时间:2024-11-13 07:58
设计资源 培训 开发板 精华推荐
- AM1G-2418DZ ±18V 1 瓦 DC-DC 转换器的典型应用
- NCP333FCT2GEVB:带放电路径的负载开关,1.5A
- 萝莉遥控器3代 万能遥控器主板
- 超小两路光敏电阻传感器模块(GL5616 & LM393)
- 基于74LS90的电子时钟设计
- ADD5043-915-1-GEVK:用于 DVK-2 评估套件的 AX5043 915 MHz 附加套件
- CY8CMBR3102 触摸屏多传感器类型的典型应用
- ST可编程的65W USB Type-C PD的充电器参考设计
- MCP47A1、6 位易失性 DAC 的典型应用,带有用于设置点或阈值校准的命令代码
- 使用 MaxLinear, Inc 的 SPX385N-1.2/TR 的参考设计