《微机原理与应用》PPT课件.ppt

上传人:san****019 文档编号:20738961 上传时间:2021-04-17 格式:PPT 页数:46 大小:464.10KB
返回 下载 相关 举报
《微机原理与应用》PPT课件.ppt_第1页
第1页 / 共46页
《微机原理与应用》PPT课件.ppt_第2页
第2页 / 共46页
《微机原理与应用》PPT课件.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
怎么把程序和数 据存入计算机? 就像把饼干放进 盒子里面么? 通过汇编软件经 过汇编链接形成 可执行文件。 汇编语言程序的上机处理过程 主要的汇编程序: MASM, TASM 汇编语言 源程序 (文本文档) 汇编软件汇编 MASM 机器语言 目标文件 ( .obj) 连接软件 link 机器语言 可执行文件 (exe,com) 执行程序 汇编语言程序的开发过程 3 编 辑 文本编辑器,如 EDIT.COM 源程序:文件名 .asm 汇 编 汇编程序,如 ML.EXE 连 接 连接程序,如 LINK.EXE 调 试 调试程序,如 CodeView 错误 错误 错误 错误 目标模块:文件名 .obj 可执行文件:文件名 .exe 应用程序 第 3章 汇编语言基础 3.1 源程序结构 3.1.1 语句格式 3.1.2 程序格式 3.1.3 开发方法 3.2 数据表示 3.2.1 数制 3.2.2 编码 3.2.3 常量表达 3.3 变量应用 3.3.1 变量定义 3.2.2 变量属性 语句格式 程序由语句组成 一个语句常占一行 一个语句不超过 132个字符, 4个部分 执行性语句 : 表达处理器指令(硬指令) 标号 : 硬指令助记符 操作数 ,操作数 ;注释 例: first: mov ah, 9 ;使得 AH=9 说明性语句 : 表达伪指令,控制汇编方式 名字 伪指令助记符 参数 ,参数 ,; 注释 例: msg db Hello, Assembly !,13,10, $ 标号与名字 标号: 执行性语句中 冒号分隔 反映处理器指令在主存中的逻辑地址 名字: 说明性语句中 空格或制表符分隔 表示变量名、逻辑段名、子程序名等 反映变量、逻辑段和子程序等的逻辑地址 标号和名字是用户自定义的标识符 标识符( Identifier) 最多由 31个字母、数字及规定的特殊符号(如 _、 $、 ?、 )组成, 不能以数字开头 一个源程序中,用户定义的每个标识符 必须唯一 不能是 汇编程序采用的 保留字 保留字( Reserved Word)是编程语言本身需要使 用的各种具有特定含义的标识符、也称为关键字 硬指令助记符 MOV 伪指令助记符 DB 操作符 OFFSET 寄存器名 EAX 预定义符号 data 取名原则类似高级语言 但不区别大小写字母 硬指令 助记符:帮助记忆指令功能的符号 硬指令助记符对应处理器指令,表示一种操作 数据传送指令 mov ah,9 ;使得 AH 9 助记符: MOV(取自 Move) 功能:将源操作数传送至目的操作数 将数字 9传送到 AH寄存器中的指令 伪指令 伪指令助记符对应指示符,表达一个汇编命令 字节变量定义伪指令 助记符: DB(取自 Define Byte) 功能:在主存中占用若干的存储空间,用于保存变量 值,该变量以字节为单位存取 变量名 MSG包含有段地址和偏移地址 操作符 OFFSET获得偏移地址 mov dx, offset msg ;DX获得 msg的偏移地址 操作符 SEG获得段地址 mov dx, seg msg ;DX获得 msg的段地址 操作数与参数 处理器指令的操作数:表示参与操作的对象 一个具体的常量 保存在寄存器的数据 保存在存储器中的变量 逗号前常是目的操作数,逗号后的常是源操作数 伪指令的参数 : 常量、变量名、表达式等 可以有多个,参数之间用逗号分隔 注释与分隔符 语句中分号后的内容是注释 对指令或程序进行说明 汇编程序不对它们做任何处理 注释利于以后阅读,建议养成书写注释的良好习惯 语句的 4个组成部分要用分隔符分开 标号后的 冒号 注释前的 分号 操作数间和参数间的 逗号 分隔其他部分通常采用一个或多个 空格 或 制表符 注释使用英文或中文均可 分隔符都是英文标点 例题 3-1信息显示程序 在数据段给出这个字符串形式的信息: ;数据段 msg db Hello, Assembly !,13,10,$ ;定义要显示的字符串 在代码段编写显示字符串的程序: ;代码段 mov dx,offset msg ;指定字符串在数据段的偏移地址 mov ah,9 int 21h ;利用功能调用显示信息 简化段定义源程序格式 ;example.asm .model small ;定义程序的存储模式 .486 ;说明使用的 80 x86微处理器指令 .stack ;定义堆栈段 .data ;定义数据段 ;数据定义(数据待填) .code ;定义代码段 .startup ;程序执行起始 ;主程序(指令待填) .exit ;程序执行结束,返回 DOS ;子程序(指令待填) end ;汇编结束 存储模式( Memory Model) 存储模式决定一个程序的规模 简化段定义源程序格式中,必须有 .MODEL语句 .MODEL 存储模式 .MODEL语句确定了程序采用的存储模式 一般的小型程序可以选用 SMALL模式 大型程序选择 LARGE模式 TINY模式创建 COM程序,其他模式产生 EXE程序 FLAT模式用于 32位程序中,不能在 DOS环境执行 COM程序只有一个逻辑段(不超过 64KB) 逻辑段定义 堆栈段定义伪指令 .STACK创建一个堆栈段 段名: STACK,程序中可用 STACK表示 默认是 1KB( 1024 400H字节)空间 数据段定义伪指令 .DATA创建一个数据段 段名: DATA,程序中可用 DATA表示 代码段定义伪指令 .CODE创建一个代码段 默认段名: TEXT,程序中可用 CODE表示 处理器选择伪指令 缺省情况只汇编 16位 8086指令集 利用 32位 寄存器完成 32位 操作,必须加 上 .386及以上处理器的选择伪指令 留心 .386及以后的处理器选择伪指令的位置 在存储模式 MODEL指令之后,默认采用 16位段 在存储模式 MODEL指令之前,默认采用 32位段 简化段定义源程序格式 ;example.asm .model small ;定义程序的存储模式 .486 ;说明使用的 80 x86微处理器指令 .stack ;定义堆栈段 .data ;定义数据段 ;数据定义(数据待填) .code ;定义代码段 .startup ;程序执行起始 ;主程序(指令待填) .exit ;程序执行结束,返回 DOS ;子程序(指令待填) end ;汇编结束 .startup替换为: start: mov ax,data mov ds,ax .exit替换为 mov ah,4ch Int 21h DOS功能调用 MS-DOS操作系统提供给程序员的子程序 调用子程序步骤(类似高级语言调用函数) ( 1)在 AH寄存器中设置系统功能 调用号 ( 2)在指定寄存器中设置 入口参数 ( 3)中断调用指令“ INT 21H”执行功能 ( 4)根据 出口参数 分析功能调用执行情况 字符串显示功能调用 主存的字符串以“ $”作为结尾符 类似 C/C+语言中隐含用 NULL作为字符串结尾 功能编号 AH 09H 入口参数 DS DX欲显示的字符串逻辑地址 ( 段地址 偏移地址 ) 功能说明 将指定的字符串在当前光标位置开始显示 字符串可以是任何长度 可以包含控制字符(如回车 0DH,换行 0AH) 必须以“ $”( ASCII码为 24H)字符结尾 汇编结束( end语句) 翻译源程序成目标模块的过程到此结束 源程序的最后必须有一条 END语句 汇编程序不处理 END指令之后的任何内容 END伪指令后面可以有一个“标号”参数 指定程序开始执行于该标号所指示的指令 end start 执行结束 汇编结束 程序完整框架 (1) SEGMENT/ENDS伪指令 。 伪指令 SEGMENT和 ENDS 总是成对使用的 。 用这对伪指令来指定段的名称和范围 。 段名 SEGMENT 本段程序内容 (指令语句或伪指令语句 ) 段名 ENDS 从 SEGMENT伪指令之后出现的指令和伪指令都被认为是 在该段之内 , 直至 ENDS出现为止 。 当用于定义 数据段 、 附加数据段 和 堆栈段 时 , 处于 SEGMENT/ENDS伪指令中间的语句 , 只能包括伪指令语句 , 不能包括指令语句 , 一般格式为 段名 SEGMENT 数据定义 , 存储单元分配等伪指令语句 段名 ENDS 当由 SEGMENT/ENDS定义 代码段 时 , 中间的语句可包括 指令语句和与指令有关的伪指令语句 。 一般格式为 段名 SEGMENT 指令语句和与伪指令有关的伪指令语句 段名 ENDS 所定义段的名称。段名是标识 符,同一段的 SEGMENT/ENDS 伪指令前的 段名必须一致。 DATA-SEG SEGMENT DATA_SEG ENDS ; EXTRA_SEG SEGMENT; EXTRA_SEG ENDS ; CODE_SEG SEGMENT; START: CODE-SEG ENDS ; END START ; 源程序模块结束 定义数据段 定义附加数据段 定义代码 (即指令 )段 STACK_SEG SEGMENT STACK_SEG ENDS 定义堆栈段 ASSUME伪指令 。 ASSUME伪指令语句用来告诉汇编程序 在指令执行期间内存的哪一段是数据段 , 哪一段是堆栈段 , 哪 一段是代码段 。 ASSUME伪指令语句的格式如下 : ASSUME 段寄存器名 : 段名符 , 段寄存器名: 段名符 , 上述格式中 内的内容可有可无 。 例如: ASSUME CS: MYCODE, DS: MYDATA ASSUME ES: MYEXTRA, SS: MYSTACK MYCODE SEGMENT ASSUME CS: MYCOED, DS: MYDATA, ES: MYEXTRA, SS: MYSTACK START: MOV AX, MYDATA MOV DS, AX MOV AX, MYEXTRA MOV ES, AX MOV AX, MYSTACK MOV SS, AX MOV AH,4CH INT 21H MYCODE ENDS END START 二进制数 便于计算机存储及物理实现 特点:逢二进一,由 0和 1两个数码组成, 基数为 2,各个位权以 2k表示 二进制数 : anan-1a 1a0.b1b2b m an 2n an-1 2n-1 a1 21 a0 20 b1 2-1 b2 2-2 bm 2-m 其中 ai, bj非 0即 1 十六进制数 用于表达二进制数,相互转换简单 基数 16,逢 16进位,位权为 16k, 16个数码: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 十六进制数: anan-1a 1a0.b1b2b m an 16n an-1 16n-1 a1 161 a0 160 b1 16-1 b2 16-2 bm 16-m 其中 ai, bj是 0 F中的一个数码 常用进位计数制对照表 2 的次幂的缩简表 1K=210 , 1M=220, 1G=230, 1T=240 二进制数或十六进制数转换为十 进制数 方法:按权展开 二进制数转换为十进制数 0011.1010B 1 21 1 20 1 2-1 0 2-2 1 2-3 3.625 十六进制数转换为十进制数 1.2H 1 160 2 16 1 1.125 十进制整数转换为二或十六进制数 整数部分转换:用除法 十进制数整数部分不断除以基数 2或 16, 并记下余数,直到商为 0为止 由最后一个余数起逆向取各个余数, 则为转换成的二进制和十六进制数 126 01111110B 126 7EH 十进制小数转换为二或十六进制数 小数部分转换:用乘法 分别乘以各自的基数,记录整数部分,直到小 数部分为 0为止 0.8125 0.1101B 0.8125 0.DH 小数转换会发生总是无法乘到为 0的情况 可选取一定位数(精度) 将产生无法避免的转换误差 十六进制数的加减运算 二进制和十六进制数之间具有对应关系 整数从左向右 小数从右向左 每 4个二进制位对应一个十六进制位 00111010B 3AH, F2H 11110010B 十六进制数的加减运算类似十进制 逢 16进位 1,借 1当 16 23D9H 94BEH B897H A59FH 62B8H 42E7H 计算机中的常用数据类型; 计算机中对实际数据有特殊的表示方法; 整数分带 符号数 和 无符号数 两种; 无符号数 :字节、字、双字整数操作数中,对应 的 8 位、 16 位、 32 位二进制数全部用来表示数 值本身。 没有用来表示符号位的位, 因而为正整数。 无符号整数 31 24 23 16 15 8 7 0 15 8 7 0 7 0 双字 字 字节 m 3 m 2 m 1 m M S B M S B M S B 1 - 2 地址 MSB (Most Significant Bit):最高有效位 真值和机器数 真值 :现实中真实的数值 机器数 :计算机中用 0和 1数码组合表达的数值 定点数 :固定小数点的位置表达数值的机器数 定点整数:将小数点固定在机器数的最右侧表达的整数 定点小数:将小数点固定在机器数的最左侧表达的小数 浮点数 :小数点浮动表达的实数 无符号数 :只表达 0和正整数的定点整数 有符号数: 表达负整数、 0和正整数的定点整数 符号位需要占用一个位 常用机器数的最高位 0表示正数、 1表示负数 正数的原码表示: 设 X=+Xn-2Xn-3X1X0 (即 n-1 位二进制正数 ), 则 X 原 =0Xn-2Xn-3X1 0 负数的原码表示 设 X= -Xn-2Xn-3X1X0 (即 n-1 位二进制负数 ), 则 X 原 =1Xn-2Xn-3X1 0=2n-1+Xn-2Xn-3X1X0 =2n-1-(-Xn-2Xn-3X1X0)=2n-1-X 注意:在这里我们一般假设 n=8。 原码 零的原码表示 在二进制数原码表示中有正零和负零之分 , 即 +0 原 =00000 -0 原 =10000 原码定义: X 原 = (n位二进制数, 最高位为符号位 ) X X0 2 n-1-X X0 例 1.2:求 X +18 和 Y -18 的原码。 解: X的真值 +0010010,根据原码的定义, X原 00010010; Y的真值 -0010010,根据原码的定义, Y原 10010010。 表示范围 : n位原码能够表示的数值的范围为: -(2n-1-1) +(2n-1-1), 即 -011.1 011.1。 反码 反码的定义 X 反 = X 0 X 2n-1-1 2 n-1+X (2n-1-1) X 0 表示范围: n位反码能够表示的数值的范围为: -(2n-1- 1) (2n-1-1) (n位二进制数, 最高位为符号位 ) 同样, 0的反码也是不惟一的: +0反 00000000, -0反 11111111。 例 1.3:求 X 52 和 Y -52 的反码。 解: X的真值 0110100, 因为 X 0, 所以有 X反 X原 00110100; Y的真值 -0110100, 因为 Y 0, 所以根据反码表示方法,有 Y反 = 11001011。 补码 补码的定义 X 补 = X 0 X 2 n-1-1, 2 n+X - 2n-1 X0。 表示范围: n位补码能够表示的数值的范围为: -2n-1 (2n-1-1) 注意:与原码和反码不同 , 0的补码是惟一的 。 (n位二进制数, 最高位为符号位 ) 例 1.4:求 X 52 和 Y 52 的补码。 解: X的真值 0110100, 因为 X 0, 所以 X补 X反 X原 00110100; Y的真值 0110100, 因为 Y 0, 所以 Y补 Y反 1 11001011 1 11001100。 原码、补码和反码 根据 X补 及 X反 的定义式得如下关系: 当 X为正数时, X反 =X补 =X原 =X; 当 X为负数时 , X反 是将 X原 的符号位保持不变, 其余各位变反; X补 则是将 X原 的符号位保持不变, 其余各位变反加 1。 BCD码( Binary Coded Decimal) 二进制编码的十进制数 一个十进制数位用 4位二进制编码来表示 常用 8421 BCD码:低 10个 4位二进制编码表示 0 9 压缩 BCD码 :一个字节表达两位 BCD码 非压缩 BCD码 :一个字节表达一位 BCD码(低 4 位表达数值,高 4位常设置为 0) BCD码很直观 BCD码: 0100 1001 0111 1000.0001 0100 1001 十进制真值: 4978.149 BCD码便于输入输出 , 表达数值准确 ASCII码(美国标准信息交换码) 标准 ASCII码用 7位二进制编码,有 128个 不可显示的控制字符:前 32个和最后一个编码 回车 CR: 0DH 换行 LF: 0AH 响铃 BEL: 07H 可显示和打印的字符: 20H后的 94个编码 数码 0 9: 30H 39H 大写字母 A Z: 41H 5AH 小写字母 a z: 61H 7AH 空格: 20H 扩展 ASCII码:最高 D7位为 1,表达制表符号
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!