一、字符串的修改和替换
1、;需求1:将内存中的he修改为wo
data segment
str dw 'he'
newstr dw 'wo'
data ends
start:
mov ax,data
mov ds,ax
mov ax,ds:str
mov ds:newstr,ax
end start
2、;需求2:将内存中的hello修改为wowowo
data segment
str dw 'hello '
newstr dw 'wowowo'
data ends
start:
mov ax,data
mov ds,ax
mov ax,ds:str
mov ds:newstr,ax
mov ax,ds:str+2
mov ds:newstr+2,ax
mov ax,ds:str+4
mov ds:newstr+4,ax
end start
3、分段写法
data segment
str dw 'hello '
data ends
newData segment
newstr dw 'wowowo'
newData ends
code segment
4、;如果有多个段包裹,需要对代码段也进行段包裹 start:
mov ax,data
mov ds,ax
mov ax,newData
mov es,ax
mov ax,ds:str
mov es:newstr,ax
code ends
end start
二、Loop循环指令
注:在同一个段包裹中,偏移地址从0开始,依次递增
1、类似于高级语言中的while循环,系统默认从cx寄存器中读取数据作为循环的条件,当cx中的值cx- 1大于零时循环执行一次代码
2、offset的作用
mov bx,offset str
;有offset str表示偏移地址
;没有offset str表示偏移地址所指向的数据[](取内容)
3、加减运算指令add和sub
sub/add 通用寄存器,数值
sub/add 内存地址,通用寄存器
sub/add 通用寄存器,内存地址