原题是:从BUF1 的20个无符号数中,取出其最大最小的2个数字,分别存放在BUF2中。
原代码是:START PROC FAR
; Store return address to OS:
PUSH DS
MOV AX, 0
PUSH AX
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
LEA SI,BUF1
LEA DI,BUF2
MOV CX,20H
AGAIN:MOV AL,[SI]
INC SI
CMP AL,[DI]
JNC X1
JMP GO1
GO1:CMP AL,[DI+1]
JC X2
JMP GO2
GO2:DEC CX
JNZ AGAIN
JMP DONE
X1:MOV [DI],AL ;将较大值赋给[DI]
JMP GO1
X2:MOV [DI+1],AL ;将较小值赋给[DI+1]
JMP GO2
DONE:MOV AL,00H ;求平均数
ADD AL,[DI]
ADD AL,[DI+1]
MOV BL,02H
DIV BL
MOV [DI+2],AL
hlt
; return to operating system:
RET
START ENDP
;*******************************************
CSEG ENDS
END START ; set entry point.
现题目修改为:从BUF1 的20个无符号数中,取出其最小的2个数字,分别存放在BUF2中。
应当如何修改代码?
原代码是:START PROC FAR
; Store return address to OS:
PUSH DS
MOV AX, 0
PUSH AX
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
LEA SI,BUF1
LEA DI,BUF2
MOV CX,20H
AGAIN:MOV AL,[SI]
INC SI
CMP AL,[DI]
JNC X1
JMP GO1
GO1:CMP AL,[DI+1]
JC X2
JMP GO2
GO2:DEC CX
JNZ AGAIN
JMP DONE
X1:MOV [DI],AL ;将较大值赋给[DI]
JMP GO1
X2:MOV [DI+1],AL ;将较小值赋给[DI+1]
JMP GO2
DONE:MOV AL,00H ;求平均数
ADD AL,[DI]
ADD AL,[DI+1]
MOV BL,02H
DIV BL
MOV [DI+2],AL
hlt
; return to operating system:
RET
START ENDP
;*******************************************
CSEG ENDS
END START ; set entry point.
现题目修改为:从BUF1 的20个无符号数中,取出其最小的2个数字,分别存放在BUF2中。
应当如何修改代码?