在BUFFER处给出了多个无符号数,请找出其中的最大值,放至MAX指定的存储单元中。
assume cs:code ,ds:data
data segment
buffer dw 35098, 17758, 54582, 61504, 46054, 58513, 4409, 7902, 14255
dw 40623, 47645, 15575, 51572, 18110, 26511, 14880, 5921, 31999
dw 2893, 21056, 16574, 147, 25532, 33336, 5251, 64269, 31514, 23670
dw 53335, 49581, 57895, 25689, 51697, 58198, 27548, 54151, 41373
dw 44382, 23511, 39326, 56955, 51911
max dw ?
data ends
code segment
start :
mov ax,data
mov ds,ax
mov cx,offset max-offset buffer
shr cx,1 ;cx右移一位,个数减半
mov bx,0
dec cx
mov ax,[bx] ;先将ax放入第一个数据
inc bx
inc bx
s: cmp ax,[bx]
jae next ;若ax>=[bx]则跳转到next
mov ax,[bx] ;若ax<[bx]则将ax换成现在最大的。
next:inc bx
inc bx ;向后移动一个数据
loop s
mov max,ax
mov ax,4c00h
int 21h
code ends
end start