Arrays 在数组中查找最小值

Arrays 在数组中查找最小值,arrays,assembly,x86-16,Arrays,Assembly,X86 16,请注意,有人告诉我这不是发布此类问题的合适地方,所以请不要浪费时间继续阅读。另外,我不得不说,当时我不知道stackoverflow.com是做什么的,而且,我不知道还有其他stackexchange.com网站 关于这一点,请重新考虑你对这个问题的投票(我会删除它,但我不能)。多谢各位 ==================== 这是我的第一个汇编代码,你怎么看 具体地 1有没有更好的方法可以让我走 2我使用SI来存储数组地址,因为我已经看到这是一个常见的范例。但为什么要麻烦呢?我不能用VECT

请注意,有人告诉我这不是发布此类问题的合适地方,所以请不要浪费时间继续阅读。另外,我不得不说,当时我不知道stackoverflow.com是做什么的,而且,我不知道还有其他stackexchange.com网站

关于这一点,请重新考虑你对这个问题的投票(我会删除它,但我不能)。多谢各位

====================

这是我的第一个汇编代码,你怎么看

具体地

1有没有更好的方法可以让我走

2我使用SI来存储数组地址,因为我已经看到这是一个常见的范例。但为什么要麻烦呢?我不能用VECTOR来代替吗

3其他一般建议?(这是我真正的第一个代码…)

谢谢大家:)

1有没有更好的方法可以让我走

“更好”取决于你的目标是什么。如果您想最小化代码大小,例如

  • Fuse
    MOV BX,[SI]
    ADD SI,2
    到(请注意,这将在
    AX
    中提供加载的单词,而不是
    BX
  • 从8开始循环计数器并向下计数。这允许您在最后摆脱
    CMP
    ,只需使用
    DEC
    /
    JNZ
    。或者更好的方法是,使用
    CX
    作为循环计数器,并使用
    loop
    指令(为您递减
    CX

我使用SI来存储数组地址,因为我看到这是一种常见的范例。但为什么要麻烦呢?我不能用VECTOR来代替吗


将数组地址放在寄存器中比将其作为位移放在要引用数组的每条指令中更紧凑的代码,因为您希望在程序中的多个位置引用它。

是对工作代码进行反馈的地方。@RaymondChen谢谢大家,很抱歉,我不会重复这个错误!
.org     100h

.MODEL      SMALL
.DATA
    VECTOR      DW  3,4,2,0,54,-2,3,4
    MIN         DW  ?

.CODE 
.STARTUP
    XOR         AX,AX           ;counter
    LEA         SI,VECTOR       ;store vector address in SI
    MOV         BX,[SI]         ;BX is the minium, let's suppose it's the first element here
    ADD         SI,2            ;I want to go through the array 2byte at once
    INC         AX              ;scanned elements in AX

TESTMIN:
    CMP         BX,[SI]
    JL          GOAHEAD
    MOV         BX,[SI] 

GOAHEAD:    
    ADD         SI,2
    INC         AX
    CMP         AX,8
    JL          TESTMIN            

ret