10-11微机原理与应用04.ppt

上传人:本田雅阁 文档编号:2876993 上传时间:2019-05-31 格式:PPT 页数:46 大小:464.02KB
返回 下载 相关 举报
10-11微机原理与应用04.ppt_第1页
第1页 / 共46页
10-11微机原理与应用04.ppt_第2页
第2页 / 共46页
10-11微机原理与应用04.ppt_第3页
第3页 / 共46页
10-11微机原理与应用04.ppt_第4页
第4页 / 共46页
10-11微机原理与应用04.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《10-11微机原理与应用04.ppt》由会员分享,可在线阅读,更多相关《10-11微机原理与应用04.ppt(46页珍藏版)》请在三一文库上搜索。

1、,怎么把程序和数据存入计算机?,就像把饼干放进盒子里面么?,通过汇编软件经过汇编链接形成可执行文件。,汇编语言程序的上机处理过程,主要的汇编程序:MASM,TASM,汇编语言 源程序 (文本文档),汇编软件汇编 MASM,机器语言 目标文件 (.obj),连接软件 link,机器语言 可执行文件 (exe,com),执行程序,汇编语言程序的开发过程,3,第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 变量属性

2、,语句格式,程序由语句组成 一个语句常占一行 一个语句不超过132个字符,4个部分 执行性语句:表达处理器指令(硬指令) 标号: 硬指令助记符 操作数,操作数 ;注释 例:first: mov ah, 9 ;使得AH=9 说明性语句:表达伪指令,控制汇编方式 名字 伪指令助记符 参数,参数,;注释 例: msg db Hello, Assembly !,13,10, $,标号与名字,标号:执行性语句中 冒号分隔 反映处理器指令在主存中的逻辑地址 名字:说明性语句中 空格或制表符分隔 表示变量名、逻辑段名、子程序名等 反映变量、逻辑段和子程序等的逻辑地址,标号和名字是用户自定义的标识符,标识符(

3、Identifier),最多由31个字母、数字及规定的特殊符号(如 _、$、?、)组成,不能以数字开头 一个源程序中,用户定义的每个标识符必须唯一 不能是汇编程序采用的保留字 保留字(Reserved Word)是编程语言本身需要使用的各种具有特定含义的标识符、也称为关键字 硬指令助记符 MOV 伪指令助记符 DB 操作符 OFFSET 寄存器名 EAX 预定义符号 data,取名原则类似高级语言 但不区别大小写字母,硬指令,助记符:帮助记忆指令功能的符号 硬指令助记符对应处理器指令,表示一种操作 数据传送指令 mov ah,9 ;使得AH9 助记符:MOV(取自Move) 功能:将源操作数传

4、送至目的操作数 将数字9传送到AH寄存器中的指令,伪指令,伪指令助记符对应指示符,表达一个汇编命令 字节变量定义伪指令 助记符:DB(取自Define Byte) 功能:在主存中占用若干的存储空间,用于保存变量值,该变量以字节为单位存取 变量名MSG包含有段地址和偏移地址 操作符OFFSET获得偏移地址 mov dx, offset msg ;DX获得msg的偏移地址 操作符SEG获得段地址 mov dx, seg msg ;DX获得msg的段地址,操作数与参数,处理器指令的操作数:表示参与操作的对象 一个具体的常量 保存在寄存器的数据 保存在存储器中的变量 逗号前常是目的操作数,逗号后的常是

5、源操作数 伪指令的参数: 常量、变量名、表达式等 可以有多个,参数之间用逗号分隔,注释与分隔符,语句中分号后的内容是注释 对指令或程序进行说明 汇编程序不对它们做任何处理 注释利于以后阅读,建议养成书写注释的良好习惯 语句的4个组成部分要用分隔符分开 标号后的冒号 注释前的分号 操作数间和参数间的逗号 分隔其他部分通常采用一个或多个空格或制表符 注释使用英文或中文均可,分隔符都是英文标点,例题3-1信息显示程序,在数据段给出这个字符串形式的信息: ;数据段 msg db Hello, Assembly !,13,10,$ ;定义要显示的字符串 在代码段编写显示字符串的程序: ;代码段 mov

6、dx,offset msg ;指定字符串在数据段的偏移地址 mov ah,9 int 21h ;利用功能调用显示信息,简化段定义源程序格式,;example.asm .model small ;定义程序的存储模式 .486 ;说明使用的80x86微处理器指令 .stack ;定义堆栈段 .data ;定义数据段 ;数据定义(数据待填) .code ;定义代码段 .startup ;程序执行起始 ;主程序(指令待填) .exit ;程序执行结束,返回DOS ;子程序(指令待填) end ;汇编结束,存储模式(Memory Model),存储模式决定一个程序的规模 简化段定义源程序格式中,必须有.

7、MODEL语句 .MODEL 存储模式 .MODEL语句确定了程序采用的存储模式 一般的小型程序可以选用SMALL模式 大型程序选择LARGE模式 TINY模式创建COM程序,其他模式产生EXE程序 FLAT模式用于32位程序中,不能在DOS环境执行,COM程序只有一个逻辑段(不超过64KB),逻辑段定义,堆栈段定义伪指令.STACK创建一个堆栈段 段名:STACK,程序中可用STACK表示 默认是1KB(1024400H字节)空间 数据段定义伪指令.DATA创建一个数据段 段名:DATA,程序中可用DATA表示 代码段定义伪指令.CODE创建一个代码段 默认段名:TEXT,程序中可用CODE

8、表示,处理器选择伪指令,缺省情况只汇编16位8086指令集 利用32位寄存器完成32位操作,必须加上.386及以上处理器的选择伪指令 留心.386及以后的处理器选择伪指令的位置 在存储模式MODEL指令之后,默认采用16位段 在存储模式MODEL指令之前,默认采用32位段,简化段定义源程序格式,;example.asm .model small ;定义程序的存储模式 .486 ;说明使用的80x86微处理器指令 .stack ;定义堆栈段 .data ;定义数据段 ;数据定义(数据待填) .code ;定义代码段 .startup ;程序执行起始 ;主程序(指令待填) .exit ;程序执行结

9、束,返回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作为字符串结尾,汇编结束(end语句),翻译源程序成目标模块

10、的过程到此结束 源程序的最后必须有一条END语句 汇编程序不处理END指令之后的任何内容 END伪指令后面可以有一个“标号”参数 指定程序开始执行于该标号所指示的指令 end start,执行结束汇编结束,程序完整框架,(1) SEGMENT/ENDS伪指令。伪指令SEGMENT和ENDS总是成对使用的。用这对伪指令来指定段的名称和范围。 段名 SEGMENT 本段程序内容(指令语句或伪指令语句) 段名 ENDS 从SEGMENT伪指令之后出现的指令和伪指令都被认为是在该段之内, 直至ENDS出现为止。,当用于定义数据段、附加数据段和堆栈段时,处于SEGMENT/ENDS伪指令中间的语句,只能

11、包括伪指令语句,不能包括指令语句,一般格式为 段名 SEGMENT 数据定义,存储单元分配等伪指令语句 段名 ENDS 当由SEGMENT/ENDS定义代码段时,中间的语句可包括指令语句和与指令有关的伪指令语句。一般格式为 段名 SEGMENT 指令语句和与伪指令有关的伪指令语句 段名 ENDS,所定义段的名称。段名是标识符,同一段的SEGMENT/ENDS 伪指令前的段名必须一致。,STACK_SEG SEGMENT STACK_SEG ENDS,定义堆栈段,ASSUME伪指令。ASSUME伪指令语句用来告诉汇编程序在指令执行期间内存的哪一段是数据段,哪一段是堆栈段, 哪一段是代码段。 AS

12、SUME伪指令语句的格式如下: 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

13、 21H MYCODE ENDS END START,二进制数,便于计算机存储及物理实现 特点:逢二进一,由0和1两个数码组成,基数为2,各个位权以2k表示 二进制数: anan-1a1a0.b1b2bm an2nan-12n-1a121a020 b12-1b22-2bm2-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-1a1a0.b1b2bm an16nan-116n-1a1161 a0160 b116-1b216-2bm16-m

14、 其中ai,bj是0F中的一个数码,常用进位计数制对照表,2 的次幂的缩简表,1K=210 ,1M=220,1G=230,1T=240,二进制数或十六进制数转换为十进制数,方法:按权展开 二进制数转换为十进制数 0011.1010B 12112012-102-212-3 3.625 十六进制数转换为十进制数 1.2H 11602161 1.125,十进制整数转换为二或十六进制数,整数部分转换:用除法 十进制数整数部分不断除以基数2或16,并记下余数,直到商为0为止 由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数 12601111110B 1267EH,十进制小数转换为二或十六进

15、制数,小数部分转换:用乘法 分别乘以各自的基数,记录整数部分,直到小数部分为0为止 0.81250.1101B 0.81250.DH 小数转换会发生总是无法乘到为0的情况 可选取一定位数(精度) 将产生无法避免的转换误差,十六进制数的加减运算,二进制和十六进制数之间具有对应关系 整数从左向右 小数从右向左 每4个二进制位对应一个十六进制位 00111010B3AH,F2H11110010B 十六进制数的加减运算类似十进制 逢16进位1,借1当16 23D9H94BEHB897H A59FH62B8H42E7H,计算机中的常用数据类型;,计算机中对实际数据有特殊的表示方法; 整数分带符号数和无符

16、号数两种; 无符号数:字节、字、双字整数操作数中,对应的 8 位、 16 位、 32 位二进制数全部用来表示数值本身。 没有用来表示符号位的位, 因而为正整数。,无符号整数,MSB (Most Significant Bit):最高有效位,真值和机器数,真值:现实中真实的数值 机器数:计算机中用0和1数码组合表达的数值 定点数:固定小数点的位置表达数值的机器数 定点整数:将小数点固定在机器数的最右侧表达的整数 定点小数:将小数点固定在机器数的最左侧表达的小数 浮点数:小数点浮动表达的实数 无符号数:只表达0和正整数的定点整数 有符号数:表达负整数、0和正整数的定点整数 符号位需要占用一个位 常

17、用机器数的最高位 0表示正数、1表示负数,正数的原码表示: 设X=+Xn-2Xn-3X1X0 (即n-1 位二进制正数),则 X原=0Xn-2Xn-3X10,负数的原码表示 设X= -Xn-2Xn-3X1X0 (即n-1 位二进制负数),则 X原=1Xn-2Xn-3X10=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.

18、2:求 X+18 和 Y-18 的原码。 解: X的真值+0010010,根据原码的定义, X原00010010; Y的真值-0010010,根据原码的定义, Y原10010010。,表示范围: n位原码能够表示的数值的范围为: -(2n-1-1)+(2n-1-1), 即-011.1011.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:求

19、X52 和 Y-52 的反码。 解: X的真值0110100, 因为X0, 所以有X反X原00110100; Y的真值-0110100, 因为Y0, 所以根据反码表示方法,有Y反 = 11001011。,补码 补码的定义,X补=,X 0 X 2n-1-1, 2 n+X - 2n-1 X0。,表示范围:n位补码能够表示的数值的范围为:-2n-1(2n-1-1) 注意:与原码和反码不同,0的补码是惟一的。,(n位二进制数, 最高位为符号位),例1.4:求 X52 和 Y52 的补码。 解: X的真值0110100, 因为X0, 所以 X补X反X原00110100; Y的真值0110100, 因为Y

20、0, 所以 Y补Y反111001011111001100。,原码、补码和反码 根据X补及X反的定义式得如下关系: 当X为正数时,X反=X补=X原=X; 当X为负数时,X反是将X原的符号位保持不变,其余各位变反;X补则是将X原的符号位保持不变,其余各位变反加 1。,BCD码(Binary Coded Decimal),二进制编码的十进制数 一个十进制数位用4位二进制编码来表示 常用8421 BCD码:低10个4位二进制编码表示09 压缩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个编码 数码09:30H39H 大写字母AZ:41H5AH 小写字母az:61H7AH 空格:20H 扩展ASCII码:最高D7位为1,表达制表符号,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1