编写一个计算字符串长度的子程序,字符串以0结尾。入口参数:字符串的首地址指针为DS:SI;出口地址:在AX中返回字符串的长度。写出子程序部分即可
时间: 2024-03-06 20:48:26 浏览: 153
以下是计算字符串长度的子程序代码:
```
STRLEN PROC NEAR
XOR AX, AX ; 将 AX 清零
MOV CX, 0FFFFh ; 将 CX 初始化为最大值,用于循环计数
MOV DI, SI ; 将 DI 初始化为字符串首地址
REPNE SCASB ; 逐个比较字符串中的字符,直到遇到 0
NOT CX ; 取反 CX,得到字符串长度
DEC CX ; 减去结尾 0 占用的一个字节
MOV AX, CX ; 将字符串长度存入 AX
DEC SI ; 将指针指向字符串最后一个字符
RET
STRLEN ENDP
```
该子程序使用 REPNE SCASB 指令来逐个比较字符串中的字符,直到遇到 0 结尾。循环计数器 CX 初始化为最大值,这样当遇到 0 时,CX 的值就是字符串长度。然后将 CX 取反,减去结尾 0 占用的一个字节,并存入 AX 中。最后将指针指向字符串最后一个字符,即结尾 0 的前一个字符,以便在调用该子程序后继续操作字符串。
阅读全文