回 帖 发 新 帖 刷新版面

主题:[讨论]用汇编编写一个求字符串长度的程序

题目如下:

编写一个求字符串的子程序STRLEN,该字符串以0位结束标志,其首地址存放在DS:DX,其长度存在CX返回。

回复列表 (共2个回复)

沙发

.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

板凳

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
省油省钱

我来回复

您尚未登录,请登录后再回复。点此登录或注册