使用emu8086编写子程序,删除字符串中从第n个字符开始的m个字符。
时间: 2023-06-10 12:07:11 浏览: 311
以下是使用emu8086汇编语言编写的删除字符串子程序:
```assembly
; 删除字符串中从第n个字符开始的m个字符
; 输入:si指向字符串首地址,n为开始位置,m为删除的字符数
; 输出:字符串中删除了对应的字符
delete_str:
push bp
mov bp, sp
push si
push di
mov si, [bp+4] ; si指向字符串首地址
mov di, si ; di保存字符串首地址
mov cx, [bp+6] ; cx保存n的值,即开始位置
sub cx, 1 ; 将n转化为偏移量
add si, cx ; si指向第n个字符
mov di, si ; di指向第n个字符,准备删除
mov cx, [bp+8] ; cx保存m的值,即删除的字符数
delete_loop:
mov al, [si+cx] ; 将si+cx位置上的字符保存到al中
mov [di], al ; 将al中的字符复制到di位置上
inc di ; di指向下一个字符
cmp al, '$' ; 判断是否到字符串结尾
je delete_end ; 到结尾了就结束循环
jmp delete_loop
delete_end:
mov [di], '$' ; 在删除后的字符串末尾加上结束标志
pop di
pop si
pop bp
ret
```
以上代码实现了删除字符串中从第n个字符开始的m个字符的功能。在使用时,需要将字符串首地址、开始位置n、删除的字符数m依次压入栈中,然后调用delete_str子程序即可完成删除操作。
阅读全文
相关推荐















