主题:[讨论]用汇编编写一个求字符串长度的程序
cqviolet
[专家分:0] 发布于 2007-02-04 20:57:00
题目如下:
编写一个求字符串的子程序STRLEN,该字符串以0位结束标志,其首地址存放在DS:DX,其长度存在CX返回。
回复列表 (共2个回复)
沙发
ccpp [专家分:9360] 发布于 2007-02-05 15:18:00
.model tiny
.code
org 100h
;---------------------
main proc near
lea dx,sss
mov si,dx ;si保存基址
mov al,0
@10:
cmp al,[si]
je @20
inc si ;让si向末尾
jmp @10
@20:
sub si,dx
mov cx,si ;保存到cx
.exit
sss db 'abcdefg',0
main endp
end main
板凳
def [专家分:3380] 发布于 2007-02-12 15:30:00
strlen proc near
push ax
push es
push di
mov di,dx;Vscasb初始化
push ds ;|
pop es ;|
mov al,0 ;|
sub cx,cx;|将cx清零
dec cx ;|置-1(求反)
cld ;^
repnz scasb;检测
not cx ;再求反
pop di
pop es
pop ax
ret
strlen endp
省油省钱
我来回复