下面的8086/8088 汇编语言程序中,主程序通过堆栈将有关信息传送给子程序 STRLEN。在主程序的【 】处填空,使程序能正常运行。 DSEG SEGMENT ARRAY DB ’Computer$’, NUM DW

admin2006-11-26  33

问题 下面的8086/8088 汇编语言程序中,主程序通过堆栈将有关信息传送给子程序 STRLEN。在主程序的【  】处填空,使程序能正常运行。
DSEG    SEGMENT
ARRAY   DB     ’Computer$’,
NUM     DW       0
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【  】
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。
转载请注明原文地址:https://kaotiyun.com/show/GRuZ777K
0

最新回复(0)