填空题

数据段中有一个字数组,其首地址放在SI寄存器中。数组的第一个字中存放着该数组的长度。阅读程序并填空,使程序完整并能正常运行:
DSEG SEGMENT ;数据段
COUNT DW
ADDR DW
DSEG ENDS
CSEG SEGMENT ;代码段
MAIN PROCFAR
START PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DSEG ;初始化DS
MOV DS, AX
MOV ADDR, SI ;将数组的首地址送到ADDR中
MOV CX, [SI] ;数组的长度送到CX中
MOV COUNT, CX ;数组长度送计数器
AGAIN1: MOV BX, 1 ;设标志位
DEC COUNT ;计数器的值减1
JZ EXIT ;等于0,则退出程序
MOV CX, COUNT ;计数器的值送CX
MOV SI, ADDR ;指针指向数组的首地址
AGAIN2: ADD SI, 【6】
MOVAX, [SI]
CMP [SI+2],AX ;前两个元素进行比较
JAE NEXT ;第二个大,则跳转到NEXT去执行
XCHG [S1+2],AX ;否则,交换两个存储单元的内容
MOV [SI], AX
MOV BX, 0 ;有交换的话,标志位置0
NEXT: LOOP AGAIN2 ;继续进行内循环
CMP BX, 0
JE AGAIN1
EXIT: MOV SI, ADDR ;否则,结束程序并将数组首地址送回SI
RET
MAIN ENDP
CSEG ENDS
END START

【参考答案】

B