汇编 求多个数最大值 找错误

来源:百度知道 编辑:UC知道 时间:2024/06/11 18:07:28
data segment
buf dw 32,10,-1,100,43,1,0,12
result dw 0
count dw 7
data ends
stack segment stack

stack ends
code segment
assume cs:code,ds:data,ss:stack
begin: mov ax,data
mov ds,ax
mov bx,offset buf
mov si,0
mov cx,count

next: mov dl,[bx+si]
mov al,dl
inc si
mov dl,[bx+si]
cmp al,dl
jl allower
inc si
loop next
allower:
mov al,[bx+si]
inc si
loop next

mov ah,1
int 21h
mov ah,4ch
int 21h

code ends
end begin

请帮忙找一下错误。。。 给出正解 谢谢O(∩_∩)O谢谢

修改地方在以下标明,调试成功

data segment
buf dw 32,10,-1,100,43,1,0,12;为字数据,下面inc si要加两次,数据为十进制
result dw 0
count dw 7
data ends
stac segment stack;stack 为关键字,不能作为段名

stac ends
code segment
assume cs:code,ds:data,ss:stac
begin: mov ax,data
mov ds,ax
mov bx,offset buf
mov si,0h
mov cx,count

mov dx,[bx+si]
mov ax,dx
inc si
inc si
next: mov dx,[bx+si];next 位置放错了,不然每次都该ax的值
cmp ax,dx
jl allower
inc si
inc si;si再加一次
loop next;此处退出循环,会跳到allower分支,无限循环到零后(0-1=ffff)
jmp EXIT
allower:
mov ax,[bx+si]
inc si
inc si
loop next

EXIT:
mov ah,1;此处用于暂停
int 21h
mov ah,4ch;返回DOS
int 21h

code ends
end begin

buf dw 32,10,-1,100,43,1,0,12
每个数据都占了两个存储单元,而inc si,地址只加了一,应该加二才是下一个字的地址
mov ah,1
int 21