Loop指令
Loop指令其实就是 循环 的意思
- Loop指令需要和CX寄存器配合使用, 用于循环操作, 类似于高级语言中的for, while等
- 使用格式:
mov cx, 循环的次数 (当遇到Loop标号时 cx就代表循环的次数)
标号: (标明后面就是需要循环的循环体)
循环执行的程序代码
Loop 标号
- Loop指令执行流程:
步骤1. 将cx寄存器的值 - 1, cx = cx - 1;
步骤2. 判断cx的值 ;- 如果不为零 就执行标号处的代码, 然后执行步骤1
- 如果为零, 执行Loop后面的代码
- Loop的实现其实就是判断cx > 0 然后jump到标号所在地址
mov ax, ffffh
mov ds, ax //!< 数据段段地址
mov dx, 0h
mov bx, 0h //!< 清空dx和bx 用来接收数据
mov cx, 3h //!< 设置循环次数为3
s: mov al, [bx] //!< 循环取ds:[bx]中的数据, 赋值给al
mov ah, 0h //!< 清空ah中的数据, 用来累加的时候进位
add dx, ax //!< dx = ax + dx
add bx, 1 //!< bx = bx + 1
loop s //!< 循环s标记下的代码
补充:
获取数据, 除了通过ds段来获取, 还可以通过其他段地址来获取:
例:mov ax, ds:[0], mov ax, cs:[0]等
网友评论