汇编语言,在线等,一道题,急,,,
发布网友
发布时间:2022-04-30 17:19
我来回答
共1个回答
热心网友
时间:2022-06-28 07:40
data segment ;数据段定义
STRING DB 'The date is FEB&03' ;字符串定义
count equ $-string ; '$'是当前地址,$-string即string字符串变量的长度,其值送入变量count中
data ends ;数据段定义结束 标准写法
code segment ;代码段
assume ds:data,es:data,cs:code ;assume伪指令,把段和寄存器对应起来
start: ;代码开始
mov ax,data ;数据段首地址送入ax,ax是中转寄存器
mov ds,ax ;数据段首地址状入ds、
mov es,ax ;和es
lea di,string ; 字符串变量string的偏移地址送入di
mov cx,count ; 字符串长度送入cx寄存器,cx寄存器是LOOP循环指令的计数寄存器
mov al,'&' ; al寄存器送入'&'字符
cld ; 字符串处理的方向,详细见cld指令说明
repnz scasb ; scasb指令常与循环指令REPZ/REPNZ合用。
; 例如,REPNZ scasb 语句表示当寄存器CX>0 且 标志寄存器ZF=0,
; 则再执行一次scasb指令。
; 比较寄存器AL的值不相等则重复查找的字
jnz tj ; 循环结束,没有发现相等的字符,则跳转到tj
mov byte ptr [di-1],20h ;发现,则用空格(0x20)替换该字符
tj:
mov ax,4c00h ; 返回操作系统中断调用
int 21h ;
code ends ;代码段结束
end start ; end start,标准写法。
本程序缺点:如果字符串中有多个'&'字符,则只能替换一个。