怎么用汇编语言编写一个程序,统计字符串的长度并输出
3个回答
展开全部
DATA SEGMENT
MSG1 DB 'LENGTH:','$'
SHEX DB '0123456789ABCDEF$'
MAXLEN EQU 200H
DATA ENDS
CODE SEGMENT ;代码段定义
assume CS:CODE,DS:DATA
START:
mov ax,DATA
mov ds,ax
;初始化需要的寄存器
mov ax,0
mov bl,24H
mov di, offset MSG1
;循环比较字符串中的每个字符,并把统计值放在AX中
MYLOOP:
cmp byte ptr[di], bl
jz EXIT
inc di
inc ax
jmp MYLOOP
EXIT:
push ax
;显示提示内容
mov dx,offset MSG1
mov ah,9h
int 21h
pop ax
call printlen
mov ah,4ch
int 21h
;打印出长度,长度保存在AX里
printlen proc near
mov cx,4
PRINTLOOP:
rol ax,1
rol ax,1
rol ax,1
rol ax,1
push ax
mov dl,al
and dl,0FH
mov bx, offset SHEX
add bl,dl
mov dl, byte ptr [bx]
mov ah,2
int 21h
pop ax
loop PRINTLOOP
ret
printlen endp
CODE ENDS
END START
MSG1 DB 'LENGTH:','$'
SHEX DB '0123456789ABCDEF$'
MAXLEN EQU 200H
DATA ENDS
CODE SEGMENT ;代码段定义
assume CS:CODE,DS:DATA
START:
mov ax,DATA
mov ds,ax
;初始化需要的寄存器
mov ax,0
mov bl,24H
mov di, offset MSG1
;循环比较字符串中的每个字符,并把统计值放在AX中
MYLOOP:
cmp byte ptr[di], bl
jz EXIT
inc di
inc ax
jmp MYLOOP
EXIT:
push ax
;显示提示内容
mov dx,offset MSG1
mov ah,9h
int 21h
pop ax
call printlen
mov ah,4ch
int 21h
;打印出长度,长度保存在AX里
printlen proc near
mov cx,4
PRINTLOOP:
rol ax,1
rol ax,1
rol ax,1
rol ax,1
push ax
mov dl,al
and dl,0FH
mov bx, offset SHEX
add bl,dl
mov dl, byte ptr [bx]
mov ah,2
int 21h
pop ax
loop PRINTLOOP
ret
printlen endp
CODE ENDS
END START
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HO汇编?? 不是很懂.用字符串.length()看是不是能获得长度?int i =字符串.indexof($)获得位置字符串.substring(i,"");
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编语言编语言也分好多种的,你说的是哪一种语言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询