我正在尝试为我的其他程序编写输入验证。如果输入小于 -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