两个十六进制数分别相加和相减后,求运算结果及各标志位的值

xiaya1986cv 2008-09-20 10:46:25
刚学微机,想问一下标志位中的AF(辅助进位标志)、ZF(令标志)OF(溢出标志)问题
AF是用以标志D3向D4位之间的进位或借位状态,那么是有借位置1还是没借位置1?
ZF是用以标志运算结果是否为零状态,这里 的“运算结果”是指什么?
关于OF是用于判断是否有溢出,我只知道两个正数相加为负就有溢出,那么两个数相减呢?是否还有其他的判断方法?
就以456AH-5439H为例,CF,PF,AF,ZF,SF,OF分别是多少?
请高手指点
...全文
2476 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ms_Chen90 2011-03-21
  • 打赏
  • 举报
回复
555……正在纠结这个问题,我没有学Debug滴
hehe3434 2009-11-21
  • 打赏
  • 举报
回复
另外,关于AF的使用,我个人认为应该与BCD码相结合
hehe3434 2009-11-21
  • 打赏
  • 举报
回复
我认为两个数相减没有溢出的问题,因为溢出的实质就是超出模的表示范围,而两个数相减不存在这个问题,也就是说两个不相同符号的数相加。 我也只是一个大三的学生,才疏学浅,不知道对不对,呵呵
cnzdgs 2008-09-21
  • 打赏
  • 举报
回复
int 3是断点中断,当程序运行到这里的时候,调试器会把它停住,以便查看程序运行的情况。
cnzdgs 2008-09-20
  • 打赏
  • 举报
回复
AF是用以标志D3向D4位之间的进位或借位状态,那么是有借位置1还是没借位置1?
有进位或借位时为1。

ZF是用以标志运算结果是否为零状态,这里 的“运算结果”是指什么?
“运算结果”就是加、减、乘、除、与、或、非等运算,你看一下指令的说明。

关于OF是用于判断是否有溢出,我只知道两个正数相加为负就有溢出,那么两个数相减呢?是否还有其他的判断方法?
正数减负数结果为负;负数减正数结果为正。

就以456AH-5439H为例,CF,PF,AF,ZF,SF,OF分别是多少?
用debug写两条指令调试看一下就知道了,比看别人回复的准确性更高。
xiaya1986cv 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnzdgs 的回复:]
你的99A3是自己输入的,不是计算结果,标志位都是原来的状态。你要用-A
然后输入代码
mov ax,5439
add ax,456a
int 3
再回车一次
-G
然后看结果。
[/Quote]
谢谢了,终于弄好了,最后想问一下,代码里的“int 3”是什么意思啊?
cnzdgs 2008-09-20
  • 打赏
  • 举报
回复
你的99A3是自己输入的,不是计算结果,标志位都是原来的状态。你要用-A
然后输入代码
mov ax,5439
add ax,456a
int 3
再回车一次
-G
然后看结果。
xiaya1986cv 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
你开个命令提示窗口,输入Debug回车,然后屏幕上出现一个“-”,在这个-后面输入Debug的命令,回车执行,常用的是A、D、E、G、P、Q、R、T,你可以输入“?”回车查看命令说明。
[/Quote]
我计算5439+456A的状态标志
计算结果是AX=99A3
我在Debug里打:
r ax
ax 0000
:99a3
然后再打r
出现 : NV UP EI PL NZ NA PO NC 分别指:OF=0 DF=0 IF=1 SF=0 ZF=0 AF=0 PF=0 CF=0
和我搜算的结果完全不同嘛(我的是:OF=1 SF=1 ZF=0 AF=1 PF=1 CF=0)
cnzdgs 2008-09-20
  • 打赏
  • 举报
回复
你开个命令提示窗口,输入Debug回车,然后屏幕上出现一个“-”,在这个-后面输入Debug的命令,回车执行,常用的是A、D、E、G、P、Q、R、T,你可以输入“?”回车查看命令说明。
xiaya1986cv 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnzdgs 的回复:]
OF标志位就是为了让程序判断运算是否溢出而设计的,利用jo、jno指令判断(根据OF标志位来决定是否跳转)。
[/Quote]
我还没学到用Debug,能否说些实用的方法
cnzdgs 2008-09-20
  • 打赏
  • 举报
回复
OF标志位就是为了让程序判断运算是否溢出而设计的,利用jo、jno指令判断(根据OF标志位来决定是否跳转)。
xiaya1986cv 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
AF是用以标志D3向D4位之间的进位或借位状态,那么是有借位置1还是没借位置1?
有进位或借位时为1。

ZF是用以标志运算结果是否为零状态,这里 的“运算结果”是指什么?
“运算结果”就是加、减、乘、除、与、或、非等运算,你看一下指令的说明。

关于OF是用于判断是否有溢出,我只知道两个正数相加为负就有溢出,那么两个数相减呢?是否还有其他的判断方法?
正数减负数结果为负;负数减正数结果为正。

就以45…
[/Quote]
我刚上微机课,不知道怎么用Debug调试。关于溢出网上有的说通过看最后结果是不是在范围内(如8位表达的整数范围是:+127~-128,16位表达的范围是:+32767~-32768)如果超出就算是溢出,这种方法可以吗? 判断溢出只要按照“正+正=负;正-负=负;负-正=正”这三条原则就可以了是吗?
目前已有若干版本的子程序库公开发表,它们各有特色。本程序库中的开平方算法为快速逼近算法,它能达到牛顿迭代法同样的精度,而速度加快二十倍左右,超过双字节定点除法的速度。 本子程序库对《单片机应用程序设计技术》一书附录中的子程序库作了重大修订: (1)按当前流行的以 IBM PC 为主机的开发系统对汇编语言的规定,读者不必再进行修改,便可直接使用。 (2)对浮点运算子程序库进行了进一步的测试和优化,对十进制浮点和二进制浮点的相互转换子程序进行了彻底改写,提高了运算精度和可靠性。 (3)新增添了若干个浮点子程序(传送、比较、清零、判零等),使编写据处理程序的工作变得更简单直观。 在使用说明中开列了最主要的几项:标号、入口条件、出口信息、影响资源、堆栈需,各项目的意义请参阅《单片机应用程序设计技术》第六章 6.3.7 节的内容。程序清单中开列了四个栏目:标号、指令、操作、注释。为方便读者理解,注释尽力详细。 子程序库的使用方法如下: 1.将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺点是程序太长,大量无关子程序也包含在其中。 2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。

21,493

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧