DSEG SEGMENTD1 DB -1,5,2,6,-7,4CNT EQU $-D1RS DWDSEG ENDSSSEG SEGMENT STACKDB 256DUP(0)SSEG ENDSCSEG SEGMENTASSUM CS: CSEG,DS:DSEG, SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX, DSEGMOV DS,AXMOV BX,OFFSETF D1MOV CX, CNTMOV DX, 0LP: MOV AL,[BX]CMP AL

题目

DSEG SEGMENT

D1 DB -1,5,2,6,-7,4

CNT EQU $-D1

RS DW

DSEG ENDS

SSEG SEGMENT STACK

DB 256DUP(0)

SSEG ENDS

CSEG SEGMENT

ASSUM CS: CSEG,DS:DSEG, SS:SSEG

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX, DSEG

MOV DS,AX

MOV BX,OFFSETF D1

MOV CX, CNT

MOV DX, 0

LP: MOV AL,[BX]

CMP AL,0

JGE CONT

INC DX

CONT :INC BX

DEC CX

JNZ LP

MOV RS,DX

RET

START ______

CSEG ENDS

END START

程序中的PUSH DS、XOR AX,AX、PUSH AX三条指令的作用是______。


相似考题
更多“DSEG SEGMENTD1 DB -1,5,2,6,-7,4CNTEQU $-D1RS DWDSEG ENDSSSEG SEGMENT STACKDB 256DUP(0)SSEG ”相关问题
  • 第1题:

    运行下面的汇编语言程序:

    DSEG SEGMENT

    DAT DB 5,13,4,-2,-6,23,3,1,9,0

    CNT EQU $—DAT—1

    NUM DB ?

    DSEG ENDS

    SSEG SEGMENT STACK

    DB 256DUP(0)

    SSEG ENDS

    CSEG SEGMENT

    ASSUME DS:DSEG,SS:SSEG,CS:CSEG

    START: MOV AX,DSEG

    MOV DS,AX

    MOV SI,OFFSETDAT

    MOV CX,CNT

    XOR BL,BL

    LP: MOV AL,[SI]

    XOR AL,[SI+1]

    TEST AL,80H

    JNE NEXT

    INC BL

    NEXT: INC SI

    LOOP LP

    MOV NUM,BL

    MOV AH,4CH

    INT 21H

    CSEG ENDS

    END START

    在NUM内存单元中得到的结果是______。


    正确答案:7
    7 解析:比较过程中,5和13,13和4,-2和-6,23和3,3和1,1和9, 9和0进行运算时都会使BL增加1,所以一共有7次,NUM=7。

  • 第2题:

    在下面的汇编语言程序横线处填空,使语句完整,保证程序正确执行。

    DSEG SEGMENT

    D1 DB -1,5,2,6,-7,4

    CNT EQU $-D1

    RS DW

    DSEG ENDS

    SSEG SEGMENT STACK

    DB 256DUP(0)

    SSEG ENDS

    CSEG SEGMENT

    ASSUM CS: CSEG,DS:DSEG, SS:SSEG

    START PROC FAR

    PUSH DS

    XOR AX,AX

    PUSH AX

    MOV AX, DSEG

    MOV DS,AX

    MOV BX,OFFSETF D1

    MOV CX, CNT

    MOV DX, 0

    LP: MOV AL,[BX]

    CMP AL,0

    JGE CONT

    INC DX

    CONT :INC BX

    DEC CX

    JNZ LP

    MOV RS,DX

    RET

    START ______

    CSEG ENDS

    END START


    正确答案:ENDP
    ENDP 解析:该程序的功能是统计大于0的个数。在横线处应该填对应于前面 START PROC FAR语句的结束语句:ENDP。

  • 第3题:

    执行下列指令后,(CL)=______。 STR1 DW 'AB' STR2 DB 16DUP(?) CNT EQU $-STR1 MOV CX,CNT MOV AX,STR1 HLT

    A.10H

    B.0EH

    C.12H

    D.0FH


    正确答案:C

  • 第4题:

    下面的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
    FAR PTR STRLEN 解析:该题考查考生对宏汇编指令的掌握。从本程序的功能要求“主程序通过堆栈将有关信息传送给子程序STRLEN",可以看出,需要用CALL指令调用一个子程序,从程序中还可以看出,调用位置和子程序位置位于不同的代码段中,CALL指令的段间直接调用格式为CALL FAR PTR DST,其中DST为子程序的入口地址,所以本题答案应该是FAR PTR STRLEN。

  • 第5题:

    执行下列指令后: STR1 DW ‘AB’ STR2 DB 16 DUP(?) CNT EQU $ -STR1 MOV CX,CNT (CL)= ( )

    A.10H

    B.12H

    C.OEH

    D.0FH


    正确答案:B
    解析:由于STR1为2字节,STR2为16字节,故CX=CNT=$-STR1=2+16=180