为什么是;(“maxVal=input”语句中的“expected”而不是“expected” programmaxmin; #包括(“stdlib.hhf”) 静止的 计数:int32:=0; 输入:int32; maxVal:int32; minVal:int32; 和:int32:=0; 布尔值:=true; 开始MaxMin; 而(布尔瓦尔)呢 输入一个数字,0停止:); 标准输入获取(输入); 如果(输入=0),则 打破 elseif(count==0)则 maxVal=输入; minVal=输入; elseif(输入>最大值)然后 maxVal=输入; elseif(输入环境) HLA(高级汇编程序-HLABE后端,LD连接器) 版本2.16构建4409(原型) Ubuntu 20.04.1
解决方案为什么是;(“maxVal=input”语句中的“expected”而不是“expected” programmaxmin; #包括(“stdlib.hhf”) 静止的 计数:int32:=0; 输入:int32; maxVal:int32; minVal:int32; 和:int32:=0; 布尔值:=true; 开始MaxMin; 而(布尔瓦尔)呢 输入一个数字,0停止:); 标准输入获取(输入); 如果(输入=0),则 打破 elseif(count==0)则 maxVal=输入; minVal=输入; elseif(输入>最大值)然后 maxVal=输入; elseif(输入环境) HLA(高级汇编程序-HLABE后端,LD连接器) 版本2.16构建4409(原型) Ubuntu 20.04.1,hla,Hla,解决方案 问题是maxVal=input;是HLA中的无效语句。要更正此问题,请使用mov指令如下:mov(input,maxVal); 但是,在此更正之后,您将看到以下错误: 将“src.hla”组装为“src.o” 文件“src.hla”第27行出现错误[errid:102032/hlapass.bsn]: 内存到内存的比较是非法的。 近:> hlapase:oututils.c:2480:freeOperator:Assertion`o->l.leftOperator!=((void*
- 问题是
是HLA中的无效语句。要更正此问题,请使用maxVal=input;
指令如下:mov
mov(input,maxVal);
- 但是,在此更正之后,您将看到以下错误:
将“src.hla”组装为“src.o”
文件“src.hla”第27行出现错误[errid:102032/hlapass.bsn]:
内存到内存的比较是非法的。
近:>
hlapase:oututils.c:2480:freeOperator:Assertion`o->l.leftOperator!=((void*)0)失败。
中止(堆芯转储)
- 这是因为HLA不支持内存对象之间的比较。一种解决方案是将用户输入的编号存储在
中,并将EAX
变量的所有匹配项更改为input
EAX
programmaxmin;
#包括(“stdlib.hhf”)
存储
maxVal:int32;
minVal:int32;
静止的
计数:int32:=0;
和:int32:=0;
布尔值:=true;
开始MaxMin;
而(布尔瓦尔)呢
输入一个数字,0停止:);
stdin.geti32();
如果(EAX=0),则
打破
elseif(计数=0)则
mov(EAX,maxVal);
mov(EAX,minVal);
elseif(EAX>maxVal)然后
mov(EAX,maxVal);
elseif(EAX
我不懂这种语言,但可能还有其他语法错误使编译器(os it assembler?)感到困惑。例如,您的赋值语句是否应该像在程序的静态常量部分一样使用:=
?
program MaxMin;
#include("stdlib.hhf")
static
count: int32:=0;
input: int32;
maxVal: int32;
minVal: int32;
sum: int32:=0;
boolVar : boolean:= true;
begin MaxMin;
while(boolVar) do
stdout.put("Enter a number, 0 to stop:");
stdin.get(input);
if(input==0)then
break;
elseif(count == 0)then
maxVal=input;
minVal=input;
elseif(input>maxVal)then
maxVal=input;
elseif(input<minVal)then
minVal=input;
endif;
add(input,sum);
add(1,count);
endwhile;
stdout.newln();
stdout.put("Total: ",sum,nl,"Count: ",count,nl,"Maximum: ",maxVal,nl,"Minimum: ",minVal,nl);
end MaxMin;
program MaxMin;
#include("stdlib.hhf")
storage
maxVal: int32;
minVal: int32;
static
count: int32:= 0;
sum: int32:= 0;
boolVar: boolean:= true;
begin MaxMin;
while(boolVar) do
stdout.put("Enter a number, 0 to stop: ");
stdin.geti32();
if (EAX = 0 ) then
break;
elseif ( count = 0 ) then
mov(EAX, maxVal);
mov(EAX, minVal);
elseif (EAX > maxVal) then
mov(EAX, maxVal);
elseif (EAX < minVal) then
mov(EAX, minVal);
endif;
add(EAX, sum);
add(1, count);
endwhile;
stdout.newln();
stdout.put("Total: ",sum,nl,"Count: ",count,nl,"Maximum: ",maxVal,nl,"Minimum: ",minVal,nl);
end MaxMin;