怎样学习汇编.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何学习汇编 2009-5-19 9:13:51  编辑:福建精才网 ?1. 学汇编的方法 ?应该具备的条件:--微机(80X86型微机) ?--MSDOS操作系统或Win95/98的 MS-DOS方式 ?-- 编程工具: 文本编辑器: 如 MS-DOS 的 EDIT 汇编器: 如 MASM.EXE 5.0 版本 连接器: 如 LINK.EXE 二进制转换: 如 EXE2BIN.EXE ?学习汇编语言实践性很强。只有经过编写大量代码才能熟练掌握。此外阅读源程序也很有帮助。 ? 由于汇编语言是与 CPU 芯片紧密相关的,所以必须针对某一机型,清楚地了解 CPU 芯片及其外围 ? 设备的硬件资料。只有这样,编写代码才能得心应手。所以有两类资料需要你去积累:一类是硬件 ? 方面的资料和系统软件方面的资料,另一类是算法方面的经验。其他比如汇编工具等则没有多少东 ? 西需要深究。 ? 第一类资料,比如 各种 BIOS 中断,MS-DOS 功能调用,Windows API 库,这些可以归为系统 ? 软件方面;而 CPU 结构,端口定义,中断定义,总线方式等可归为硬件资料。 ? 第二类资料,比如排序算法,字符串查找算法等。像搜索引擎所采用的算法,能在最短的时间 ? 内,找出符合条件的信息,而且还带有智能性。这种查找方案包含了很科学的算法。它们都是抽象 ? 的东西。 ? 总之,学习汇编,你应该目的明确,而且目标机器明确,要解决的问题也明确。这样才能有 ? 的放矢,最终有所收获。 ?2 汇编语言基础 基本指令 ?我们学习的对象机器是 PC 机,CPU 是 Intel80x86,所以先熟悉 CPU? 的大致结构。 ?其实经常用到的是 CPU 的各个寄存器,其他比如引脚,内部结构等,开始时先不去管它。 ?由于Intel80x86 各版本 CPU 新的与旧的保持兼容,旧的 CPU 下设计的程序无需任何修改就能在 ?新的CPU 下运行。Intel 8086/8088 的 所有寄存器在后来的 新版本 CPU 中都保持。它们也是最 ?基本的 CPU 寄存器。 所以主要学习 Intel 8086 CPU 的寄存器: ? 加法器 AX (AH/AL)乘法,除法,I/O, 快速的算术运算 ? 基址寄存器BX (BH/BL) 基址指针 (数据段) ? 计数器CX (CH/CL) 循环,重复或位移的计数器 ? 数据寄存器DX (DH/DL) 乘法,除法,I/O ? 源索引SI?? 源串和索引指针 ? 目标索引DI?? 目标串和索引指针 ? 基址指针BP?? 栈的基址指针 ? 栈指针SP?? 栈的当前位置指针 ? 标志 CPU 标志 ? 指令指针IP?? 当前指令的内存位置 ? 代码段CS?? 程序代码段值 ? 数据段DS?? 程序数据段值 ? 栈段SS?? 栈操作的段值 ? 附加段ES?? 程序附加数据段的段值 ? 其中 CPU 标志寄存器各位的含义如下: ?FLAG: (相应的 BIT 为 1 时的含义) ?? CF进位位向目标操作数进位或借位 ?? PF奇偶校验位? 低字节校验结果为偶校验 ?? AF辅助进位标志低 4 bits 的进位或借位标志 ?? ZF零标志结果为零 ?? SF负数标志结果为负数 ?? TF单步标志(CPU)转为单步状态 ?? IF中断标志中断响应打开 (清除时关闭) ?? DF方向? 字串操作默认向下(down rather than up) ?? OF溢出? 结果过大或过小(for destination) ?? 汇编语言指令主要就是对上述各个寄存器的操作。下面这段代码是一个完整的 COM 型可执行 ?? 程序文件的代码,经过编译,连接和转换后,能直接执行,结果是在彩色背景下显示一些字符。 ?? 编译后只有204 Bytes。 ? ?? (你需要把这段代码完整地复制下来并另存为一个以 ASM为扩展名的文件,例如? mypro1.asm。 ?? 然后对它进行编译连结和转换,就生成一个名为 mypro1.COM 的可执行文件。你只要在 DOS 命令行 ?? 敲入 mypro1 加回车就能看到它的执行结果。关于如何编译连结等问题以后再说。你先可以在汇编 ?? 工作室主页上下载简装工具,使用其中的 TOCOM.BAT [filename] 批处理即可顺利生成COM文件。) ? ?? 在这个例子中使用了几类指令: mov 寄存器,立即数;数据传输类 mov 内存,寄存器? ;数据传输类 push 寄存器 ;堆栈操作: 入栈 pop 寄存器? ;堆栈操作: 出栈 int 10H ;10H 号 中断 (视频) int 21H ;21H 号 中断 (功能调用) ?? 除了这些指令外,还看到: assume? ;假定 offset? ;求偏量 OR

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档