【发布时间】:2016-01-03 21:22:00
【问题描述】:
我编写了这个程序来对输入的整数执行 ulam 猜想,但是当输入诸如 38836 之类的数字时,它超出了 16 位有符号整数的范围。我相信使用无符号可以解决我的问题,但是我无法弄清楚如何调整此代码段以接受无符号整数。任何帮助将不胜感激!
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<-----
【问题讨论】:
-
据我所知,汇编语言中的无符号整数和有符号整数没有区别。唯一的区别是您如何解释在算术函数期间设置的数据和标志。
-
您没有展示程序的相关部分。但是在 80x86(如果看起来是这样的话)中,有一组不同的分支指令可用于有符号和无符号算术。
-
问题是在输入 38836 时,我收到一条错误消息,并且不允许我输入它。分配要求这个数字有效,因此使用无符号整数输入,但我不知道如何做到这一点。
-
在这种情况下,您必须发布
GETDEC的相关代码。