简单汇编程序题,高手解答一下

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:04:28
DATA SEGMENT
BUF1 DB 0,1,2,3,4,5,6,7,8,9
BUF2 DB ?
COUNT EQU $ - BUF
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
STAR PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
LEA BX, BUF1
MOV CX , COUNT - 1
MOV AL, [BX]
AG: INC BX
CMP AL, [BX]
JAE BIG
MOV AL, [BX]
BIG: DEC CX
JNZ AG
MOV BUF2, AL
RET
STAR ENDP
CODE ENDS
END STAR

问: 该程序执行后BUF2中的值为什么?

LEA BX, BUF1 ;取BUF1的地址,BX指向第一个元素
MOV CX , COUNT - 1 ;置循环次数
MOV AL, [BX] ;将BX指向的第一个元素放到AL里
AG: INC BX ;AG标记,BX指向下一个元素
CMP AL, [BX] ;比较AL和BX指向的元素
JAE BIG ;大于等于就跳到BIG
MOV AL, [BX] ;如果没有跳转,就把BX指向的元素放到AL里
BIG: DEC CX ;CX--
JNZ AG ;如果CX不为0跳到AG
MOV BUF2, AL ;如果CX为0将AL的值放到BUF2里

结果为9