已知从BUF开始存放了10个字类型有符号数据,编程求出这10个数中的最大数和最小数(将最大数存入MAX字单元、最小数存入MIN字单元),并将其以10进制数的形式在屏幕上显示出来。
data segment
pmax db 0dh,0ah , 'MAX : ','$'
pmin db 0dh,0ah , 'MIN : ','$'
buf dw 48,-2 ,49,50,30,-78,-88,-60,-1,48
max dw 99
min dw 20
data ends
code segment
assume cs:code , ds:data
main proc far
start:
mov ax,data
mov ds,ax
call compare
lea dx,pmax
mov ah,09h
int 21h
mov ax,max[0]
call printit
lea dx,pmin
mov ah,09h
int 21h
mov ax,min[0]
call printit
mov ah,4ch
int 21h
ret
main endp
compare proc near
mov si,0
mov ax,buf[si]
mov bx,ax
mov dx,ax
add si,2
mov cl,9
comp:
mov ax,buf[si]
add si,2
cmp bx,ax
jl movbx
cmp ax,dx
jl movdx
sub cl,1
cmp cl,0
jnz comp
mov max[0],bx
mov min[0],dx
ret
movbx:
mov bx,ax
sub cl,1
jmp comp
movdx:
mov dx,ax
sub cl,1
jmp comp
compare endp
printit proc near
test ax,8000h
jz p
neg ax
mov cx,ax
mov dx,2dh
mov ah,2
int 21h
mov ax,cx
mov dx,0
p: mov bx ,10
div bx
mov bx,dx
mov dx,ax
add dx,30h
mov ah,02h
int 21h
mov dx,bx
add dx,30h
mov ah,02h
int 21h
ret
printit endp
code ends
end main