信贷业务 案件风险隐患:汇编问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 04:01:31
在以DAT为首地址的字缓冲区中存有10个字数据,编程求其最大值与最小值之和,结果存入RSLT单元.
我自己写了,但是没写完,没能实现,把你的共享,共同学习.
data segment
star dw 1,2,3,4,5,6,7,8,9,0
max dw ?
min dw ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,10
lea di,star
mov bx,[di]
next: inc di
inc di
cmp bx,[di]
jbe l1
jnl l2
loop next
l1: mov bx,[di]
mov max,bx
loop next
l2: mov bx,[di]
mov min,bx
loop next
mov bx,max
add bx,min
mov ah,4ch
int 21h
code ends
end start

我只想写一个思想:开始时设置两个变量(一个放最大值,一个放最小值),开始时都等于第一个数据的值,然后,指针向后移,若当前值比存放最大值的变量中的值大,就将这个值赋给存放最大值的变量,若当前值比存放最小值的变量中的值小,就将这个值赋给存放最小值的变量,这个过程一直进行9次就可以了(开始时的指针指向第二个数据),可以MOV CX,9,然后循环,在循环中执行上面所述,即执行判断和赋值即可,循环执行完之后,就将这两个变量相加,赋给RSLT即可.
最后的加法代码:
MOV AX,MAX
ADD AX,MIN
MOV RSLT,AX
应当注意,每一句都最好应有寄存器,否则有的会出错,到底哪些不要,不好意思,我也记得不太清楚了,请查一下书,或者就每一句都用一个寄存器.