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