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