转换程序以接受无符号整数

时间:2015-10-06 20:08:23

标签: assembly unsigned-integer

我已编写此程序以对输入的整数执行ulam的猜想,但是当输入诸如38836之类的数字时,它超出了16位有符号整数的界限。我相信使用unsigned会解决我的问题,但我无法弄清楚如何调整此代码段以接受无符号整数。非常感谢任何帮助!

            DOSSEG
            .MODEL  SMALL, BASIC, FARSTACK

            EXTRN   GETDEC:FAR
            EXTRN   NEWLINE:FAR
            EXTRN   PUTDEC:FAR
            EXTRN   PUTSTRNG:FAR

            .STACK  256


    .DATA
NUM           DW      ?
CNT           DW      0
PROMPT        DB      'Enter an integer: '
TOTAL         DB      'Number Total: '
FLOWMSG       DB      'OVERFLOW      '

       .CODE

ULAMS:                      
  MOV    AX,SEG DGROUP        
  MOV    ES,AX

    LEA      DI,PROMPT
    MOV      CX,18
    CALL     PUTSTRNG
    CALL     GETDEC

    MOV  NUM,AX
    MOV  CNT,0

    --->Rest of program cut for brevity<-----

1 个答案:

答案 0 :(得分:0)

至少在我的情况下,通过使用一个单独的命令来修复此问题,该命令将输入​​指定为unsigned,称为GETDEC $。这解决了问题并允许无符号16位的整数范围,而不是签名。