输入验证(Pep8汇编程序)

时间:2012-04-23 05:32:19

标签: assembly

我正在尝试为我的其他程序编写输入验证。如果输入小于-32,768或大于32,767,则程序必须打印错误消息并要求重复输入,直到它得到一个在该范围内的数字(我必须使用循环)。我知道下面的代码有一些逻辑错误。我试图解决它,但它只是导致其他逻辑错误。这很奇怪,因为范围外的数字与范围内的数字重叠。例如,-32,770,当添加到累加器时,是32,766(在范围内的IS)。这就是我到目前为止所做的:

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

1 个答案:

答案 0 :(得分:0)

你能得到大于16位的十进制/数字输入吗?你可以输入一个32位的数字吗?如果是这样,您可以轻松检查是否清除了更高的16位。

修改

DECI指令设置NZV标志。