请注意,我被告知这不是发布此类问题的正确位置,所以请不要浪费时间继续阅读。此外,我要说当时,我没有正确知道stackoverflow.com是什么,而且,我不知道其他stackexchange.com网站存在。
关于这一点,请重新考虑你对这个问题的投票(我会删除它,但我不能)。谢谢。
====================
所以,这是我的第一个汇编代码之一,您如何看待它?
具体地
1有没有更好的方法可以去thourgh阵列?
2我使用SI来存储数组地址,因为我已经看到它是一种常见的范例。但为什么要打扰?我不能只使用'VECTOR'吗?
3其他一般建议? (这是我真正的第一个代码......)
.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
谢谢你们:)
答案 0 :(得分:0)
1有没有更好的方法可以去thourgh阵列?
“更好”取决于你的目标是什么。如果您想最小化代码大小,例如..
MOV BX,[SI]
和ADD SI,2
融入LODSW(请注意,这会在AX
而不是BX
中为您提供加载的字词。CMP
,只需使用DEC
/ JNZ
即可。或者更好的是,使用CX
作为循环计数器并使用LOOP
指令(对您递减CX
)。我正在使用SI来存储数组地址,因为我已经看到它是一种常见的范例。但为什么要打扰?我不能只使用'VECTOR'吗?
将数组的地址放在寄存器中会导致代码更紧凑,而不是在每个要引用数组的指令中将其作为位移,因为您希望在程序的多个位置引用它。