80X86汇编语言程序设计].王元珍

所需积分/C币:50 2018-08-19 05:38:12 5.09MB PDF
收藏 收藏 2
举报

80X86汇编语言程序设计].王元珍,华中科技大学,2005,汇编语言
80X86汇编语言程序设计 由于作者水平有限,书中不妥或错误之处在所难免,殷切希望广大读者批评指正。 同时也欢迎读者,尤其是使用本书的教师和学生,共同探讨相关的教学内容和教学方法 等问题。 作者 2005年1月于华中科技大学(武汉) 内容简介 本书为教育部普通高等教育“十五”国家级规划教材, 本书以目前使用最为广泛的80X86机为例,详细介绍了使用宏汇编语言进行程 序设计的理论、方法和技巧。全书共分7章,主要内容包括:80X86宏汇编语言 程序设计的基本技术和模块化程序设计技术、输入/输出、中断异常和WIN32程序 设计,同时还介绍了在DOS和 Windows环境下调试、运行32位段与16位段汇编源 程序的方法,每章后面均附有丰富的习题。 本书内容新颖、重点突岀、例题习题丰富、语言精炼易慬。可供各类高等学校 计算机及非计算机有关专业作为教材,亦可供广大工程技术人员和其他读者自学、 参考。 录 第1章预备知识 1.1机器语言与汇编语言 (1) 1.1.1机器语言 1.1.2汇编语言 …(2) 1.3书中使用符号的说明… (3) 1.2ntel系列机简介 ……(4) 1.2.1 Intel80X86微处理器简介 …(5) 2.2 Intel80X86微处理器结构 (6) 2.380X86的3种工作方式……… ……………………………(9) 3主存储器和物理地址的形成 (10) 1.3.1主存储器 10) 堆栈 1.3.3物理地址的形成… (13) 1.4数据在计算机内的表示形式…… 20) 1.4.1数值数据在计算机内的表示形式…… (20) 1.4.2BCD码 ………………(22) 1.4.3字符数据在机内的表示形式 …(22) 1.5标志寄存器 (23) 1.5.1标志位 …(23) 1.5.2标志寄存器操作指令 (26) 1.6汇编源程序举例 (28) 习题 第2章寻址方式 (32) 2.1寄存器寻址 (32) 2.2寄存器间接寻址………………………………………… (33) 2.3变址寻址 (35) 2.4基址加变址寻址 (37) 2.5立即寻址 (38) 2.6直接寻址 …(39) 2.7寻址方式的有关问题………………… (41) 2.8寻址方式综合举例 (43) 习题二 …………(44) 80X86汇编语言程序设计 第3章宏汇编语言 (47) 3.1宏汇编语言中的表达式 (47) 3.1.1常量与数值表达式… (47) 3.1.2变量、标号与地址表达式 ………(49) 3.2常用的机器指令语句 · (56) 3.2.1数据传送指令 (57) 3.2.2算术运算指令 (62) 3.2.3位操作指令 · (68) 3.3伪指令语句 (76) 3.3.1处理器选择伪指令… (77) 3.3.2数据定义伪指令 (78) 3.3.3符号定义伪指令 (78) 3.3.4段定义伪指令……… (80) 3.3.5源程序结束伪指令 (83) 3.4常用的DOS系统功能调用 (84) 4.1概述 (84) 3.4.2常用的输入/输出系统功能调用 (85) 3.5MASM的功能… 88) 3.5.1MASM的功能 (88) 3.5.2汇编过程…………………………… (89) 3.5.3汇编列表文件 (91 3.5.4符号交叉列表文件 93) 习题三………………………………………… (94) 第4章程序设计的基本方法 (98) 4.1概述 (98) 4.2顺序程序设计 (100) 3分支程序设计… (102) 4.3.1转移指令 (102) 4.3.2分支程序设计举例 ………(108) 4.4循环程序设计 ……(113) 4.4.1循环程序的结构和控制方法 (113) 4.4.2单重循环程序设计 (116) 4.4.3多重循环程序设计………………………………………………(121) 4.5子程序设计 (128) 子程序的概念 (128) 4.5.2子程序的定义 ····,···.·.········.···.·······.·········.··.···· (129) 4.5.3子程序的调用与返回 ……(130) 月录 4.5.4子程序调用现场的保护方法 (133) 4.5.5主程序与子程序之间传递参数的方式… ……(134) 4.5.6子程序及其调用举例………………… (135) 4.5.7子程序的嵌套……… (140) 4.6程序设计中的注意事项 (143) 习题四 (145) 第5章程序设计的其他方法和技术 ……………………………(150) 5.1字符串操作…………………………………………… (150) 5.1.1串操作指令简介 (150) 5.1.2串操作指令……………………………………………… (152) 5.2宏功能程序设计 …(161) 5.2.1宏定义 (162) 5.2.2宏调用 (163) 5.2.3宏定义与宏调用中的参数 (164) 5.2.4重复汇编伪指令 (167) 5.2.5条件汇编伪指令 (169) 5.2.6宏库的使用 (171) 5.2.7宏指令与子程序的比较 (174) 5.3模块化程序设计 (175) 5.3.1组合方式… (176) 5.3.2通信方式 …(180) 5.3.3连接程序(LINK)的功能 (183) 5.3.4地址分配文件举例 (183) 5.4源程序综合举例 ……(184) 5.4.1模块程序设计中的注意事项 (184) 5.4.2模块程序设计举例… (187) 习题五 ……(206) 第6章输入/输出和WIN32编程…… (209) 6.1输人/输出指令和数据的传送方式 (209) 6.1.1输入/输出指令 ………………………………………(209) 6.1.2数据的传送方式 (212) 6.2中断与异常… (214) 6.2.1中断的概念…… (214) 6.2.2中断矢量表 (217) 6.2.3软中断及有关的中断指令… ………(219) 6.2.4中断处理程序的设计… …(220) 6.3浮点运算 ……(229) 80X86汇编语言程序设计 6.3.1浮点数据格式 6.3.2FPU中的寄存器… (231) 6.3.3浮点指令与程序设计 (234) 6.4WIN32编程 ……(238) 6.4.1WIN32编程基础 (238) 6.4.2WIN32程序的结构 …(249) 6.4.3 WindOws api函数简介 ………………(254) 6.4.4编程实例 (264) 习题六 …………………………(279) 第7章上机操作· …(281) 7.1在DOS环境下运行汇编源程序的方法 (281) 7.1.1在DOS环境下运行汇编源程序的必备软件 (281) 7.1.2DOS环境下运行汇编源程序的流程 ………(281) 7.1.3DOS环境下运行汇编源程序的命令(MASM6.0及以下版本)…………………(282) 7.2多模块程序的运行及子程序库的使用 …(285) 7.2.1多模块程序的运行 (285) 7.2.2子程序库的使用 …………(286) 7.3在 Window s环境下运行汇编源程序的方法…………………………………(288) 7.3.1在 Windows环境下运行32位汇编源程序的必备软件………………………(288) 7.3.2在 Windows环境下运行汇编源程序的特点… …(288) 7.3.3在 Windows环境下32位汇编源程序的运行命令…… (289) 7.4调试程序 Turbo debugger的使用 (293) 7.4.1TD的启动和退出 (294) 7.4.2利用TD调试汇编语言程序 …(295) 7.4.3调试举例… (299) 附录 (303) 附录ⅠASCI码字符表 …………………………(303) 附录Ⅱ80X86指令系统简表 …(304) 附录Ⅲ伪指令表 …(318) 附录ⅣDOS的软中断与系统功能调用……………………………… (326) 附录Ⅴ常用BIOS子程序的功能及其调用参数… …(330) 附录Ⅵ汇编连接程序错误信息 (334) 第1章 预蚤知识 汇编语言是一种面向机器的、能够充分利用计算机硬件特性的低级语言,它随机器结 构的不同而不同。因此,要学会一种汇编语言,就必须首先了解与该机器有关的硬件结构。 本章将从汇编语言程序设计的角度出发,介绍有关的预备知识,如:什么是汇编语言、 Intel 80X86微处理器中的寄存器组、主存储器的编址方式及物理地址的形成方式、数和符号在计 算机中的表示方法,并以一个源程序为实例介绍汇编源程序的基本结构和格式,这些都是 学习后继各章的必备知识。 1.1机器语言与汇编语言 1.1.1机器语言 计算机的工作必须接受人的操纵和控制,为了让计算机能按人的意愿工作,就必须与 计算机之间交流信息,这个交流信息的工具就是计算机语言。目前所使用的计算机语言分 3类:机器语言、汇编语言和高级语言。高级语言接近于自然语言,易学,易记,便于阅读, 容易掌握,使用方便,通用性强且不依赖于具体的计算机。但是,计算机并不能识别高级 语言,它只能识别在设计该机器时事先规定好的机器指令。 机器指令即为指挥计算机完成某一基本操作的命令。机器指令的一般形式为 操作码 地址码 操作码和地址码均是由0和1组成的二进制代码,可见每一条机器指令都是用一组 进制代码来表示的。操作码指出了操作的种类,如加、减、传送、移位等;地址码指出了参与 运算的操作数和运算结果存放的位置。 例如,将偏移地址为1000H的字存储单元中的内容加3000H,再送回到原存储单元中 去,如果用 Intel80X86的机器指令来完成该操作,则相应的机器指令为 10000001 81H 00000110 对应的十六 06H 00000000 进制形式 00H 00010000 10H 00000000 00H 00110000 30H 7 0 80X86汇编语言程序设计 其中,第1、2行中的两个8位二进制数是操作码,表示要进行“加”操作,还指明了以 何种方式取得两个加数;第34行中的两个8位二进制数指出了第一个加数所存放的偏移 地址是1000H,因为结果也存放在该偏移地址中,所以第一个加数称目的操作数;第5、6行 中的两个8位二进制数指出了第二个加数(称源操作数)是3000H。 机器指令也常常被称为硬指令,它是面向机器的,即每台计算机都规定了自己所特有 的、一定数量的基本指令,这批指令的全体即为计算机的指令系统;这种机器指令的集合就 是机器语言。用机器语言编写的程序称为机器语言程序。 1.1.2汇编语言 由于机器指令是用二进制表示的,所以编写起程序来相当麻烦,写出的程序也难以阅 读和调试。为了克服这些缺点,人们就想出了用助记符表示机器指令的操作码;用变量代 替操作数的存放地址;在指令前冠以标号,用来代表该指令的存放地址等。这种用符号书 写的、其主要操作与机器指令基本上一一对应的、并遵循一定语法规则的计算机语言就是汇 编语言。用汇编语言编写的程序称为汇编源程序。由此可见,汇编语言是面向机器的语 言。本教材中所介绍的是 Intel80X86宏汇编语言 例如,对于前面的例子,可用宏汇编语言书写为 ADD WORD PTR DS 1000H, 3000H 其中,ADD为加指令的助记符,代表了机器指令中的操作码;DS:[1000H]表示在当前数据 段中,偏移地址为1000H单元中的内容是目的操作数; WORD PTR说明了这个目的操作 数是16位二进制数,而源操作数是3000H,相加的结果送入目的操作数所在的单元中。 由于汇编语言是为了方便用户而设计的一种符号语言,因此,用它编写出的源程序并 不能直接被计算机识别,必须将它翻译成由机器指令组成的程序后,计算机才能识别并执 行。这种由源程序经过翻译转换,生成的机器语言程序也称为目标程序。目标程序中的二 进制代码(即机器指令)称为目标代码。这个翻译工作一般都由计算机自己去完成,但人们 事先必须将翻译方法编写成一个语言加工程序作为系统软件的一部分,在需要时让计算机 执行这个程序才可完成对某一汇编源程序的翻译工作 这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。汇编程序进行翻译 的过程叫做汇编。 在这里,汇编程序相当于一个翻译器,它加工的对象是汇编源程序,而加工的结果是目 标程序。它们三者之间的关系如图1.1所示 为了能让汇编程序正确地完成翻译工作, 汇编程序 必须告诉汇编程序,源程序应从什么位置开始 安放,汇编到什么位置结束,数据放在什么位 置,数据的类型是什么,留多少内存单元作临 汇编源程序 机器语言程序 (目标程序) 时存储区等。这就要求源程序中应该有一套 告诉汇编程序如何进行汇编工作的命令,这种图1.1汇编程序与汇编源程序、目标程序的关系

...展开详情
试读 127P 80X86汇编语言程序设计].王元珍
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    上传资源赚积分,得勋章
    最新推荐
    80X86汇编语言程序设计].王元珍 50积分/C币 立即下载
    1/127
    80X86汇编语言程序设计].王元珍第1页
    80X86汇编语言程序设计].王元珍第2页
    80X86汇编语言程序设计].王元珍第3页
    80X86汇编语言程序设计].王元珍第4页
    80X86汇编语言程序设计].王元珍第5页
    80X86汇编语言程序设计].王元珍第6页
    80X86汇编语言程序设计].王元珍第7页
    80X86汇编语言程序设计].王元珍第8页
    80X86汇编语言程序设计].王元珍第9页
    80X86汇编语言程序设计].王元珍第10页
    80X86汇编语言程序设计].王元珍第11页
    80X86汇编语言程序设计].王元珍第12页
    80X86汇编语言程序设计].王元珍第13页
    80X86汇编语言程序设计].王元珍第14页
    80X86汇编语言程序设计].王元珍第15页
    80X86汇编语言程序设计].王元珍第16页
    80X86汇编语言程序设计].王元珍第17页
    80X86汇编语言程序设计].王元珍第18页
    80X86汇编语言程序设计].王元珍第19页
    80X86汇编语言程序设计].王元珍第20页

    试读已结束,剩余107页未读...

    50积分/C币 立即下载 >