loop指令
-
功能︰实现循环(计数型循环)
-
指令的格式
- loop 标号
-
CPU 执行loop指令时要进行的操作
-
(cx)=(cx)-1 ;
-
判断cx中的值
不为零则转至标号处执行程序如果为零则向下执行。
-
-
要求
- CX中要提前存放循环次数,因为(cx)影响着loop指令的执行结果
- 要定义一个标号
assume cs: code
code segment
mov ax,2
mov cx,11 (add执行11次相当于dowhile相当于--CX)
s: add ax,ax
loop s
mov ax,4C00h
int 21h
code ends
end
用Debug测试
用loop指令编程
- 用cx和loop指令相配合实现循环功能的三个要点∶
- 在Cx中存放循环次数;
- 用标号指定循环开始的位置
- 在标号和loop指令的中间,写上要循环执行的程序段(循环体)。
用loop指令编程
-
问题:计算ffff:0006字节单元中的数乘以3,结果存储在dx中
assume cs: code code segment mov ax,0ffffh;在汇编源程序中,数据不能以字母开头,要在ffff前面加0 mov ds,ax mov bx,6 mov al,[bx] mov ah,0 mov dx,0;结果存储在dx中要先赋值为0 mov cx,3;设置需要循环次数 s:add dx,ax loop s mov ax,4c00h int 21h code ends end
-
其他必要的考虑:运算后的结果是否会超出dx所能存储的范围?
-
分析:ffff:0006单元中的数是一个字节型的数据,范围在0~255之间,则用它和3相乘结果不会大于65535,不会出现超界。。