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