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