下面的8086/8088汇编语言程序中,主程序通过堆栈将有关信息传送给子程序STRLEN。在主程序的______处填空,使程序能正常运行。
DSEGSEGMENT
ARRAYDB ’Computer$’
NUM DW 0
DSEGENDS
SSEGSEGMENTSTACK
DB 256 DUP (0)
SSEGENDS
CSEG1 SEGMENT
ASSUME DS: DSEG, SS: SSEG, CS: CSEG1
START: MOV AX, DSEG
MOV DS, AX
MOV AX, OFFSET ARRAY
PUSH AX
CALL
MOV NUM, AX
MOV AH, 4CH
INT 21H
CSEG1 ENDS
CSEG2 SEGMENT
ASSUME DS: DSEG, SS: SSEG, CS: CSEG2
STRLEN PROC FAR
PUSH BP
MOV BP, SP
PUSH SI
MOV SI,[BP+6]
NEXT: CMP BYTE PTR [SI],’$’
JZDONE ;串尾吗
INC SI
JMP NEXT
DONE: MOV AX, SI
SUB AX, [BP+6]
POP SI
POP BP
RET 2
STRLEN ENDP
CSEG2 ENDS
ENDSTART
参考答案:FAR PTR STRLEN
解析: 该题考查考生对宏汇编指令的掌握。从本程序的功能要求“主程序通过堆栈特有关信息传送给子程序 STRLEN”,可以看出,需要用CALL指令调用一个子程序,从程序中还可以看出,调用位置和子程序位置位于不同的代码段中,CALL指令的段间直接调用格式为CALL FAR PTR DST,其中DST为子程序的入口地址,所以本题答案应该是FAR PTR STRLEN。