8086汇编语言从source (DS)开始有一个数据串,共100个 字节,从该数据串中查找所有字符’!’,并替 换为字符’.’。若有,把搜索到的次数放在 count单元中,每一个所在的地址放在adress后 面的单元中。
时间: 2024-05-06 14:19:29 浏览: 67
8086汇编语言教程.
以下是一种可能的8086汇编语言程序实现:
```
MOV AX, DS ; 把DS寄存器中的值存入AX寄存器
MOV ES, AX ; 把DS寄存器中的值存入ES寄存器
MOV DI, 0 ; 把DI寄存器置0,作为数据串的偏移地址
MOV CX, 100 ; 把CX寄存器置100,表示数据串的长度
MOV BX, 0 ; 把BX寄存器置0,作为计数器
SEARCH_LOOP: ; 搜索循环开始
MOV AL, [DI] ; 把数据串中当前位置的字符读入AL寄存器
CMP AL, '!' ; 判断是否为目标字符
JNE NOT_FOUND ; 若不是,则跳过下一条指令
INC BX ; 若是,则增加计数器
MOV WORD PTR [ES:DI+1], DI ; 把当前位置的地址存入地址单元中
MOV BYTE PTR [DI], '.' ; 把目标字符替换为替代字符
NOT_FOUND:
INC DI ; 增加数据串的偏移地址
LOOP SEARCH_LOOP ; 循环
MOV WORD PTR [count], BX ; 把计数器的值存入count单元中
```
其中,`count`和`adress`分别表示计数器和地址单元的内存地址,需要在程序中进行定义。程序中使用了字符串搜索的常规方法,即逐个比较每个字符是否为目标字符,若是则替换为替代字符并增加计数器。每次搜索到目标字符时,还会把当前位置的地址存入地址单元中,以便后续使用。
阅读全文