8 ビットの負の整数 (-1 から -128 までの符号付き) を指定すると、HLA の右シフトによってオーバーフローが発生し、その理由がわかりません。1 回シフトした場合、基本的には値を 2 で除算する必要があります。これは正の数には当てはまりますが、明らかに負の数には当てはまりません。なんで?たとえば、-10 を入力すると、結果は +123 になります。
Program cpy;
#include ("stdlib.hhf")
#include ("hla.hhf")
static
i:int8;
begin cpy;
stdout.put("Enter value to divide by 2: ");
stdin.geti8();
mov(al,i);
shr(1,i); //shift bits one position right
if(@o)then // if overlow
stdout.put("overflow");
endif;
end cpy;