一个简单的循环,用于找到最大除数,即根的整数,在本例中,在345三角形中,除数为5
mov ax,3
mul ax
push ax
mov ax,4
mul ax
pop bx
add ax,bx
push ax ;save 25 decimal for repeated loops
mov bx,1
mov bp,sp
agin
mov dx,0 ;fixed problem
mov ax,[bp] ;25 decimal
inc bx ;starts at 2
div bx
cmp bx,ax
jb agin
out
然而,当程序从2变为3时,奇怪的事情发生了,我得到了hex555D而不是8(8*3)
将mov-dx,0放入修复状态并恢复正常
我不知道为什么,旗帜没有改变
有人知道为什么吗?这是签名/未签名的问题吗?
DIV
指令将数字DX: AX除以操作数。
DX是大写字母。AX是较低的单词。因此,如果要将AX除以BX,则需要将DX归零。
我正在处理一个赋值,以获取用户提供的整数并确定它是否是素数。我编写的程序运行良好,我只是不完全明白为什么我需要在每个周期将edx设置为0。
它将把牌阵的一半分配给玩家和计算机(玩家得到前半部分,计算机得到后半部分)。现在这是先洗牌,所以是的,这似乎是公平的。 我得到的出界错误是这一行:
我一直看到有人声称MOV指令可以在x86中免费,因为寄存器重命名。 对我来说,我无法在一个测试用例中验证这一点。我尝试的每个测试用例都会揭穿它。 例如,这是我正在使用Visual C编译的代码: 这将为循环生成以下汇编代码(可以随意生成;显然不需要Visual C): 现在,我多次运行该程序,在删除MOV指令时,我观察到相当一致的2%差异: 那是什么呢?为什么电影不是“免费的”?这个循环对于x86
我需要将12小时的时间转换为24小时的格式。 我现在已经把12小时的时间硬编码了,以使事情更简单。 我的逻辑:输入sting 07:05:45PM提取最后2个字符。如果AM check为前两个字符,则为12。。如果是,则将其设置为00,否则按原样输出,如果PM检查前两位数字是否为12。。如果是,请保持原样,如果不是,则在前2位加上12 总线错误:10是我运行代码得到的
在这个打印从1到10000000的所有数字、Haskell版本和C版本的简单程序中,为什么Haskell版本如此缓慢,以及哪些命令有助于学习如何提高Haskell程序的性能? 下面是一份报告,包含重现我激动人心的事件所需的所有细节,制作报告时会打印出来源,包括Makefile的来源: