哪位解释下为什么这个 [BP].STRSEG 就是字符串首地址的段值
写一个字符串长度的子程序。子程序的调用说明如下:
;子程序名:STRLEN
;功能:测字符串长度
;入口参数:字符串首地址的段值和偏移在堆栈顶
;出口参数:AX=字符串长度
;说明:(1)字符串以0结尾,字符串长度不包括结尾标志。
;(2)本过程是一个远过程
PRAM STRUC
BPREG DW ? ;对应BP寄存器保存单元
RETADR DD ? ;对应返回地址
STROFF DW ? ;对应入口参数中的偏移
STRSEG DW ? ;对应入口参数中的段值
PARM ENDS
STRLEN PROC FAR
PUSH BP
MOV BP;SP
PUSH DS
PUSH SI
MOV DS , [BP].STRSEG ;取字符串首地址的段值 哪位解释下为什么这个 [BP].STRSEG 就是字符串首地址的段值
MOV SI , [BP].STROFF ;取字符串首地址的偏移 哪位解释下为什么这个 [BP].STROFF 就是字符串首地址的偏移
STRLEN1:CMP BYTE PTR ;AL
JZ STRLEN2
INC SI
JMP STRLEN1
STRLEN2:MOV AX ,SI
SUB AX ,[BP].STROFF
POP SI
POP DS
POP BP
RET
STRLEN ENDP