汇编语言,怎么让它显示出字符串的长度,用分支程序设计
2个回答
展开全部
sseg SEGMENT para stack
dw 256 dup(?)
sseg ENDS
DATA SEGMENT
MSG1 DB 'LENGTH:','$'
MSG2 DB 'OTHER:','$'
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 MSG2
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
dw 256 dup(?)
sseg ENDS
DATA SEGMENT
MSG1 DB 'LENGTH:','$'
MSG2 DB 'OTHER:','$'
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 MSG2
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编学的这么吊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询