- 类似于高级语言中的while循环
- 系统默认从cx寄存器中读取数据作为循环的条件
- 当cx中的值cx-1大于0时,循环执行一次代码
;例 将内存中的wowowo修改为hello
data segment
str dw 'hello'
newstr dw 'wowowo'
data ends
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,3
;loop循环指令
replace:
mov ax,ds:[bx[
mov ds:[bx+6],ax
add bx,2
loop replace
end start
;例 将内存中wowowo修改为hello
data segment
dw 'aaa'
str dw 'hello'
newstr dw 'wowowo' ;newstr是起别名,取内容,相当于str[]
data ends
start:
mov ax,data
mov ds,ax
mov bx,offset str ;使用offset,直接将偏移地址传给bx
mov cx,3
replace:
mov ax,da:[bx]
mov ds:[bx+6],ax
add bx,2 ;add指令,相当于bx = bx + 2
loop replace
end start
- 加减法指令
-
add ax,2 ;ax=ax+2
sub ax,2 ;ax=ax-2
sub/add 通用寄存器,数值 ;add/sub ax,2
sub/add 通用寄存器,通用寄存器 ;add/sub ax,bx
sub/add 内存地址,通用寄存器 ;add/sub ds:[0],bx
sub/add 通用寄存器,内存地址 ;add/sub ax,ds:[0]
;错误写法
sub/add 内存地址,内存地址 ;;add/sub ds:[0],ds:[3] 不允许这样写