ENTRY
start LDR R0, =tofind ; MOV R3,#20
save LDR R0, =min
STR R1, [R0]
stop
B stop
AREA Dmax, DATA, READONLY
tofind DCD 0x5500,0x100,0x300,0x33,0x99,0x5123,0x9875,0x10,0x609,0x3008,0x450,0x10,0x15,0x23,0x85,0x709,0x1234,0x10,0x4123,0x55
AREA Drmax, DATA, READWRITE
min DCD 0
minpos DCD 0,0,0
END
AREA findmin, CODE, READONLY
ENTRY
start
LDR R0, =tofind ; 加载数组首地址到 R0
MOV R1, #0 ; 将 R1 设置为 0,用于计数
MOV R2, #0xFFFFFFFF ; 将 R2 设置为最大值,用于比较最小值
loop
LDR R3, [R0], #4 ; 加载数组当前元素到 R3
CMP R2, R3 ; 比较 R2 和 R3 的大小
BLT update ; 如果 R3 比 R2 小,则跳转到 update 标签
ADD R1, R1, #1 ; 增加计数器
CMP R1, #20 ; 如果计数器大于等于 20,则跳转到 stop 标签
B loop ; 继续循环
update
STR R3, [R2] ; 将 R3 的值存储到 min 中
STR R1, [minpos] ; 将计数器的值存储到 minpos 中
B loop ; 继续循环
stop
LDR R3, [min] ; 加载 min 中的最小值到 R3
LDR R1, [minpos] ; 加载 minpos 中的位置到 R1
; 在这里添加输出结果的代码
B stop ; 终止程序
AREA Dmax, DATA, READONLY
tofind DCD 0x5500,0x100,0x300,0x33,0x99,0x5123,0x9875,0x10,0x609,0x3008,0x450,0x10,0x15,0x23,0x85,0x709,0x1234,0x10,0x4123,0x55
AREA Drmax, DATA, READWRITE
min DCD 0
minpos DCD 0
END
望采纳
DATA SEGMENT
BUFFER DB 1, 9, 13, 35, 7, 22, 12, 6, 9, 8
COUNT EQU $-BUFFER
MAX DB ?
MIN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
LEA DI, BUFFER
MOV CX, COUNT - 1
MOV AL, [DI]
MOV AH, [DI]
AGAIN: INC DI
CMP AH, [DI]
JA L0 ;MAX>[DI]
MOV AH, [DI]
L0: CMP [DI], AL
JA L1 ;MIN<[DI]
MOV AL, [DI]
L1: LOOP AGAIN
MOV MAX, AH
MOV MIN, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START