他のプログラムの入力検証を書き込もうとしています。入力が-32,768より小さいか、32,767より大きい場合、プログラムはエラーメッセージを出力し、範囲内の数値が得られるまで入力を繰り返すように要求する必要があります(ループを使用する必要があります)。以下のコードにいくつかの論理エラーがあることを私は知っています。私はそれを修正しようとしましたが、それは他の論理的なエラーにつながるだけです。範囲外の数字が範囲内の数字と重なっているので、それは奇妙です。たとえば、-32,770をアキュムレータに追加すると、32,766(範囲内)になります。これは私がこれまでに持っているものです:
BR isless
input: .BLOCK 2
hello_ms: .ASCII "Enter a number: \x00"
error_ms: .ASCII "Wrong input, must be in the range -32,768 through 32,767. Enter a number: \x00"
thanx: .ASCII "Thank you!\x00"
;
isless: STRO hello_ms, d
DECI input, d
LDA input, d
CPA 32767, d ;-32769
BRLE whileL
BR isgrter
whileL: STRO error_ms, d
DECI input, d
LDA input, d
CPA 32767, i
BRLE whileL
BR isgrter
isgrter: LDA input, d
CPA -32768, i
BRGE whileG
BR endwh
whileG: STRO error_ms, d
DECI input, d
LDA input, d
CPA -32768, i
BRGE whileG
BR endwh
endwh: STRO thanx, d
STOP
.END