我还在玩这个MC
现在我想计算给定数组中的正数/负数和 0。在 c 中,我做了这样的事情并且效果很好:
int A[15], pos, neg, nul, i;
[...]
pos = 0;
neg = 0;
nul = 0;
for for (i = 0; i < 15; i++) {
if (A[i] > 0) {
pos++;
}
if (A[i] < 0) {
neg++;
}
if (A[i] == 0) {
nul++;
}
}
所以,下一步是做一些类似的东西,但在汇编代码中,我在想这个:
RWM EQU $0
ROM EQU $C000
RESET EQU $FFFE
QUANTITY EQU 200
ORG RWM
POSITIVES RMB
NEGATIVES RMB
ZEROS RMB
ORG ROM
Main:
END BRA END
ARRAY DW 1,4,8,-87,0,0,1,4,5,8,7,4,4,1,-9
ORG RESET
DW Main
我在这里有点困惑,因为我需要考虑最坏的情况,我的意思是:全部为正,或全部为负或全部为零。所以,我应该根据要保存的信息定义可变大小。我认为数组的末尾应该是 ARRAY + QUANTITY-1。
编辑#1:
对于这种情况,我想获得这个输出:
由于 th ARRAY 包含以下元素:
1,4,8,-87,0,0,1,4,5,8,7,4,4,1,-9
我应该得到这个输出:
POSITIVES 11
NEGATIVES 2
ZEROS 2
但要记住:
我必须考虑最坏的情况,即:全部为正,或全部为负或全部为零
另一个不同的情况:
假设我想获取存储在特定数组中的所有元素的绝对值。
我可以使用“C”来实现,我的意思是,我可以执行以下操作:
#include <stdio.h>
#include <math.h>
int absolute(int *array, int N);
int main()
{
int array[16] = {0,1,2,3,-4,5,6,7,-8,9,-10,11,12,13,14,20};
int ray[16];
int i;
for ( i = 0; i < 16; i++ )
ray[i]=absolute(array,16);
printf("the absolute value is %d\n", ray[i]);
return 0;
}
int absolute(int *array, int N)
{
int i;
for(i=0; i<N; i++)
if (array[i]<0)
array[i] = array[i] * (-1);
}
我试图在汇编中做到这一点(使用 68hc11 指令)
RWM EQU $0
ROM EQU $C000
RESET EQU $FFFE
ORG RWM
ABSOLUTE RMB
ORG ROM
Start:
END BRA END
ARRAY DW 4,144,447,-14,-555,-1147
ORG RESET
DW Start
我想将ARRAY中的所有绝对元素存储在ABSOLUTE中
PS:我没有定义 ABSOLUTE 的尺寸
我想在 ABSOLUTE 中看到这些值:
4,144,447,14,555,1147(无符号数)