汇编进位与溢出标志位

以例题开始说明:写出如下程序段执行后进位标志位与溢出标志位的变化

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

.code
main proc
    mov ax, 7ff0h
    add al, 10h  ;CF=1, OF=0       皆以无符号数计算 ax=7f00h
    add ah, 1    ;CF=0, OF=1                       ax=8000
    add ax, 2    ;CF=0, OF=0                       ax=8002

    invoke ExitProcess,0
main endp
end main

标志寄存器保存的是当前指令执行后的运算状态
CF只针对无符号数(将寄存器中的操作数都看作是无符号数)
OF只针对有符号数(将寄存器中的操作数都看作是有符号数)
故CF标志位的变化仅将数值看作无符号数(所有位都是数值),OF看作有符号数(最高位为符号位)


第一条ADD指令执行后:
1.对CF标志位,计算时数据看作无符号数
al == f0h
则al + 10h == 100h 两个8位二进制相加后数变为9位二进制数有进位,故CF == 1
2.对OF标志位,计算时数据看作有符号数(计算机中有符号数用补码计算,可将减法转换为加法)
al == f0h 即11110000 最高为为符号位,1则为负数
al + 10h 即11110000 + 00010000转换为补码相加:10010000 + 00010000 = 10100000[补]
对计算结果10100000[补]再求一次补即为最终结果:11100000未溢出,故OF == 0
(易错提示:误将有符号数化为无符号数计算,11110000 + 00010000结果上溢,OF == 1出错)


第二条ADD指令执行后:
1.对CF(数据无符号):7Fh + 1 = 80h,无进位,故CF = 0
2.对OF(数据有符号):7Fh + 1(有符号8位二进制数最大数为7Fh,十进制为127,加1后,上溢,故OF == 1)


第三条ADD指令执行后:
1.对CF(数据无符号):8000h + 2 = 8002h,无进位,故CF = 0
2.对OF(数据有符号):8000h + 2(1000000000000000b + 0...010b, 有符号数运算结果:1111111111111110,无溢出,故OF == 0)


注:
1.有符号无符号指的是最高位是否是符号位,即是以补码的形式看待还是以原码的形式看待
2.在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的,无符号数没有原码、反码和补码一说,只有带符号数才存在不同的编码方式
3.注意哪些标志位为无符号数运算:ZF CF AC 有符号运算OF SF
4.硬件如何检测溢出(即溢出标志位的取值):计算结果的最高有效位产生的进位(CF)与结果的最高位进行异或操作,异或的结果存入溢出标志位
5.溢出与进位两个共同点都是"存不了",但其监测测的结果数据范围不同,即有符号数与无符号数的表示范围不同,8位有符号数:120 + 120 = 240,超过[-128,127],OF == 1;8位无符号数:120 + 120 = 240,未超过[0, 255], CF == 0

附上述程序VS2017调试结果:

MOV指令执行
第一次ADD指令执行
第二次ADD指令执行
第三次ADD指令执行

附标志位寄存器图解:

Flags
Eflag
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,222评论 8 114
  • 如果你是一个计算机专业的本科生,那么你可能大一时就在《数字逻辑》(或《数字电路》)这本书里面学习了机器码。可能当时...
    航航大魔王阅读 21,420评论 7 30
  • pythonDAYS02 (1)关于编程 理解什么是编程:编程就是编写程序,通过程序自动化的操作,解决现实生活中的...
    冰羽轩阅读 151评论 0 0
  • 初学python笔记 python是一个编程语言,是一种弱类型的、面向对象的、可交互的、跨平台的、操作简单的解释型...
    影子1997阅读 278评论 0 2
  • 有一天,小明吃完香蕉把皮随手一扔,扔到垃圾桶旁边,就走了,看见前面的环卫叔叔在扫地很辛苦。意识到自己的错误,就回去...
    慧妮子阅读 137评论 0 1