【发布时间】:2015-10-06 18:36:10
【问题描述】:
我正在尝试编写一个将 Ulam 猜想应用于数字的程序。我的程序正在运行,但是它拒绝接受数字 38836 和 38838。输入这些数字时,它给了我错误:数字超出范围再试一次。堆栈在 256 处,使用的变量是 DW 类型。我是组装的新手,所以如果我没有包含正确的信息,或者忽略了一些简单的事情,我深表歉意,但我非常卡住。以下是我认为可能与我的问题相关的内容。
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<-----
【问题讨论】:
-
您确定 GETDEC 允许输入如此大的数字吗?
-
“它给了我错误:NUMBER OUT OF RANGE TRY AGAIN”。我在您发布的代码中没有看到该字符串,那么该输出是从哪里来的?
-
GETDEC 是我们被告知要输入的命令,因为我们只是修改了大部分提供给我们的代码。我们目前不知道另一种收集数据的方式。 NUMBER OUT OF RANGE 发生在运行时。显示数字提示,输入像 38836 这样的数字,然后显示错误
-
GETDEC 将输入的数字放在哪里,什么时候起作用?
-
假设一个有符号整数,16位的最大值是多少?
标签: assembly runtime large-data