书名:汇编语言:基于x86处理器(英文版·原书第8版)
定价:149.0
ISBN:9787111672111
作者:[美]基普·欧文(Kip R.Irvine)
版次:1
内容提要:
内容简介 |
本课程通过自顶向下的程序设计演示和解释,教授学生如何在机器层面上编写和调试程序,并将有效的设计技巧应用于多种程序设计课程。这种方法简化并消除了学生在学习更*级的计算机体系结构和操作系统课程之前需要掌握的概念。
|
目录:
目录 |
*1章 基本概念 1 1.1 欢迎来到汇编语言的世界 1 1.1.1 读者可能会问的问题 2 1.1.2 汇编语言的应用 5 1.1.3 本节回顾 6 1.2 虚拟机概念 7 1.2.1 本节回顾 9 1.3 数据表示 10 1.3.1 二进制整数 10 1.3.2 二进制加法 12 1.3.3 整数存储大小 13 1.3.4 十六进制整数 14 1.3.5 十六进制加法 16 1.3.6 有符号的二进制整数 16 1.3.7 二进制减法 19 1.3.8 字符存储 20 1.3.9 二进制编码的十进制(BCD)数 22 1.3.10 本节回顾 22 1.4 布尔表达式 23 1.4.1 布尔函数的真值表 26 1.4.2 本节回顾 27 1.5 本章小结 27 1.6 关键术语 28 1.7 复习题和练习 29 1.7.1 简答题 29 1.7.2 算法题 31 *2章 x86处理器架构 33 2.1 一般概念 34 2.1.1 基本微机设计 34 2.1.2 指令执行周期 35 2.1.3 读取内存 36 2.1.4 加载并执行程序 37 2.1.5 本节回顾 38 2.2 32位x86处理器 39 2.2.1 操作模式 39 2.2.2 基本执行环境 39 2.2.3 x86内存管理 43 2.2.4 本节回顾 44 2.3 64位x86-64处理器 44 2.3.1 64位操作模式 45 2.3.2 基本的64位执行环境 45 2.3.3 本节回顾 46 2.4 典型x86计算机的组件 47 2.4.1 母板 47 2.4.2 内存 49 2.4.3 本节回顾 49 2.5 输入–输出系统 50 2.5.1 I/O访问层次 50 2.5.2 本节回顾 52 2.6 本章小结 53 2.7 关键术语 54 2.8 复习题 55 第3章 汇编语言基础 57 3.1 基本语言元素 58 3.1.1 *一个汇编语言程序 58 3.1.2 整数字面量 59 3.1.3 常整数表达式 60 3.1.4 实数字面量 61 3.1.5 字符字面量 61 3.1.6 字符串字面量 62 3.1.7 保留字 62 3.1.8 标识符 62 3.1.9 伪指令 63 3.1.10 指令 63 3.1.11 本节回顾 67 3.2 示例:整数加减法 67 3.2.1 AddTwo程序 67 3.2.2 运行和调试AddTwo程序 69 3.2.3 程序模板 73 3.2.4 本节回顾 74 3.3 汇编、链接和运行程序 75 3.3.1 汇编–链接–执行周期 75 3.3.2 列表文件 76 3.3.3 本节回顾 78 3.4 定义数据 78 3.4.1 内部数据类型 78 3.4.2 数据定义语句 79 3.4.3 向AddTwo程序添加一个变量 80 3.4.4 定义BYTE和SBYTE数据 81 3.4.5 定义WORD和SWORD数据 83 3.4.6 定义DWORD和SDWORD数据 84 3.4.7 定义QWORD数据 84 3.4.8 定义压缩的BCD(TBYTE)数据 85 3.4.9 定义浮点类型 85 3.4.10 变量相加程序 86 3.4.11 小端序 87 3.4.12 声明未初始化数据 88 3.4.13 本节回顾 88 3.5 符号常量 90 3.5.1 等号伪指令 90 3.5.2 计算数组和字符串的大小 91 3.5.3 EQU伪指令 92 3.5.4 TEXTEQU伪指令 93 3.5.5 本节回顾 94 3.6 64位编程介绍 95 3.7 本章小结 96 3.8 关键术语 98 3.8.1 术语 98 3.8.2 指令、操作符及伪指令 98 3.9 复习题和练习 99 3.9.1 简答题 99 3.9.2 算法题 100 3.10 编程练习 100 第4章 数据传送、寻址及算术运算 102 4.1 数据传送指令 103 4.1.1 引言 103 4.1.2 操作数类型 103 4.1.3 直接内存操作数 103 4.1.4 MOV指令 105 4.1.5 整数的零/符号扩展 106 4.1.6 LAHF和SAHF指令 108 4.1.7 XCHG指令 109 4.1.8 直接–偏移量操作数 109 4.1.9 传送数据的示例 110 4.1.10 本节回顾 113 4.2 加法和减法 114 4.2.1 INC和DEC指令 114 4.2.2 ADD指令 114 4.2.3 SUB指令 115 4.2.4 NEG指令 115 4.2.5 实现算术表达式 115 4.2.6 加减法影响的标志 116 4.2.7 示例程序(AddSubTest) 120 4.2.8 本节回顾 121 4.3 与数据相关的操作符和伪指令 122 4.3.1 OFFSET操作符 122 4.3.2 ALIGN伪指令 123 4.3.3 PTR操作符 124 4.3.4 TYPE操作符 125 4.3.5 LENGTHOF操作符 125 4.3.6 SIZEOF操作符 126 4.3.7 LABEL伪指令 126 4.3.8 本节回顾 127 4.4 间接寻址 127 4.4.1 间接操作数 127 4.4.2 数组 128 4.4.3 变址操作数 129 4.4.4 指针 131 4.4.5 本节回顾 132 4.5 JMP和LOOP指令 134 4.5.1 JMP指令 134 4.5.2 LOOP指令 135 4.5.3 在Visual Studio调试器中显示数组 136 4.5.4 整数数组求和 137 4.5.5 复制字符串 138 4.5.6 本节回顾 139 4.6 64位编程 140 4.6.1 MOV指令 140 4.6.2 64位版本的SumArray程序 141 4.6.3 加法和减法 142 4.6.4 本节回顾 143 4.7 本章小结 144 4.8 关键术语 145 4.8.1 术语 145 4.8.2 指令、操作符及伪指令 145 4.9 复习题和练习 146 4.9.1 简答题 146 4.9.2 算法题 148 4.10 编程练习 149 第5章 过程 151 5.1 堆栈操作 152 5.1.1 运行时堆栈(32位模式) 152 5.1.2 PUSH和POP指令 154 5.1.3 本节回顾 157 5.2 定义和使用过程 158 5.2.1 PROC伪指令 158 5.2.2 CALL和RET指令 160 5.2.3 嵌套过程调用 161 5.2.4 向过程传递寄存器参数 163 5.2.5 示例:整数数组求和 163 5.2.6 保存和恢复寄存器 165 5.2.7 本节回顾 166 5.3 链接到外部库 167 5.3.1 背景信息 167 5.3.2 本节回顾 168 5.4 Irvine32库 169 5.4.1 创建库的动机 169 5.4.2 Win32控制台窗口 171 5.4.3 各个过程的描述 172 5.4.4 库测试程序 184 5.4.5 本节回顾 192 5.5 64位汇编编程 193 5.5.1 Irvine64库 193 5.5.2 调用64位子例程 194 5.5.3 x64调用规约 195 5.5.4 调用过程的示例程序 195 5.5.5 本节回顾 197 5.6 本章小结 198 5.7 关键术语 199 5.7.1 术语 199 5.7.2 指令、操作符及伪指令 199 5.8 复习题和练习 199 5.8.1 简答题 199 5.8.2 算法题 202 5.9 编程练习 203 第6章 条件处理 205 6.1 布尔和比较指令 206 6.1.1 CPU状态标志 206 |