×
汇编语言:基于x86处理器(英文版·原书第8版)

汇编语言:基于x86处理器(英文版·原书第8版)

1星价 ¥107.3 (7.2折)
2星价¥107.3 定价¥149.0
暂无评论
图文详情
  • ISBN:9787111672111
  • 装帧:一般轻型纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:864
  • 出版时间:2021-03-01
  • 条形码:9787111672111 ; 978-7-111-67211-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 6.1.2 AND指令 207 6.1.3 OR指令 208 6.1.4 位映射集 209 6.1.5 XOR指令 211 6.1.6 NOT指令 212 6.1.7 TEST指令 212 6.1.8 CMP指令 213 6.1.9 置位和清零各个CPU标志 214 6.1.10 64位模式下的布尔指令 214 6.1.11 本节回顾 215 6.2 条件跳转 216 6.2.1 条件结构 216 6.2.2 Jcond指令 217 6.2.3 条件跳转指令的类型 217 6.2.4 条件跳转应用 221 6.2.5 本节回顾 225 6.3 条件循环指令 226 6.3.1 LOOPZ和LOOPE指令 226 6.3.2 LOOPNZ和LOOPNE指令 226 6.3.3 本节回顾 227 6.4 条件结构 228 6.4.1 块结构的IF语句 228 6.4.2 复合表达式 233 6.4.3 WHILE循环 234 6.4.4 表驱动的选择 237 6.4.5 本节回顾 239 6.5 应用:有限状态机 240 6.5.1 验证输入字符串 240 6.5.2 验证有符号整数 241 6.5.3 本节回顾 245 6.6 条件控制流伪指令(可选主题) 246 6.6.1 创建IF语句 246 6.6.2 有符号数和无符号数的比较 249 6.6.3 复合表达式 250 6.6.4 用.REPEAT和.WHILE创建循环 253 6.7 本章小结 254 6.8 关键术语 255 6.8.1 术语 255 6.8.2 指令、操作符及伪指令 255 6.9 复习题和练习 256 6.9.1 简答题 256 6.9.2 算法题 258 6.10 编程练习 259 6.10.1 对代码测试的建议 259 6.10.2 习题描述 260 第7章 整数算术运算 263 7.1 移位和循环移位指令 264 7.1.1 逻辑移位和算术移位 264 7.1.2 SHL指令 265 7.1.3 SHR指令 266 7.1.4 SAL和SAR指令 267 7.1.5 ROL指令 268 7.1.6 ROR指令 269 7.1.7 RCL和RCR指令 269 7.1.8 有符号数溢出 270 7.1.9 SHLD/SHRD指令 270 7.1.10 本节回顾 270 7.2 移位和循环移位的应用 274 7.2.1 多个双字的移位 274 7.2.2 通过移位做乘法 275 7.2.3 显示二进制位 276 7.2.4 提取文件日期字段 276 7.2.5 本节回顾 277 7.3 乘法和除法指令 279 7.3.1 无符号整数乘法(MUL) 279 7.3.2 有符号整数乘法(IMUL) 281 7.3.3 测量程序执行时间 284 7.3.4 无符号整数除法(DIV) 286 7.3.5 有符号整数除法(IDIV) 288 7.3.6 实现算术表达式 292 7.3.7 本节回顾 294 7.4 扩展的加减法 295 7.4.1 ADC指令 295 7.4.2 扩展加法的示例 296 7.4.3 SBB指令 298 7.4.4 本节回顾 299 7.5 ASCII和非压缩十进制算术运算 299 7.5.1 AAA指令 300 7.5.2 AAS指令 302 7.5.3 AAM指令 303 7.5.4 AAD指令 303 7.5.5 本节回顾 303 7.6 压缩十进制算术运算 304 7.6.1 DAA指令 305 7.6.2 DAS指令 306 7.6.3 本节回顾 306 7.7 本章小结 307 7.8 关键术语 308 7.8.1 术语 308 7.8.2 指令、操作符及伪指令 308 7.9 复习题和练习 308 7.9.1 简答题 308 7.9.2 算法题 310 7.10 编程练习 311 第8章 高级过程 314 8.1 引言 315 8.2 堆栈帧 315 8.2.1 堆栈参数 315 8.2.2 寄存器参数的缺点 316 8.2.3 访问堆栈参数 318 8.2.4 32位调用规约 321 8.2.5 局部变量 323 8.2.6 引用参数 324 8.2.7 LEA指令 326 8.2.8 ENTER和LEAVE指令 326 8.2.9 LOCAL伪指令 328 8.2.10 Microsoft x64调用规约 329 8.2.11 本节回顾 330 8.3 递归 331 8.3.1 递归求和 331 8.3.2 计算阶乘 333 8.3.3 本节回顾 339 8.4 INVOKE、ADDR、PROC及PROTO 340 8.4.1 INVOKE伪指令 340 8.4.2 ADDR操作符 341 8.4.3 PROC伪指令 342 8.4.4 PROTO伪指令 345 8.4.5 参数分类 348 8.4.6 示例:交换两个整数 349 8.4.7 调试提示 350 8.4.8 WriteStackFrame过程 351 8.4.9 本节回顾 352 8.5 创建多模块程序 352 8.5.1 隐藏和导出过程名 352 8.5.2 调用外部过程 353 8.5.3 跨模块使用变量和符号 354 8.5.4 示例:ArraySum程序 355 8.5.5 用Extern创建模块 356 8.5.6 用INVOKE和PROTO创建模块 359 8.5.7 本节回顾 362 8.6 参数的高级用法(可选主题) 363 8.6.1 受USES操作符影响的堆栈 363 8.6.2 向堆栈传递8位和16位参数 364 8.6.3 传递64位参数 366 8.6.4 非双字局部变量 366 8.7 Java字节码(可选主题) 369 8.7.1 Java虚拟机 369 8.7.2 指令集 370 8.7.3 Java反汇编示例 371 8.7.4 示例:条件分支 374 8.8 本章小结 376 8.9 关键术语 377 8.9.1 术语 377 8.9.2 指令、操作符及伪指令 377 8.10 复习题和练习 377 8.10.1 简答题 377 8.10.2 算法题 378 8.11 编程练习 378 第9章 字符串和数组 381 9.1 引言 381 9.2 字符串原语指令 382 9.2.1 MOVSB、MOVSW及MOVSD 383 9.2.2 CMPSB、CMPSW及CMPSD 384 9.2.3 SCASB、SCASW及SCASD 385 9.2.4 STOSB、STOSW及STOSD 385 9.2.5 LODSB、LODSW及LODSD 385 9.2.6 本节回顾 386 9.3 若干字符串过程 387 9.3.1 Str_compare过程 388 9.3.2 Str_length过程 389 9.3.3 Str_copy过程 389 9.3.4 Str_trim过程 390 9.3.5 Str_ucase过程 393 9.3.6 字符串库演示程序 393 9.3.7 Irvine64库中的字符串过程 395 9.3.8 本节回顾 398 9.4 二维数组 399 9.4.1 行列顺序 399 9.4.2 基址-变址操作数 399 9.4.3 基址-变址-位移操作数 401 9.4.4 64位模式下的基址-变址操作数 402 9.4.5 本节回顾 403 9.5 整数数组的查找和排序 404 9.5.1 冒泡排序 404 9.5.2 对半查找 406 9.5.3 本节回顾 412 9.6 Java字节码:字符串处理(可选主题) 413 9.7 本章小结 414 9.8 关键术语和指令 415 9.9 复习题和练习 415 9.9.1 简答题 415 9.9.2 算法题 416 9.10 编程练习 416 第10章 结构和宏 421 10.1 结构 421 10.1.1 定义结构 422 10.1.2 声明结构对象 424 10.1.3 引用结构对象 425 10.1.4 示例:显示系统时间 428 10.1.5 结构包含结构 430 10.1.6 示例:醉汉行走 430 10.1.7 声明和使用联合 434 10.1.8 本节回顾 436 10.2 宏 437 10.2.1 概述 437 10.2.2 定义宏 438 10.2.3 调用宏 439 10.2.4 其他宏特性 440 10.2.5 使用本书的宏库(仅32位模式) 444 10.2.6 示例程序:封装器 451 10.2.7 本节回顾 452 10.3 条件汇编伪指令 453 10.3.1 检查缺失的参数 454 10.3.2 默认的参数初始化值 455 10.3.3 布尔表达式 456 10.3.4 IF、ELSE及ENDIF伪指令 456 10.3.5 IFIDN和IFIDNI伪指令 457 10.3.6 示例:矩阵行求和 458 10.3.7 特殊操作符 461 10.3.8 宏函数 464 10.3.9 本节回顾 466 10.4 定义重复语句块 467 10.4.1 WHILE伪指令 467 10.4.2 REPEAT伪指令 468 10.4.3 FOR伪指令 468 10.4.4 FORC伪指令 469 10.4.5 示例:链表 470 10.4.6 本节回顾 471 10.5 本章小结 473 10.6 关键术语 474 10.6.1 术语 474 10.6.2 操作符及伪指令 474 10.7 复习题和练习 475 10.7.1 简答题 475 10.7.2 算法题 475 10.8 编程练习 477 第11章 MS-Windows编程 480 11.1 Win32控制台编程 480 11.1.1 背景信息 481 11.1.2 Win32控制台函数 485 11.1.3 显示消息框 487 11.1.4 控制台输入 490 11.1.5 控制台输出 496 11.1.6 读写文件 498 11.1.7 Irvine32库中的文件I/O 502 11.1.8 测试文件I/O过程 504 11.1.9 控制台窗口操作 507 11.1.10 控制光标 510 11.1.11 控制文本颜色 511 11.1.12 时间和日期函数 513 11.1.13 使用64位Windows API 517 11.1.14 本节回顾 518 11.2 编写图形化的Windows应用程序 519 11.2.1 必要的结构 519 11.2.2 MessageBox函数 521 11.2.3 WinMain过程 521 11.2.4 WinProc过程 522 11.2.5 ErrorHandler过程 523 11.2.6 程序清单 523 11.2.7 本节回顾 527 11.3 动态内存分配 528 11.3.1 HeapTest程序 531
展开全部

作者简介

基普·R. 欧文(Kip R. Irvine)拥有迈阿密大学计算机科学硕士、音乐艺术博士学位,现为佛罗里达国际大学高级讲师,教授计算机相关的课程。著有多本编程教材,被翻译成多国语言,涵盖的主题如汇编语言、C++、Visual Basic和COBOL。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航