溢出导致的问题
[分类:
编程
]
[ 标签:
]
参考下面的函数:
FACT PROC NEAR
CMP AL,0
JNZ FI
MOV AL,1
RET
FI: PUSH AX
DEC AL –> 在这里只取AL当中的数据进入下一轮乘法
CALL FACT
POP CX
CALL MULT –>在这里对AL和DL进行乘法运算,结果放在AX当中
RET
FACT ENDP
MULT PROC NEAR
MOV DL,CL
MUL DL
RET
MULT ENDP
当要计算的数字超过6的时候,AX里面的就是0x02D0,那么在只取AL进行下一轮计算的时候,就会漏掉0x2D0当中的高位0x02,导致计算错误——或者说,是计算溢出。
[原文在百度空间已经关闭]
标签集合/Tag clouds
C++
Symbain
轻松汇编
算法
论文学习
资治通鉴
Delphi
编程之美
Poco
MFC
Linux
IFC
知乎
汇编
数据分析
交叉编译
poco
j2me
android
XML
Java
DTD
飞信
零宽断言
诺基亚
联系人
编程
真值表
池西木
正则表达式
多线程
命令行
优化
stream
configure
cmake
VIM
UiAutomator
TDD
Symbian
Sqlite
SourceInsight
Python
MPAndroidChart
Kotlin
Flutter
Dokka
Chatgpt