编写一个计算字符串长度的子程序,字符串以0结尾。入口参数:字符串的首地址指针为DS:SI;出口地址:在AX中返回字符串的长度。写出子程序部分即可
时间: 2024-03-06 12:48:26 浏览: 21
以下是计算字符串长度的子程序代码:
```
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 的前一个字符,以便在调用该子程序后继续操作字符串。
相关问题
1.编写一个计算字符串长度的子程序,字符串以0为结尾标志。入口参数:字符串的首地-|||-址指针为DS:SI:出口参数:在AX中返回字符串的长度。,汇编语言
以下是计算字符串长度的汇编子程序:
```
; 字符串长度计算子程序
; 入口参数:
; DS:SI 指向字符串的首地址
; 出口参数:
; AX 返回字符串的长度
str_length:
xor ax, ax ; 将 AX 清零
.loop:
cmp byte [ds:si], 0 ; 比较当前字符是否为结束符 0
je .done ; 如果是,跳到结束
inc ax ; AX 加 1
inc si ; 指向下一个字符
jmp .loop ; 继续循环
.done:
ret ; 返回
```
使用示例:
```
mov si, offset my_string ; 字符串首地址
call str_length ; 调用字符串长度计算子程序
; 此时 AX 中存储的就是字符串的长度
```
其中 `my_string` 是一个以 0 结尾的字符串。
用C语言编写一个计算字符串长度的程序
可以使用 C 语言中的 `strlen` 函数来计算字符串的长度。以下是一个示例程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
printf("该字符串的长度为:%d\n", len);
return 0;
}
```
在程序中,首先定义了一个字符数组 `str`,用于存储用户输入的字符串。然后使用 `scanf` 函数获取用户输入的字符串。接着使用 `strlen` 函数计算字符串的长度,并将结果存储在变量 `len` 中。最后使用 `printf` 函数输出字符串的长度。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)