- ISBN:9787111741268
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:707
- 出版时间:2024-01-01
- 条形码:9787111741268 ; 978-7-111-74126-8
本书特色
本书源于作者的经典书籍The Art of Assembly Language,从32位汇编语言升级为64位汇编语言,基于Microsoft宏汇编程序(MASM)讲解x86-64 CPU上汇编语言的编程艺术,涵盖原理、方法和技巧,是系统学习和掌握汇编语言编程的有益参考。本书从计算机的组成结构开始介绍,包括计算机数据表示和运算,以及内存的访问和组织等。之后详细讲解汇编语言程序设计,涉及过程和算术运算的相关知识,再通过低级控制结构过渡到高级主题,如表查找和位操作。此外,还探索了x87浮点单元、SIMD指令,以及MASM的宏工具。
内容简介
本书源于作者的经典书籍The Art of Assembly Language,从32位汇编语言升级为64位汇编语言,基于Microsoft宏汇编程序(MASM)讲解x86-64 CPU上汇编语言的编程艺术。本书从计算机的组成结构开始介绍,包括计算机数据表示和运算,以及内存的访问和组织等。之后详细讲解汇编语言程序设计,涉及过程和算术运算的相关知识,再通过低级控制结构过渡到高级主题,如表查找和位操作。此外,还探索了x87浮点单元、SIMD指令,以及MASM的宏工具。书中的程序清单均可免费下载,供读者即学即用。本书适合计算机专业的学生、相关领域的从业人员以及对汇编语言感兴趣的技术人员阅读。<br />
目录
The Art of 64-Bit Assembly: x86-64 Machine Organization and Programming
译者序
推荐序
前言
致谢
**部分 计算机的组成结构
第1章 汇编语言的**个程序 2
1.1 先决条件 2
1.2 在计算机上安装MASM 3
1.3 在计算机上安装文本编辑器 3
1.4 MASM程序的结构剖析 3
1.5 运行**个MASM程序 4
1.6 运行**个MASM和C 的混合
程序 4
1.7 英特尔x86-64 CPU系列简介 6
1.8 内存子系统 9
1.9 在MASM中声明内存变量 10
1.9.1 将内存地址与变量关联 11
1.9.2 将数据类型与变量关联 12
1.10 在MASM中声明(命名)常量 12
1.11 基本的机器指令 13
1.11.1 mov指令 13
1.11.2 指令操作数的类型检查 14
1.11.3 add和sub指令 15
1.11.4 lea指令 15
1.11.5 call和ret指令以及MASM
过程 16
1.12 调用C/C 过程 17
1.13 “Hello, world!”程序 18
1.14 在汇编语言中返回函数结果 19
1.15 自动化构建过程 24
1.16 微软ABI注释 25
1.16.1 变量大小 25
1.16.2 寄存器的用途 28
1.16.3 栈对齐 28
1.17 拓展阅读资料 28
1.18 自测题 29
第2章 计算机数据表示和运算 31
2.1 数制系统 31
2.1.1 十进制数制系统的回顾 31
2.1.2 二进制数制系统 32
2.1.3 二进制约定 32
2.2 十六进制数制系统 33
2.3 关于数字与表示的注释 34
2.4 数据组织 36
2.4.1 位 36
2.4.2 半字节 36
2.4.3 字节 37
2.4.4 字 38
2.4.5 双字 39
2.4.6 四字和八字 39
2.5 位的逻辑运算 39
2.5.1 逻辑与运算 40
2.5.2 逻辑或运算 40
2.5.3 逻辑异或运算 40
2.5.4 逻辑非运算 41
2.6 二进制数和位串的逻辑运算 41
2.7 有符号数和无符号数 45
2.8 符号扩展和零扩展 49
2.9 符号缩减和饱和法 49
2.10 简要回顾:控制转移指令概述 50
2.10.1 jmp指令 50
2.10.2 条件跳转指令 51
2.10.3 cmp指令和相应的条件
跳转 52
2.10.4 条件跳转的同义词 53
2.11 移位和循环移位 54
2.12 位字段和打包数据 57
2.13 IEEE浮点数格式 63
2.13.1 单精度格式 64
2.13.2 双精度格式 65
2.13.3 扩展精度格式 65
2.13.4 规范化浮点值 65
2.13.5 非数值数据 66
2.13.6 MASM对浮点值的支持 66
2.14 BCD表示法 67
2.15 字符 67
2.15.1 ASCII字符编码 68
2.15.2 MASM对ASCII字符的
支持 69
2.16 Unicode字符集 70
2.16.1 Unicode码位 70
2.16.2 Unicode码平面 70
2.16.3 Unicode编码 71
2.17 MASM对Unicode的支持 72
2.18 拓展阅读资料 72
2.19 自测题 72
第3章 内存的访问和组织 76
3.1 运行时的内存组织 76
3.1.1 “.code”段 77
3.1.2 “.data”段 77
3.1.3 “.const”段 78
3.1.4 “.data?”段 79
3.1.5 程序中声明段的组织方式 79
3.1.6 内存访问和4KB内存管理
单元页 80
3.2 MASM如何为变量分配内存 81
3.3 标签声明 82
3.4 小端模式和大端模式的数据组织
方式 82
3.5 内存访问 84
3.6 MASM对数据对齐的支持 85
3.7 x86-64的寻址模式 87
3.7.1 x86-64的寄存器寻址模式 88
3.7.2 x86-64的64位内存寻址模式 88
3.7.3 不支持大地址的应用程序 91
3.8 地址表达式 94
3.9 栈段以及push和pop指令 97
3.9.1 基本的push指令 97
3.9.2 基本的pop指令 98
3.9.3 使用push和pop指令保存
寄存器的状态 99
3.10 栈 99
3.11 其他push和pop指令 102
3.12 不通过弹出栈从栈中移除数据 102
3.13 不通过弹出栈访问压入栈的
数据 103
3.14 微软ABI注释 104
3.15 拓展阅读资料 104
3.16 自测题 104
第4章 常量、变量和数据类型 106
4.1 imul指令 106
4.2 inc和dec指令 107
4.3 MASM常量声明 107
4.3.1 常量表达式 109
4.3.2 this和$运算符 111
4.3.3 常量表达式求值 112
4.4 MASM typedef语句 112
4.5 类型强制 113
4.6 指针数据类型 116
4.6.1 在汇编语言中使用指针 117
4.6.2 在M
作者简介
兰德尔·海德
(Randall Hyde)
嵌入式软件工程师,曾在医疗、核能、消费电子和娱乐行业工作。他在大学教授汇编语言编程超过10年,多年来为嵌入式和商业应用程序编写了数十万行汇编代码。著有The Art of Assembly Language和Write Great Code系列书籍,均由No Starch出版社出版。
-
全图解零基础word excel ppt 应用教程
¥16.3¥48.0 -
C Primer Plus 第6版 中文版
¥62.6¥108.0 -
零信任网络:在不可信网络中构建安全系统
¥34.2¥59.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
情感计算
¥66.8¥89.0 -
大模型RAG实战 RAG原理、应用与系统构建
¥74.3¥99.0 -
大学计算机基础实验教程(MS Office版)——面向数据分析能力培养
¥29.1¥39.8 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥51.8¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥70.0¥89.8 -
LINUX实战——从入门到精通
¥52.4¥69.0 -
剪映AI
¥52.8¥88.0 -
快速部署大模型:LLM策略与实践(基于ChatGPT等大语言模型)
¥56.9¥79.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
数据存储架构与技术(第2版)
¥62.9¥89.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
Java面向对象程序设计基础教程
¥35.9¥59.8 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0