我已编写此程序以对输入的整数执行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<-----
答案 0 :(得分:0)
至少在我的情况下,通过使用一个单独的命令来修复此问题,该命令将输入指定为unsigned,称为GETDEC $。这解决了问题并允许无符号16位的整数范围,而不是签名。