Intel汇编语言程序设计(第四版) 勘误

Intel汇编语言程序设计(第四版)

[美] Kip R.Irvine  著

温玉杰  张家生  罗云彬  等译

 

第六章,6.3.3.3有符号比较

原文:

1 mov    ax,80h
2 cmp    ax,7Fh
3 ja    IsAbove
4 jg    IsGreater

原文解释:

  在上面的例子里,JA指令并不跳转,因为无符号数7Fh比无符号数80h要小;相反JG指令则执行跳转,因为+127大与-128。

---------------------------------------

本来也没太注意看着解释,不过这例子是我想弄明白的。

因为我想知道处理器怎么处理各个标志位,是把操作数当成无符号来处理,还是当成有符号来处理,还是根据SF标志来进行相应的处理呢

先看了下解释,似乎跟代码描述得不一样喔,然后再细看一下代码就觉得不对,AX是32位寄存器,进行处理的只是16位数,怎么操作CF、SF都不会设置。

带着怀疑,自己编译了一下,用OD载入调试。

发现,果然是原书打错了。

自己动手修改了一下

1 mov    al,80h
2 cmp    al,7Fh
3 ja    IsAbove
4 jg    IsGreater

按照预料中的结果运行。

现在来解决当初的疑惑

OD载入,执行到cmp al,7Fh时的标志位状态如下:

 继续执行,到ja IsAbove时,标志位状态如下:

可以发现,CF、SF、OF标志位置位,ZF标志位复位

很显然,CPU根本不知道7Fh,80h是无符号数还是有符号数,只是根据结果机械地设置各个标志位,而不管你操作数是否有符号。

 CF是无符号数操作时才有意义的,OF是有符号数操作时才有意义的,所以,ja,jg等指令可以根据SF来获取相关的操作数。

于是乎,这种机制能友好地为大家服务.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书全面细致地讲述了汇编语言程序设计的各个方面。从微处理器体系结构、工作机制到指令集;从最基本的编译器链接器的使用到高级过程、结构和宏的使用;从用纯汇编编写程序到用VC++,BC++等最新编译器与汇编的混合接口编程;从16位实模式下BIOS,DOS实模式文本及图形程序设计到32位保护模式的Windows程序设计;从磁盘基础知识到Intel指令编码、浮点运算等相关知识都做了深入而细致的讲解。 本书是佛罗里达国际大学等多所美国大学采用的计算机基础教材,内容广博,但又讲解得非常深入,书中结合最令人感兴趣的编程问题逐步引出汇编语言的解答,书后有编译器的安装使用以及常用的编程参考资料,随书附带的CD-ROM中配有较新的免费MASM 6.11编译器,为读者掌握汇编语言扫清一切障碍,另配以丰富和颇具特色的习题集及解答,使读者能够快速掌握这门公认为很难的语言。如果读者是汇编语言的初学者,本书则提供了最好的起点,如果读者已经熟练掌握了这门语言,重读本书,亦当有所收获。 本书对计算机体系结构及基本原理做了相当篇幅的介绍,因此本书不仅可作为高等院校计算机专业汇编语言的教材,也可以作为计算机体系结构和原理的参考资料。 本书着重讲述了如何在机器层次思考并解决程序设计的问题,具有以下特点: ·详细讲述了数制系统和数据存储的基础知识 ·所有的例子程序都在Microsoft的MASM 6.15编译器下测试通过 ·讲述了高级语言内嵌汇编代码以及汇编语言程序同实地址模式及保护模式的C/C++程序的链接 ·附带扩展的指令集手册,其中包含了指令格式和CPU标志的使用 ·讲述了中断和量和设备I/O ·随书附带的CD-ROM中包含了Microsoft MASM 6.15汇编编译器、程序编辑器、一个宏库和本书的源代码 第四版的新增内容: ·Win32程序设计,包含控制台API和图形应用程序 ·对过程、递归、堆栈参数、结构和联合进行了更多的介绍 ·布尔表达式、真值表和流程图 ·基本的字符串处理、排序和查找算法 ·实地址模式和保护模式下的位映射图形 ·IEEE浮点二进制表示法 ·虚拟机体系结构,IA-32保护模式分段和分页 ·介绍指令执行周期、内存、多任务、流水线和超标量体系结构 ·磁盘基础知识,包括磁盘的物理结构、FAT32和NTFS文件的结构 .PDG格式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值