1011微机原理与应用04

上传人:pu****.1 文档编号:584472015 上传时间:2024-08-31 格式:PPT 页数:46 大小:464.02KB
返回 下载 相关 举报
1011微机原理与应用04_第1页
第1页 / 共46页
1011微机原理与应用04_第2页
第2页 / 共46页
1011微机原理与应用04_第3页
第3页 / 共46页
1011微机原理与应用04_第4页
第4页 / 共46页
1011微机原理与应用04_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《1011微机原理与应用04》由会员分享,可在线阅读,更多相关《1011微机原理与应用04(46页珍藏版)》请在金锄头文库上搜索。

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

2、T.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变

3、量属性变量属性语句格式语句格式程序由语句组成程序由语句组成一个语句常占一行一个语句常占一行一个语句不超过一个语句不超过132个字符,个字符,4个部分个部分执行性语句执行性语句:表达处理器指令(硬指令)表达处理器指令(硬指令)标号标号:硬指令助记符硬指令助记符操作数操作数,操作数操作数;注释注释例:例:first:movah,9;使得使得AH=9说明性语句说明性语句:表达伪指令,控制汇编方式表达伪指令,控制汇编方式名字名字伪指令助记符伪指令助记符参数参数,参数参数,;注释注释例:例:msgdbHello,Assembly!,13,10,$标号与名字标号与名字标号:标号:执行性语句中执行性语句中冒

4、号分隔冒号分隔反映处理器指令在主存中的逻辑地址反映处理器指令在主存中的逻辑地址名字:名字:说明性语句中说明性语句中空格或制表符分隔空格或制表符分隔表示变量名、逻辑段名、子程序名等表示变量名、逻辑段名、子程序名等反映变量、逻辑段和子程序等的逻辑地址反映变量、逻辑段和子程序等的逻辑地址标号和名字是用户自定义的标识符标号和名字是用户自定义的标识符标识符(标识符(Identifier)最多由最多由31个字母、数字及规定的特殊符号(如个字母、数字及规定的特殊符号(如_、$、?、)组成,)组成,不能以数字开头不能以数字开头一个源程序中,用户定义的每个标识符一个源程序中,用户定义的每个标识符必须唯一必须唯一

5、不能是不能是汇编程序采用的汇编程序采用的保留字保留字保留字(保留字(ReservedWord)是编程语言本身需要使)是编程语言本身需要使用的各种具有特定含义的标识符、也称为关键字用的各种具有特定含义的标识符、也称为关键字硬指令助记符硬指令助记符 MOV伪指令助记符伪指令助记符 DB操作符操作符 OFFSET寄存器名寄存器名EAX预定义符号预定义符号data取名原则类似高级语言取名原则类似高级语言但不区别大小写字母但不区别大小写字母硬指令硬指令助记符:帮助记忆指令功能的符号助记符:帮助记忆指令功能的符号硬指令助记符对应处理器指令,表示一种操作硬指令助记符对应处理器指令,表示一种操作数据传送指令数

6、据传送指令movah,9;使得使得AH9助记符:助记符:MOV(取自(取自Move)功能:将源操作数传送至目的操作数功能:将源操作数传送至目的操作数将数字将数字9传送到传送到AH寄存器中的指令寄存器中的指令伪指令伪指令伪指令助记符对应指示符,表达一个汇编命令伪指令助记符对应指示符,表达一个汇编命令字节变量定义伪指令字节变量定义伪指令助记符:助记符:DB(取自(取自DefineByte)功能:在主存中占用若干的存储空间,用于保存变量值,功能:在主存中占用若干的存储空间,用于保存变量值,该变量以字节为单位存取该变量以字节为单位存取变量名变量名MSG包含有段地址和偏移地址包含有段地址和偏移地址操作符

7、操作符OFFSET获得偏移地址获得偏移地址movdx,offsetmsg;DX获得获得msg的偏移地址的偏移地址操作符操作符SEG获得段地址获得段地址movdx,segmsg;DX获得获得msg的段地址的段地址操作数与参数操作数与参数处理器指令的操作数:表示参与操作的对象处理器指令的操作数:表示参与操作的对象一个具体的常量一个具体的常量保存在寄存器的数据保存在寄存器的数据保存在存储器中的变量保存在存储器中的变量逗号前常是目的操作数,逗号后的常是源操作数逗号前常是目的操作数,逗号后的常是源操作数伪指令的参数伪指令的参数:常量、变量名、表达式等常量、变量名、表达式等可以有多个,参数之间用逗号分隔可

8、以有多个,参数之间用逗号分隔注释与分隔符注释与分隔符语句中分号后的内容是注释语句中分号后的内容是注释对指令或程序进行说明对指令或程序进行说明汇编程序不对它们做任何处理汇编程序不对它们做任何处理注释利于以后阅读,建议养成书写注释的良好习惯注释利于以后阅读,建议养成书写注释的良好习惯语句的语句的4个组成部分要用分隔符分开个组成部分要用分隔符分开标号后的标号后的冒号冒号注释前的注释前的分号分号操作数间和参数间的操作数间和参数间的逗号逗号分隔其他部分通常采用一个或多个分隔其他部分通常采用一个或多个空格空格或或制表符制表符注释使用英文或中文均可注释使用英文或中文均可分隔符都是英文标点分隔符都是英文标点例

9、题例题3-1信息显示程序信息显示程序在数据段给出这个字符串形式的信息:在数据段给出这个字符串形式的信息:;数据段数据段msg dbHello,Assembly!,13,10,$;定义要显示的字符串定义要显示的字符串在代码段编写显示字符串的程序:在代码段编写显示字符串的程序:;代码段代码段movdx,offsetmsg;指定字符串在数据段的偏移地址指定字符串在数据段的偏移地址movah,9int21h;利用功能调用显示信息利用功能调用显示信息简化段定义源程序格式简化段定义源程序格式;example.asm.modelsmall;定义程序的存储模式定义程序的存储模式.486;说明使用的说明使用的8

10、0x86微处理器指令微处理器指令.stack;定义堆栈段定义堆栈段.data;定义数据段定义数据段;数据定义(数据待填)数据定义(数据待填).code;定义代码段定义代码段.startup;程序执行起始程序执行起始;主程序(指令待填)主程序(指令待填).exit;程序执行结束,返回程序执行结束,返回DOS;子程序(指令待填)子程序(指令待填)end;汇编结束汇编结束存储模式(存储模式(MemoryModel)存储模式决定一个程序的规模存储模式决定一个程序的规模简化段定义源程序格式中,必须有简化段定义源程序格式中,必须有.MODEL语句语句.MODEL存储模式存储模式.MODEL语句确定了程序采

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

12、令数据段定义伪指令.DATA创建一个数据段创建一个数据段段名:段名:DATA,程序中可用,程序中可用DATA表示表示代码段定义伪指令代码段定义伪指令.CODE创建一个代码段创建一个代码段默认段名:默认段名:TEXT,程序中可用,程序中可用CODE表示表示处理器选择伪指令处理器选择伪指令缺省情况只汇编缺省情况只汇编16位位8086指令集指令集利用利用32位位寄存器完成寄存器完成32位位操作,必须加上操作,必须加上.386及以上处理器的选择伪指令及以上处理器的选择伪指令留心留心.386及以后的处理器选择伪指令的位置及以后的处理器选择伪指令的位置在存储模式在存储模式MODEL指令之后,默认采用指令之

13、后,默认采用16位段位段在存储模式在存储模式MODEL指令之前,默认采用指令之前,默认采用32位段位段简化段定义源程序格式简化段定义源程序格式;example.asm.modelsmall;定义程序的存储模式定义程序的存储模式.486;说明使用的说明使用的80x86微处理器指令微处理器指令.stack;定义堆栈段定义堆栈段.data;定义数据段定义数据段;数据定义(数据待填)数据定义(数据待填).code;定义代码段定义代码段.startup;程序执行起始程序执行起始;主程序(指令待填)主程序(指令待填).exit;程序执行结束,返回程序执行结束,返回DOS;子程序(指令待填)子程序(指令待填

14、)end;汇编结束汇编结束.startup替换为:替换为:start:movax,datamovds,ax.exit替换为替换为movah,4chInt21hDOS功能调用功能调用MS-DOS操作系统提供给程序员的子程序操作系统提供给程序员的子程序调用子程序步骤(类似高级语言调用函数)调用子程序步骤(类似高级语言调用函数)(1)在)在AH寄存器中设置系统功能寄存器中设置系统功能调用号调用号(2)在指定寄存器中设置)在指定寄存器中设置入口参数入口参数(3)中断调用指令)中断调用指令“INT21H”执行功能执行功能(4)根据)根据出口参数出口参数分析功能调用执行情况分析功能调用执行情况字符串显示功

15、能调用字符串显示功能调用主存的字符串以主存的字符串以“$”作为结尾符作为结尾符类似类似C/C+语言中隐含用语言中隐含用NULL作为字符串结尾作为字符串结尾功能编号功能编号 AH09H入口参数入口参数 DS DX欲显示的字符串逻辑地址欲显示的字符串逻辑地址(段地址段地址 偏移地址偏移地址)功能说明功能说明 将指定的字符串在当前光标位置开始显示将指定的字符串在当前光标位置开始显示字符串可以是任何长度字符串可以是任何长度可以包含控制字符(如回车可以包含控制字符(如回车0DH,换行,换行0AH)必须以必须以“$”(ASCII码为码为24H)字符结尾)字符结尾汇编结束(汇编结束(end语句)语句)翻译源

16、程序成目标模块的过程到此结束翻译源程序成目标模块的过程到此结束源程序的最后必须有一条源程序的最后必须有一条END语句语句汇编程序不处理汇编程序不处理END指令之后的任何内容指令之后的任何内容END伪指令后面可以有一个伪指令后面可以有一个“标号标号”参数参数指定程序开始执行于该标号所指示的指令指定程序开始执行于该标号所指示的指令endstart执行执行结束结束汇编结束汇编结束程序完整框架程序完整框架 (1)SEGMENT/ENDS伪伪指指令令。伪伪指指令令SEGMENT和和ENDS总是成对使用的。用这对伪指令来指定段的名称和范围。总是成对使用的。用这对伪指令来指定段的名称和范围。段名段名SEGM

17、ENT本段程序内容本段程序内容(指令语句或伪指令语句指令语句或伪指令语句)段名段名ENDS从从SEGMENT伪伪指指令令之之后后出出现现的的指指令令和和伪伪指指令令都都被被认认为为是是在该段之内,在该段之内,直至直至ENDS出现为止。出现为止。 当当用用于于定定义义数数据据段段、附附加加数数据据段段和和堆堆栈栈段段时时,处处于于SEGMENT/ENDS伪伪指指令令中中间间的的语语句句,只只能能包包括括伪伪指指令令语语句句,不能包括指令语句,一般格式为不能包括指令语句,一般格式为段名段名SEGMENT数据定义,存储单元分配等伪指令语句数据定义,存储单元分配等伪指令语句段名段名ENDS当当由由SE

18、GMENT/ENDS定定义义代代码码段段时时,中中间间的的语语句句可可包包括括指令语句和与指令有关的伪指令语句。一般格式为指令语句和与指令有关的伪指令语句。一般格式为段名段名SEGMENT指令语句和与伪指令有关的伪指令语句指令语句和与伪指令有关的伪指令语句段名段名ENDS所定义段的名称。段名是标识所定义段的名称。段名是标识符,同一段的符,同一段的SEGMENT/ENDS伪指令前的伪指令前的段名必须一致。段名必须一致。DATA-SEGSEGMENTDATA_SEGENDS;EXTRA_SEGSEGMENT;EXTRA_SEGENDS;CODE_SEGSEGMENT;START:CODE-SEGE

19、NDS;ENDSTART;源程序模块结束源程序模块结束 定义数据段定义数据段定义附加数据段定义附加数据段定义代码定义代码(即指令即指令)段段STACK_SEGSEGMENTSTACK_SEGENDS定义堆栈段定义堆栈段 ASSUME伪伪指指令令。ASSUME伪伪指指令令语语句句用用来来告告诉诉汇汇编编程程序序在在指指令令执执行行期期间间内内存存的的哪哪一一段段是是数数据据段段,哪哪一一段段是是堆堆栈栈段段,哪哪一段是代码段一段是代码段。ASSUME伪指令语句的格式如下伪指令语句的格式如下:ASSUME段段寄寄存存器器名名:段段名名符符,段段寄寄存存器器名名:段段名名符符,上述格式中上述格式中内

20、的内容可有可无。内的内容可有可无。例如:例如:ASSUMECS:MYCODE,DS:MYDATAASSUMEES:MYEXTRA,SS:MYSTACKMYCODESEGMENTASSUMECS:MYCOED,DS:MYDATA,ES:MYEXTRA,SS:MYSTACKSTART:MOVAX,MYDATAMOVDS,AXMOVAX,MYEXTRAMOVES,AXMOVAX,MYSTACKMOVSS,AXMOVAH,4CHINT21HMYCODEENDSENDSTART二进制数二进制数便于计算机存储及物理实现便于计算机存储及物理实现特点:逢二进一,由特点:逢二进一,由0和和1两个数码组成,两个数

21、码组成,基数为基数为2,各个位权以,各个位权以2k表示表示二进制数二进制数:anan-1a1a0.b1b2bman2nan-12n-1a121a020b12-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.b1b2bman16nan-116n-1a1161a0160b116-1b216-2bm16-m其中其中ai,bj是是0F中的

22、一个数码中的一个数码常用进常用进位计数制对照表位计数制对照表2的次幂的缩简表的次幂的缩简表1K=210,1M=220,1G=230,1T=240二进制数或十六进制数转换为十二进制数或十六进制数转换为十进制数进制数方法:按权展开方法:按权展开二进制数转换为十进制数二进制数转换为十进制数0011.1010B12112012-102-212-33.625十六进制数转换为十进制数十六进制数转换为十进制数1.2H116021611.125十进制整数转换为二或十六进制数十进制整数转换为二或十六进制数整数部分转换:用除法整数部分转换:用除法十进制数整数部分不断除以基数十进制数整数部分不断除以基数2或或16,

23、并记下余数,直到商为,并记下余数,直到商为0为止为止由最后一个余数起逆向取各个余数,由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数则为转换成的二进制和十六进制数12601111110B1267EH十进制小数转换为二或十六进制数十进制小数转换为二或十六进制数小数部分转换:用乘法小数部分转换:用乘法分别乘以各自的基数,记录整数部分,直到小分别乘以各自的基数,记录整数部分,直到小数部分为数部分为0为止为止0.81250.1101B0.81250.DH小数转换会发生总是无法乘到为小数转换会发生总是无法乘到为0 0的情况的情况可选取一定位数(精度)可选取一定位数(精度)将产生无法避免的转

24、换误差将产生无法避免的转换误差十六进制数的加减运算十六进制数的加减运算二进制和十六进制数之间具有对应关系二进制和十六进制数之间具有对应关系整数从左向右整数从左向右小数从右向左小数从右向左每每4个二进制位对应一个十六进制位个二进制位对应一个十六进制位00111010B3AH,F2H11110010B十六进制数的加减运算类似十进制十六进制数的加减运算类似十进制逢逢16进位进位1,借,借1当当1623D9H94BEHB897HA59FH62B8H42E7H计算机中的常用数据类型;计算机中的常用数据类型;计算机中对实际数据有特殊的表示方法;计算机中对实际数据有特殊的表示方法;整数分带整数分带符号数符号

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

26、数:将小数点固定在机器数的最右侧表达的整数定点整数:将小数点固定在机器数的最右侧表达的整数定点小数:将小数点固定在机器数的最左侧表达的小数定点小数:将小数点固定在机器数的最左侧表达的小数浮点数浮点数:小数点浮动表达的实数:小数点浮动表达的实数无符号数无符号数:只表达:只表达0和正整数的定点整数和正整数的定点整数有符号数:有符号数:表达负整数、表达负整数、0和正整数的定点整数和正整数的定点整数符号位需要占用一个位符号位需要占用一个位常用机器数的最高位常用机器数的最高位0表示正数、表示正数、1表示负数表示负数n 正数的原码表示:正数的原码表示:设设X=+Xn-2Xn-3X1X0(即即n-1位二进制

27、正数位二进制正数),则,则X原原=0Xn-2Xn-3X10n 负数的原码表示负数的原码表示设设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。原码原码n 零的原码表示零的原码表示在二进制数原码表示中有正零和负零之分,在二进制数原码表示中有正零和负零之分,即即+0原原=00000-0原原=10000n原码定义:原码定义: X原原=(n位二进制数,位二进制数,最高位为符号位最高位为符号位)X

28、X02n-1-X X0n 例例1.2:求:求X+18和和Y-18的原码。的原码。解:解:X的真值的真值+0010010,根据原码的定义,根据原码的定义,X原原00010010;Y的真值的真值-0010010,根据原码的定义,根据原码的定义,Y原原10010010。n 表示范围表示范围: n位原码能够表示的数值的范围为:位原码能够表示的数值的范围为:-(2n-1-1)+(2n-1-1),即即-011.1011.1。反码反码 反码的定义反码的定义 X反反=X 0 X 2n-1-12n-1+X (2n-1-1)X 0表表示示范范围围:n位位反反码码能能够够表表示示的的数数值值的的范范围围为为:-(2

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

30、:位补码能够表示的数值的范围为:-2n-1(2n-1-1)注意:与原码和反码不同,注意:与原码和反码不同,0的补码是惟一的。的补码是惟一的。(n位二进制数,位二进制数,最高位为符号位最高位为符号位)例例1.4:求:求X52和和Y52的补码。的补码。解:解:X的真值的真值0110100,因为因为X0,所以所以X补补X反反X原原00110100;Y的真值的真值0110100,因为因为Y0,所以所以Y补补Y反反111001011111001100。原码、补码和反码原码、补码和反码根据根据X补补及及X反反的定义式得如下关系:的定义式得如下关系:当当X为正数时,为正数时,X反反=X补补=X原原=X;当当

31、X为负数时为负数时,X反反是将是将X原原的符号位保持不变,的符号位保持不变,其余各位变反;其余各位变反;X补补则是将则是将X原原的符号位保持不的符号位保持不变,其余各位变反加变,其余各位变反加1。BCD码(码(BinaryCodedDecimal)二进制编码的十进制数二进制编码的十进制数一个十进制数位用一个十进制数位用4位二进制编码来表示位二进制编码来表示常用常用8421BCD码:低码:低10个个4位二进制编码表示位二进制编码表示09压缩压缩BCD码码:一个字节表达两位:一个字节表达两位BCD码码非压缩非压缩BCD码码:一个字节表达一位:一个字节表达一位BCD码(低码(低4位表达数值,高位表达

32、数值,高4位常设置为位常设置为0)BCD码很直观码很直观BCD码:码:0100100101111000.000101001001十进制真值:十进制真值: 4978.149BCD码便于输入输出,表达数值准确码便于输入输出,表达数值准确ASCII码(美国标准信息交换码)码(美国标准信息交换码)标准标准ASCII码用码用7位二进制编码,有位二进制编码,有128个个不可显示的控制字符:前不可显示的控制字符:前32个和最后一个编码个和最后一个编码回车回车CR:0DH换行换行LF:0AH响铃响铃BEL:07H可显示和打印的字符:可显示和打印的字符:20H后的后的94个编码个编码数码数码09:30H39H大写字母大写字母AZ:41H5AH小写字母小写字母az:61H7AH空格:空格:20H扩展扩展ASCII码:最高码:最高D7位为位为1,表达制表符号,表达制表符号

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号