Assembly 将程序转换为接受无符号整数

Assembly 将程序转换为接受无符号整数,assembly,unsigned-integer,Assembly,Unsigned Integer,我编写这个程序是为了对输入的整数执行ulam的猜想,但是当输入一个数字(如38836)时,它超出了16位有符号整数的界限。我相信使用unsigned可以解决我的问题,但是我不知道如何调整此代码段以接受无符号整数。任何帮助都将不胜感激 DOSSEG .MODEL SMALL, BASIC, FARSTACK EXTRN GETDEC:FAR EXTRN NEWLINE:FAR

我编写这个程序是为了对输入的整数执行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<-----
DOSSEG
.型号小型、基本、FARSTACK
EXTRN GETDEC:远
外星新线:远
EXTRN PUTDEC:远
外向型:远
.堆栈256
数据
NUM-DW?
CNT DW 0
提示DB“输入一个整数:”
总数据库“总数:”
FLOWMSG数据库“溢出”
密码
乌拉姆斯:
MOV AX,SEG DGROUP
斧头
莉迪,快点
莫夫CX,18
呼叫PUTSTRNG
打电话给GETDEC
MOV NUM,AX
MOV-CNT,0

--->为了简洁起见,程序的其余部分被剪切了至少在我的例子中,这个问题是通过使用一个单独的命令修复的,该命令将输入指定为未签名的,称为GETDEC$。这解决了这个问题,并允许无符号16位整数的范围,而不是有符号。

据我所知,汇编语言中无符号整数和有符号整数之间没有区别。唯一的区别是如何解释在算术函数期间设置的数据和标志。您没有显示程序的相关部分。但在80x86中(如果看起来是这样的话),有一组不同的分支指令用于有符号和无符号算术。问题是,在输入38836时,我收到一条错误消息,它不允许我输入它。赋值要求该数字有效,因此使用无符号整数输入,但我不知道如何输入。在这种情况下,您必须为
GETDEC
发布相关代码。可能重复