DSEG SEGMENT ARRAY DB ’Computer$’, NUM DW 0 DSEG ENDS SSEG SEGMENT STACK DB 256DUP(0) SSEG END

admin2013-01-19  10

问题 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
以上的程序执行结束后,NUM中的数据是【  】。

选项

答案8

解析 该题考查考生对宏汇编程序的理解。上述代码的作用是统计字符串 Computer ’$’的长度,以$符号表示结束,统计过程是首先将字符串的偏移地址压入堆栈,然后调用另一个代码段的子程序,从堆栈中取得字符串的偏移地址,然后逐个读出字符,比较是否为结束字符。如果不是,就继续读取下一个字符,如果是,就将该字符的地址送入AX寄存器,然后再将该字符的地址与字符串起始地址相减,得到的结果就是字符串的长度,返回子程序调用,将统计完成以后的长度送入NUM,所以NUM中的数值为8。
转载请注明原文地址:https://kaotiyun.com/show/NPMZ777K
0

随机试题
最新回复(0)