DSEG SEGMENTARRAY DB 'Computer$',NUM DW 0DSEG ENDSSSEG SEGMENT STACKDB 256DUP(0)SSEG ENDSCSEGl SEGMENTASSUME DS:DSEG,SS:SSEG,CS:CSEGlSTART: MOV AX,DSEGMOV DS,AXMOV AX,OFFSETARRAYPUSH AXCALL 1MOV NUM,AXMOV AH,4CHINT 21HCSEG l ENDSCSEG2 SEGMENTASSUME DS:DSEG,SS:SSEG,CS:CSEG2STRLEN PROC FARPUSH BPMOV BP,SPPUSH SIMOV SI,[BP+6]NEXT: CMP BYTE PTR[SI],'$'JZ DONE ;串尾吗?INC SIJMP NEXTDONE: MOV AX,SISUB AX,[BP+6]POP SIPOP BPRET 2STRLEN ENDPCSEG2 ENDSEND START以上的程序执行结束后,NUM中的数据是 2。
【正确答案】
1、正确答案:8
【答案解析】解析:该题考查考生对宏汇编程序的理解。上述代码的作用是统计字符串 Computer '$'的长度,以$符号表示结束,统计过程是首先将字符串的偏移地址压入堆栈,然后调用另一个代码段的子程序,从堆栈中取得字符串的偏移地址,然后逐个读出字符,比较是否为结束字符。如果不是,就继续读取下一个字符,如果是,就将该字符的地址送入AX寄存器,然后再将该字符的地址与字符串起始地址相减,得到的结果就是字符串的长度,返回子程序调用,将统计完成以后的长度送入NUM,所以NUM中的数值为8。