




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计 考核方式 期末考试 60 平时成绩 40 作业 10 上机 30 作业 40 程序一词来自生活 通常指完成某些事务的一种既定方式和过程在日常生活中 可以将程序看成对一系列动作的执行过程的描述 什么是程序 介绍你从住处到学校上课的过程 银行 1 带上存折 银行卡去银行 3 将存折或储蓄卡递给银行职员并告知取款数额 2 取号排队 5 银行职员办理取款事宜 生活中的程序 6 拿到钱并离开银行 4 输入密码 什么是指令 1 做口述笔记 2 键入信函的内容 3 发送传真 movax yaddax xmovsum ax 指令被逐条执行 程序员 老板 秘书 计算机程序 为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合 要执行的一组指令 程序 计算机中的程序 编写程序的工具就是计算机语言 汇编就是多种语言中的一种 汇编语言是什么 汇编语言能做什么 汇编语言为什么学 汇编语言怎么学 初始汇编语言 汇编语言 机器语言 高级语言 FORTRANBASICPASCALC C JAVAScript xword yword sumword movx 100movy 200movax yaddax xmovsum ax 66C70500204000640066C70502204000C80066A1022040006603050020400066A304204000 intx y sum x 100 y 200 sum x y 机器语言 汇编语言 C C 语言 3种类型语言之间的直观比较 机器语言 机器语言真正唯一能让CPU直接识别的语言 它是用二进制编码表示的机器指令的集合及一组使用机器指令的规则 例1 用8086机器语言实现简单加法 2200H 2201H 结果存放在 2202H 中的程序片段 用16进制表示 A00022 将 2200H 中的数送到AL中02060122 将 AL 2201H 和数送到AL中A20222 将 AL 送回 2202H 中 机器语言 优缺点 优点 目标程序小 执行速度快 效率高 缺点 表达的意义不直观 编写 阅读 调试较困难 汇编语言 汇编语言 是一种符号语言 与机器语言一一对应 使用助记符表示相应的操作 并遵循一定的语法规则 与机器语言有类似的优缺点 比机器语言更容易所理解 A0002202060122A20222 MOVAL 2200H ADDAL 2201H MOV 2202H AL 高级语言 高级语言 面向人的语言 有多种类型 优缺点 优点 便于阅读 易学易用 不涉及硬件 具有通用性 缺点 目标代码冗长 占用内存多 从而执行时间长 效率不高 不能对某些硬件进行操作 高级语言与汇编语言开销对比 下面是两个小例子 例2是用高级语言VC 编写的 例3是用汇编语言编写的 它们完成相同的功能 例2 include stdio h main inta b c a 1 b 2 c a b printf c d n c 编译后的目标文件达到3 59KB 高级语言与汇编语言开销对比 datasegmentadb bdb cdb stringdb c dataendscodesegmentmainprocfarassumecs code ds data es datastart pushdssubax axpushaxmovax datamovds axmoves ax mova 1movb 2moval aaddal bmovc alleadx stringmovah 09int21haddc 30hmovdl cmovah 2int21hmovdl 0ahint21hmovdl 0dhint21hretmainendpcodeendsendstart 汇编后的目标文件只有208字节 例3 用高级语言和汇编语言书写的程序均不能被CPU直接识别并执行 这些程序通称源程序 因此 所有源程序都必须翻译成目标程序后才能被CPU执行 高级语言程序 汇编语言程序和机器语言程序的关系 高级语言源程序 编译解释 汇编语言源程序 汇编 目标程序 相应编译器或解释程序 汇编程序 汇编语言相对于高级语言的特点 汇编语言是面向机器的语言 它的指令语句与机器指令一一对应 是机器指令的符号表示 因此 对于不同类型的cpu 要求使用不同的汇编语言和汇编程序 汇编语言保持了机器语言的特点 具有直接和简捷的特点 汇编语言可有效地访问 控制计算机的各种硬件设备 如磁盘 存储器 cpu I O端口等 汇编语言程序目标代码简短 占用内存少 执行速度快 是高效的程序设计语言 汇编语言程序编写繁琐 汇编语言程序调试困难 单条指令功能有限通用集成编程环境少 汇编语言能做什么 应用 对软件的执行时间或存储容量有较高要求的场合 例如 实时控制系统 智能化仪器仪表及高性能软件 需要提高大型软件性能的场合 例如 某些快速处理 位处理等高效程序用汇编语言编写的与硬件关系密切 要直接有效控制硬件的场合 其它不适合高级语言的场合 经常和高级语言配合使用 是否采用汇编语言编程 主要权衡软件的开发时间及软件的质量 适度地追求 时空 效率 为什么学习汇编语言 评论语言优劣 如同争论兵器高下 高级语言 长兵器 汇编语言 威力强大却难免滞重 长于大型应用 可谓 一寸长 一寸强 轻巧灵活却难免有风险 长于底层应用 可谓 一寸短 一寸险 西门吹雪的一剑西来 那是c语言 李寻欢的小李飞刀 那是汇编语言 陆小凤的灵犀一指 那是机器语言 短兵器 汇编语言指令是用一些具有相应含义的助记符来表达的 是对机器指令的一种直观对应表达 汇编语言指令与机器密切相关 不同的机器有不同的指令系统 比如 8086vs80386 使得移植性差 正是因为汇编语言有 机器相关 特性 所以程序员写汇编程序时候 可以充分发挥自己的聪明才智 对机器的各种资源进行合理的安排 使他们始终处于最佳的使用状态 最终效果是 程序的执行代码短 执行速度快 现在高级语言编译程序在进行寄存器分配和目标代码生成时 都有一定程度的 优化策略 但是这种策略要适应各种不同情况 所以 高级语言的这种优化只能在宏观上 不能在微观上 反观汇编 程序员几乎就是直接在写执行代码 故此 可以在具体细节上进行优化 这是汇编高效率的直接原因 汇编语言怎么学好 汇编语言怎么学好 汇编语言是一种面向机器的语言 其汇编指令与机器指令基本上一一对应 所以汇编语言也同机器指令一样具有功能单一 具体的特点 要想完成某件工作 比如计算A B C 就必须安排CPU的每步工作 比如 先计算A B 再将C加到前者的结果上 故此 由于汇编语言要安排运算的每一个细节 这就使得编写汇编语言程序比较繁琐 复杂 一个简单的计算公式 也要用一系列汇编指令一步一步来实现 我们可以看出 编程者是个事无巨细的导演 要操心每一步 对每一个演员 数据 的每个动作进行指导 指令 而不能象高级语言那样当甩手掌柜 事事操心 操心事事 对汇编程序调试的复杂性要有心理准备 在通常情况下 调试汇编语言程序要比调试高级语言困难 1 汇编语言指令涉及到机器资源的细节 在调试过程中 要清楚每个资源的变化情况 2 在编写汇编语言程序时 为了提高资源的利用率 可以使用各种实现技巧 而这些技巧完全有可能破坏程序的可读性 于是 在调试过程中 除了要知道每条指令的执行功能 还要清楚它在整个目标实现过程中的作用 3 高级语言几乎不显示的使用 转移指令 但汇编语言要用到大量的各类转移指令 这些跳转指令大大增加了调试的难度 如果在汇编语言中不使用 转移指令 那么 汇编程序就变成了单调的顺序程序 这很不现实 汇编语言怎么学好 对初学者而言 汇编的命令太复杂 往往学习很长时也写不出一个漂漂亮亮的程序 以至妨碍了我们学习汇编语言的热情 不少人就此放弃 要有持之以恒的必胜信心 为了使学习汇编语言有个好的开始 你必须要先排除那些华丽复杂的命令 将注意力集中在一些重要的指令上 比如 CMP LOOP MOV JMP 汇编语言怎么学好 最重要的一点就是 实践出真知 多写 多练 多读 多分析要有自信心 你们是最棒的 学习方法 兴趣是最好的老师 Attitudeiseverything 实践是检验真理的唯一标准 专注 扎实 细致 沉得住气 坚持 学习目标 了解以Intel系列微处理器为基础的PC机的基本结构 编程结构 掌握Intel系列微处理器的指令系统及寻址方式熟悉汇编程序的上机操作环境会读 会编 会调试汇编程序 课程要求 课堂上注意听讲 重要的是理解部分补充例题等内容需要笔记课堂外一定要看书复习或预习 独立 认真完成作业充分利用上机时间 多编程练习 汇编语言预备知识复习 我们的惯用思维是十进制 但计算机的世界是二进制 无论是高级语言还是汇编语言最终都要转换为机器语言 即二进制形式 本节我们要复习 1 进位计数制2 不同基数的数之间的转换 特别是二进制十进制 二进制十六进制之间的转换 3 不同基数的数的运算4 机器数的表示 重点掌握有符号数的补码表示 数制 十进制 基数为10 逢十进一 权为10k12 34 1 101 2 100 3 10 1 4 10 2二进制 基数为2 逢二进一 权为2k 1101 2 1 23 1 22 1 20 13 10十六进制 基数为16 逢十六进一 权为16k 9187 16 9 163 1 162 8 161 7 160八进制 基数为8 逢八进一 权为8k 147 8 1 82 4 81 7 80 例 若要写一个八进制数197 对否 例 同样的一串数字101 若表示的数制不一样 其含义也不一样 如下 十进制数101D 二进制数101B 八进制数101O 那么如何区分它们呢现对常用进制数归纳总结如下 数制 在计算机中为了区分不同数制的数据 采用以下方法 进制转换 十进制数126转换为二进制和十六进制 126 63 31 2 2 0 2 15 7 3 1 0 2 1 2 2 2 1 1 1 1 126D 1111110B 1 126 7 0 16 E 16 7 126D 7Eh 余 十进制小数0 8125转换为二进制和十六进制 0 8125 2 1 6250 1 2 1 250 1 2 0 5 0 2 1 0 1 0 8125D 0 1101B 0 8125 16 13 0000 D 0 8125D 0 DH 0 0 整 二进制数和八进制数相互转换 1011101001 110101B 1351 65O 123 75O B 1010011 111101B 001 101 011 1 110 101 00 001 010 011 111 101 算数运算 二进制加法规则乘法规则0 0 00 0 00 1 10 1 01 0 01 0 01 1 0 进位1 1 1 1十六进制05C335 3D25 05C3 4 2 E 8 H 3 7 6 2 H 1 1 D 2 C 18D 逻辑运算 按位操作 与 运算 AND ABA B000010100111 或 运算 OR ABA B000011101111 例 X 00FFHY 5555H 求Z XY X 0000000011111111BY 0101010101010101BZ 0101010110101010B Z 55AAH 数 机器数 的表示 数 机器数 的表示 计算机中的数用二进制表示 分为无符号数和有符号数 有符号数的符号也用二进制位表示 例如 76543210 数值位 76543210 数值位 8位二进制无符号数 符号位 符号位有符号数的最高位符号位 0表示正数符号位 1表示负数 8位二进制无符号数 机器数的表示方法 1 原码 把一个数的最高位定义为符号位 用0表示正 用1表示负 其余位表示真值的绝对值 当机器字长n 8时 0 原 00000000B 0 原 10000000B 8 原 00001000B 8 原 10001000B 127 原 01111111B 127 原 11111111B 注 1 8位二进制原码表示数的范围为 127 127 16位二进制原码表示数的范围为 32767 327672 正数的原码是它本身 3 数值0的原码有两种形式 0 原码 00000000 0 原码 10000000 引入反码和补码 为了实现以上的功能 我们引入反码和补码的概念 2 反码 正数的反码与其原码形式相同 负数的反码是对其原码符号位不变 仍为1 其余各位 按位取反 得到的数 例如 当机器字长n 8时 127 原 01111111B 127 反 01111111B 127 原 11111111B 127 反 10000000B当机器字长n 16时 8 原 0000000000001000B 8 反 1111111111110111B 反码 1 8位二进制反码表示数的范围为 127 1272 16位二进制反码表示数的范围为 32767 327673 正数的反码与其原码相同4 0 的反码有两种表示法 00000000表示 0 11111111表示 0 引入补码 二进制 原码 加法二进制 反码 加法10000010 2 原11111101 2 反 00000010 3 原 00000011 3 反10000100 4 原00000010 2 反 日常生活我们用十进制算 计算机用二进制原码算 计算机用二进制反码算 补码 使符号位能与有效值部分一起参加运算 从而简化运算规则使减法运算转换为加法运算 进一步简化计算机中运算器的线路设计为了统一正0和负0 引入补码的原因 正数的补码与其原码 反码相同例如 当机器字长n 8时 8 补 8 反 8 原 00001000B 127 补 127 反 127 原 01111111B当机器字长n 16时 8 补 8 反 8 原 0000000000001000B 127 补 127 反 127 原 0000000001111111B 有符号数的补码表示 正数的补码形式绝对值的二进制数形式 符号位 0负数的补码形式2n 绝对值补码 n为二进制的位数 补码的物理意义 补码物理意义 考虑8位二进制数 其表示范围为0 255 即256 0 若将其想象为一个环 以0为基点 向顺时针方向移246个单位 则得246 然而 若按逆时针方向移动 则该位置就是 10 即 10 0F6H 246因此 在8位二进制表示下 对于负数x 128 1 来说 存在下列等式 x 256 x 补码实例 在日常生活中 补码的例子是很多的 如时钟的校对就是其中一例 设标准时间是6点整 而时针现在指向10点整 若要将时针拨到6点整 可有两种拨法 1 10 4 6 采用倒拨的办法实现 将时针倒拨4小时 2 10 8 6 采用顺拨的办法实现 将时针顺拨8小时 时针指向6点整 这儿倒拨与顺拨的效果是相同的 也即是互补的 在时钟以12为模的条件下 4与 8是互补的 例 机器字长8位 46 补码 46 补码 001011101101000111010010 D2H 46 补码 0010111011010010 0D2H 46 补码 0D2H 按位求反 末位加一 按位求反 最右的1 快速得到负数补码的两种方法 先得出其绝对值对应的二进制形式 然后对该二进制数按位变反 最后再将变反后的结果加1 先得出其绝对值对应的二进制形式 然后将该二进制数最右边为1的位不变 其所有左边位按位变反 补码实例 0 补码 000000001111111100000000 0 补码 0的表示惟一 按位求反 末位加一 求 1105的补码表示 当n 16时 1105 1105 0000010001010001B按位求反后得 1111101110101110B最低位加1后 1111101110101111B所以 105 补 105 反 1 FBAEH 1 FBAFH 求 1105的补码表示 当n 32时 1105 1105 00000000000000000000010001010001B按位求反后得 11111111111111111111101110101110B最低位加1后得 11111111111111111111101110101111B所以 105 补 105 反 1 FFFFFBAEH 1 FFFFFBAFH 反过来 求补码81A4H的真值 补码81A4H的最高位 符号位 为1 补码81A4H是负数的补码 对81A4求补 1 81A4H 1000000110100100b2 按位求反得 1111111001011011b3 加1后得 1111111001011100b 32348所以 补码81A4H对应的真值是 32348 反过来 求补码71A4H的真值 补码71A4H的最高位 符号位 为0 补码71A4H是正数的补码 即原码 所以 补码71A4H对应的真值是29092 1 8位二进制补码表示数的范围为 128 1272 16位二进制补码表示数的范围为 32768 327673 0的补码表示是唯一的 都为00000000 补码的加减运算 符号位和数值位一起参加运算 并且自动获得结果 包括符号位与数值位 补码的符号位相加后 如果有进位出现 要把这个进位舍去 自然丢失 补码运算 其运算结果亦为补码 在转换为真值时 若符号位为0 数位不变 若符号位为1 应将结果求补才是其真值 补码加法 1 补码加法补码加法的运算规则为 即 两数补码的和等于两数和的补码 例已知 51 补 00110011B 66 补 01000010B 51 补 11001101B 66 补 10111110B求 66 补 51 补 66 补 51 补 66 补 51 补 解 日常生活我们用十进制算 计算机用二进制补码算 2 补码减法补码减法的运算规则为 例 已知 51 补 00110011B 66 补 01000010B 51 补 11001101B 66 补 10111110B求 66 补 51 补 66 补 51 补 解 66 补 51 补 66 补 51 补 66 补 51 补 66 补 51 补 可以看出 无论被减数 减数是正数还是负数 上述补码减法的规则都是正确的 同样 由最高位向更高位的进位会自动丢失而不影响运算结果的正确性 补码的加法和减法 求补运算 对一个二进制数按位求反 末位加一求补求补 X 补码 X 补码 X 补码加法规则 X Y 补码 X 补码 Y 补码减法规则 X Y 补码 X 补码 Y 补码补码减法可转换为补码加法 64 46 18 01000000110100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工廉洁自律课件
- 员工岗前培训安全知识课件
- 机车行车安全课件
- 《公共科目》军队文职考试试题及答案指导2025年
- 培训计划与课程设计工具包
- 难点解析-公务员考试《常识》同步练习试卷(解析版)
- 节能环保施工技术方案
- 绿色厨电消费者偏好-洞察及研究
- 代码生成自动化-洞察及研究
- 化感物质代谢调控-洞察及研究
- 太阳能路灯采购安装方案投标文件(技术方案)
- 2025年离婚协议书版模板
- 采购制度及流程
- ISO13485质量体系培训讲义
- 2025年度化妆品品牌形象设计与传播合同
- 中国缓冲包装材料行业市场全景监测及投资前景展望报告
- 2025江苏南通市启东市不动产登记服务中心编外劳务人员招聘4人历年高频重点提升(共500题)附带答案详解
- 证券行业风险管理信息系统建设方案
- 维护国家安全构建平安校园
- DB3701T 15-2020 基层网格化服务管理规范
- DB31-T 1308-2021 粉尘爆炸重大事故隐患治理工程验收规范
评论
0/150
提交评论