loop指令为循环指令,所有的循环指令都是短转移指令
所有条件转移指令都是短转移指令,对于的机器码中包含了位移的范围(-128~127)
这个位移范围是编译器在编译的时候计算出来的
指令格式:loop 标号(cx=cx-1,如果cx≠0,转移到标号处执行)
操作:
(1)cx=cx-1
(2)如果cx≠0,IP=IP+八位位移 (不低于0则进行跳转,等于零则继续运行下面的程序)
八位位移=标号处的地址-loop指令后第一个字节的地址
问题:补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,
将它的偏移地址存贮在dx中。
;补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,
;将它的偏移地址存贮在dx中。
;通过loop指令来查找字节型数据,cx
assume cs:code
code segment
start: mov ax,2000H
mov ds,ax
mov bx,0
s: mov cl,ds:[bx]
mov ch,0
inc cx
inc bx
loop s
ok: dec bx ; dec(decrease)指令的功能与inc(increase)相反 ,bx=bx-1
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start