汇编程序拒绝接受更大的数字

时间:2015-10-06 18:36:11

标签: assembly runtime large-data

我正在尝试编写一个将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<-----

1 个答案:

答案 0 :(得分:0)

如果GETDEC将输入的值放入寄存器AX(16位寄存器),则无法使GETDEC接受一个不适合16位寄存器的数字。

你必须采用其他方式输入如此大的数字;例如,读取字符串并计算它代表的数字。