
作者:许向阳
页数:340
出版社:华中科技大学出版社
出版日期:2020
ISBN:9787568063111
电子书格式:pdf/epub/txt
内容简介
本书立足于目前使用为广泛的Intel x8632和x8664系列的CPU、Windows操作系统及Visual Studio 2019开发平台,从汇编语言这种直观和直接的角度,揭示计算机工作的基本原理、C语言语句和函数的处理过程、程序优化的技巧。全书共分为19章。前5章介绍了汇编语言程序设计的基本知识,包括CPU、内存、寻址方式和常用机器指令;第6章至1章介绍了x8632位控制台应用程序设计,包括顺序和分支、循环、子程序设计、多模块化程序设计;2章为中断和异常处理;3章是Win32窗口程序设计;4章至7章介绍了x87 FPU、MMX、SSE、AVX程序设计;8章为x8664位汇编程序设计;9章为上机操作。本书内容新颖,覆盖面广,重点突出,直观易懂,趣味性强,可供各类高等院校计算机及相关专业作为教材,也可供广大使用汇编语言的工程技术人员参考。
作者简介
华中科技大学计算机科学与技术学院副教授。1991年毕业于华中科技大学计算机学院,获得软件专业硕士学位。从事数据库科研工作多年,对数据库管理系统的总体设计、并发控制、查询优化、数据库安全、并行数据库有较深的研究,在国内权威和重要期刊上发表论文20多篇。从事汇编语言程序设计、人工智能的教学工作多年,为国家精品课程“汇编语言程序设计”的主要建设者之一。
本书特色
作者从事“汇编语言程序设计”课程教学多年,为国家精品课程“汇编语言程序设计”的主要建设者之一。本书理论结合实践,符合现代教材编写思路,书中附大量代码案例,便于学生动手验证、操作。
目录
1.1.1机器语言(1)
1.1.2汇编语言(2)
1.2为什么学习汇编语言(4)
1.3如何学习汇编语言(7)
1.4汇编语言源程序举例(9)
1.5计算机中信息编码的奥秘(12)
1.6使用符号的说明(14)
习题1(15)
上机实践1(16)
第2章Intel中央处理器(17)
2.1Intel公司微处理器的发展史(17)
2.2Intel x86微处理器结构(19)
2.3执 行 部 件(20)
2.3.132位CPU中的通用寄存器(21)
2.3.2通用寄存器应用示例(22)
2.4标志寄存器(23)
2.4.1条件标志位(24)
2.4.2控制标志位(26)
2.4.3系统标志位(27)
2.5指令预取部件和指令译码部件(27)
2.6分段部件和分页部件(28)
2.7×86的三种工作方式(30)
2.8Intel公司酷睿微体系结构(31)
习题2(33)
上机实践2(34)
第3章主存储器及数据在计算机内的表示形式(35)
3.1主存储器(35)
3.1.1数据存储的基本形式(35)
3.1.2数据地址的类型及转换(36)
3.2数值数据在计算机内的表示形式(37)
3.2.1有符号数和无符号数表示法(37)
3.2.2BCD码(38)
3.3字符数据在计算机内的表示形式(39)
3.4数据段定义(39)
3.4.1数据定义伪指令(40)
3.4.2表达式(40)
3.4.3汇编地址计数器(42)
3.4.4数据段定义示例(43)
3.5主存储器分段管理(44)
3.6主存储器物理地址的形成(45)
3.6.18086和x8632实方式下物理地址的形成(45)
3.6.2保护方式下物理地址的形成(47)
习题3(50)
上机实践3(51)
第4章寻址方式(53)
4.1寻址方式概述(53)
4.2立即寻址(54)
4.3寄存器寻址(56)
4.4直接寻址(57)
4.4.1直接寻址的基本概念(57)
4.4.2直接寻址的用法示例(58)
4.5寄存器间接寻址(60)
4.5.1寄存器间接寻址的基本用法(60)
4.5.2寄存器间接寻址与C语言指针的比较(62)
4.6变址寻址(63)
4.7基址加变址寻址(64)
4.8寻址方式综合举例(66)
4.9×86机器指令编码规则(68)
4.108086/80386的寻址方式(73)
习题4(74)
上机实践4(77)
第5章常用机器指令(79)
5.1通用机器指令概述(79)
5.2数据传送指令(80)
5.2.1一般数据传送指令(80)
5.2.2带条件的数据传送指令(82)
5.2.3堆栈操作指令(83)
5.2.4标志寄存器传送指令(86)
5.2.5地址传送指令(88)
5.3算术运算指令(89)
5.3.1加法指令(90)
5.3.2减法指令(91)
5.3.3乘法指令(92)
5.3.4除法指令(94)
5.3.5符号扩展指令(95)
5.4逻辑运算指令(95)
5.5移位指令(97)
5.7位操作和字节操作指令(99)
5.8标志位控制指令和杂项指令(100)
5.9I/O指令(100)
习题5(102)
上机实践5(103)
第6章顺序和分支程序设计(105)
6.1概述(105)
6.2程序中的伪指令(107)
6.2.1处理器选择伪指令(107)
6.2.2存储模型说明伪指令(108)
6.2.3段定义及程序结束伪指令(109)
6.3转移指令(110)
6.3.1转移指令概述(110)
6.3.2简单条件转移指令(110)
6.3.3无符号条件转移指令(111)
6.3.4有符号条件转移指令(113)
6.3.5无条件转移指令(114)
6.4简单分支程序设计(115)
6.4.1C语言的if语句与汇编语句的对应关系(115)
6.4.2分支程序设计示例(117)
6.4.3分支程序设计注意事项(120)
6.5多分支程序设计(121)
6.5.1多分支向无分支的转化(121)
6.5.2switch语句的编译(123)
6.6条件控制流伪指令(125)
习题6(128)
上机实践6(129)
第7章循环程序设计(131)
7.1循环程序(131)
7.1.1循环程序的结构(131)
7.1.2循环控制方法(132)
7.1.3循环控制指令(134)
7.2单重循环程序设计(137)
7.3多重循环程序设计(139)
7.4循环程序中的细节分析(141)
7.5与C循环程序反汇编的比较(145)
7.6循环控制伪指令(148)
习题7(150)
上机实践7(151)
第8章子程序设计(152)
8.1子程序的概念(152)
8.2子程序的基本用法(153)
8.2.1子程序的定义(153)
8.2.2子程序的调用和返回(154)
8.2.3在主程序与子程序之间传递参数(155)
8.2.4子程序调用现场的保护(157)
8.2.5子程序设计应注意的问题(158)
8.3子程序应用示例(159)
8.3.1字符串的比较(159)
8.3.2数串转换(161)
8.3.3串数转换(163)
8.3.4自我修改返回地址的子程序(165)
8.3.5自我修改的子程序(168)
8.4C语言程序中函数的运行机理(169)
8.5汇编语言中子程序的高级用法(172)
8.5.1局部变量的定义和使用(173)
8.5.2子程序的原型说明、定义和调用(174)
8.5.3子程序的高级用法举例(176)
8.6递归子程序的设计(177)
习题8(180)
上机实践8(181)
第9章串处理程序设计(183)
9.1串操作指令简介(183)
9.2串传送指令(185)
9.3串比较指令(187)
9.4串搜索指令(189)
9.5向目的串中存数指令(190)
9.6从源串中取数指令(191)
习题9(192)
上机实践9(192)
第10章复合数据类型的定义和使用(194)
10.1结构体(194)
10.1.1结构体的定义(194)
10.1.2结构变量的定义(195)
10.1.3结构变量的访问(196)
10.1.4结构信息的自动计算(198)
10.2结构变量的数据存储(200)
10.2.1汇编语言中结构变量的存储(200)
10.2.2与C语言结构变量存储的差异(201)
10.3联合体(202)
习题10(203)
上机实践10(203)
第11章程序设计的其他方法(205)
11.1汇编语言多模块化程序设计(205)
11.2C语言程序和汇编语言程序的混合(209)
11.2.1函数的申明和调用(209)
11.2.2变量的申明和调用(210)
11.3内嵌汇编(211)
11.4模块程序设计中的注意事项(213)
11.5宏功能程序设计(214)
11.5.1宏定义(214)
11.5.2宏调用(215)
11.5.3宏指令与子程序的比较(216)
11.6可执行文件的格式(217)
习题11(223)
上机实践11(224)
第12章中断和异常处理(225)
12.1中断与异常的基础知识(225)
12.1.1中断和异常的概念(225)
12.1.2中断描述符表(227)
12.1.3中断和异常的响应过程(229)
12.1.4软中断指令(230)
12.2Windows中的结构化异常处理(231)
12.2.1编写异常处理函数(231)
12.2.2异常处理程序的注册(232)
12.2.3全局异常处理程序的注册(234)
12.3C语言异常处理程序反汇编分析(236)
习题12(239)
上机实践12(239)
第13章Win32窗口程序设计(242)
13.1Win32窗口程序设计基础 (242)
13.1.1窗口程序运行的基本过程(242)
13.1.2Windows消息(245)
13.1.3Win32窗口程序的开发环境(247)
13.2Win32窗口应用程序的结构(248)
13.2.1主程序(248)
13.2.2窗口主程序(248)
13.2.3窗口消息处理程序(249)
13.3窗口应用程序开发实例(250)
13.3.1不含资源的窗口程序(250)
13.3.2包含菜单和对话框的窗口程序(253)
13.4与C语言开发的窗口程序比较(260)
习题13(264)
上机实践13(264)
第14章x87 FPU程序设计(265)
14.1浮点数据(265)
14.1.1浮点数据在机内的表示形式(265)
14.1.2浮点类型变量的定义(267)
14.2×87 FPU的寄存器(268)
14.2.1×87 FPU数据寄存器(268)
14.2.2×87 FPU其他寄存器(269)
14.3×87 FPU指令(271)
14.4浮点数处理程序示例(274)
习题14(277)
上机实践14(277)
第15章MMX程序设计(278)
15.1MMX技术简介(278)
15.2MMX指令简介(280)
15.3MMX编程示例(282)
15.4使用C语言编写MMX应用程序(285)
习题15(286)
上机实践15(287)
第16章SSE程序设计(288)
16.1SSE技术简介(288)
16.2SSE指令简介(289)
16.2.1组合和标量单精度浮点指令(290)
16.2.2SSE 64位SIMD整数指令(292)
16.2.3MXCSR状态管理指令(293)
16.2.4缓存控制指令(293)
16.3SSE2及后续版本的指令简介(293)
16.3.1组合双精度浮点数和标量双精度浮点数指令(294)
16.3.264位和128位整数指令(295)
16.4SSE编程示例(296)
16.5使用C语言编写SSE应用程序(297)
习题16(299)
上机实践16(300)
第17章AVX程序设计(301)
17.1AVX技术简介(301)
17.2AVX指令简介(302)
17.2.1新指令(302)
17.2.2功能扩展指令(303)
17.3AVX编程示例(304)
习题17(306)
上机实践17(306)
第18章x8664位汇编程序设计(307)
18.1×8664的运行环境(307)
18.1.1寄存器(307)
18.1.2寻址方式(308)
18.1.3指令系统(309)
18.264位的程序设计(309)
18.2.164位平台下与32位平台下的区别(309)
18.2.2显示一个消息框(312)
18.2.3浮点数运算(312)
18.2.4程序自我修改(313)
18.3×8664机器指令编码规则(314)
习题18(317)
上机实践18(317)
第19章上机操作(318)
19.1创建工程和生成可执行程序(318)
19.2程序的调试(319)
19.3编译链接器的配置(322)
19.4其他操作(324)
附录ASCII字符表(326)
参考文献(327)













