




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、怎么把程序和数怎么把程序和数据存入计算机?据存入计算机?就像把饼干放进就像把饼干放进盒子里面么?盒子里面么?通过汇编软件经通过汇编软件经过汇编链接形成过汇编链接形成可执行文件。可执行文件。汇编语言程序的上机处理过程汇编语言程序的上机处理过程主要的汇编程序:主要的汇编程序:MASM,TASM汇编语言汇编语言源程序源程序(文本文档)(文本文档)汇编软件汇编汇编软件汇编MASM机器语言机器语言目标文件目标文件(.obj)连接软件连接软件link机器语言机器语言可执行文件可执行文件(exe,com)执行程序执行程序汇编语言程序的开发过程汇编语言程序的开发过程编辑编辑文本编辑器,如文本编辑器,如 EDI
2、T源程序:文件名源程序:文件名.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、变量定义3.2.2 变量属性变量属性语句格式语句格式 程序由语句组成程序由语句组成 一个语句常占一行一个语句常占一行 一个语句不超过一个语句不超过132个字符,个字符,4个部分个部分 执行性语句:表达处理器指令硬指令)执行性语句:表达处理器指令硬指令) 标号标号: 硬指令助记符硬指令助记符 操作数操作数,操作数操作数;注释注释 例:例:first: mov ah, 9 ;使得使得AH=9 说明性语句:表达伪指令,控制汇编方式说明性语句:表达伪指令,控制汇编方式 名字名字 伪指令助记符伪指令助记符 参数参数,参数参数,;注释注释 例:例: msgdb Hello, Assembly !,13,1
4、0, $标号与名字标号与名字 标号:执行性语句中标号:执行性语句中 冒号分隔冒号分隔 反映处理器指令在主存中的逻辑地址反映处理器指令在主存中的逻辑地址 名字:说明性语句中名字:说明性语句中 空格或制表符分隔空格或制表符分隔 表示变量名、逻辑段名、子程序名等表示变量名、逻辑段名、子程序名等 反映变量、逻辑段和子程序等的逻辑地址反映变量、逻辑段和子程序等的逻辑地址标号和名字是用户自定义的标识符标号和名字是用户自定义的标识符标识符标识符Identifier) 最多由最多由31个字母、数字及规定的特殊符号如个字母、数字及规定的特殊符号如 _、$、?、)组成,不能以数字开头、)组成,不能以数字开头 一个
5、源程序中,用户定义的每个标识符必须唯一一个源程序中,用户定义的每个标识符必须唯一 不能是汇编程序采用的保留字不能是汇编程序采用的保留字 保留字保留字Reserved Word是编程语言本身需要使是编程语言本身需要使用的各种具有特定含义的标识符、也称为关键字用的各种具有特定含义的标识符、也称为关键字 硬指令助记符硬指令助记符 MOV 伪指令助记符伪指令助记符 DB 操作符操作符OFFSET 寄存器名寄存器名EAX 预定义符号预定义符号data取名原则类似高级语言取名原则类似高级语言但不区别大小写字母但不区别大小写字母硬指令硬指令 助记符:帮助记忆指令功能的符号助记符:帮助记忆指令功能的符号 硬指
6、令助记符对应处理器指令,表示一种操硬指令助记符对应处理器指令,表示一种操作作 数据传送指令数据传送指令mov ah,9;使得使得AH9 助记符:助记符:MOV取自取自Move) 功能:将源操作数传送至目的操作数功能:将源操作数传送至目的操作数 将数字将数字9传送到传送到AH寄存器中的指令寄存器中的指令伪指令伪指令 伪指令助记符对应指示符,表达一个汇编命令伪指令助记符对应指示符,表达一个汇编命令 字节变量定义伪指令字节变量定义伪指令 助记符:助记符:DB取自取自Define Byte) 功能:在主存中占用若干的存储空间,用于保功能:在主存中占用若干的存储空间,用于保存变量值,该变量以字节为单位存
7、取存变量值,该变量以字节为单位存取 变量名变量名MSG包含有段地址和偏移地址包含有段地址和偏移地址 操作符操作符OFFSET获得偏移地址获得偏移地址 mov dx, offset msg ;DX获得获得msg的偏移的偏移地址地址 操作符操作符SEG获得段地址获得段地址 mov dx, seg msg ;DX获得获得msg的段地的段地址址操作数与参数操作数与参数 处理器指令的操作数:表示参与操作的对象处理器指令的操作数:表示参与操作的对象 一个具体的常量一个具体的常量 保存在寄存器的数据保存在寄存器的数据 保存在存储器中的变量保存在存储器中的变量 逗号前常是目的操作数,逗号后的常是源操作数逗号前
8、常是目的操作数,逗号后的常是源操作数 伪指令的参数:伪指令的参数: 常量、变量名、表达式等常量、变量名、表达式等 可以有多个,参数之间用逗号分隔可以有多个,参数之间用逗号分隔注释与分隔符注释与分隔符 语句中分号后的内容是注释语句中分号后的内容是注释 对指令或程序进行说明对指令或程序进行说明 汇编程序不对它们做任何处理汇编程序不对它们做任何处理 注释利于以后阅读,建议养成书写注释的良好习惯注释利于以后阅读,建议养成书写注释的良好习惯 语句的语句的4个组成部分要用分隔符分开个组成部分要用分隔符分开 标号后的冒号标号后的冒号 注释前的分号注释前的分号 操作数间和参数间的逗号操作数间和参数间的逗号 分
9、隔其他部分通常采用一个或多个空格或制表符分隔其他部分通常采用一个或多个空格或制表符 注释使用英文或中文均可注释使用英文或中文均可分隔符都是英文标点分隔符都是英文标点例题例题3-1信息显示程序信息显示程序 在数据段给出这个字符串形式的信息:在数据段给出这个字符串形式的信息:;数据段数据段 msgdb Hello, Assembly !,13,10,$;定义要显示的字符串定义要显示的字符串 在代码段编写显示字符串的程序:在代码段编写显示字符串的程序:;代码段代码段mov dx,offset msg;指定字符串在数据段的偏移地址指定字符串在数据段的偏移地址mov ah,9int 21h;利用功能调用
10、显示信息利用功能调用显示信息简化段定义源程序格式简化段定义源程序格式;example.asm.model small;定义程序的存储模式定义程序的存储模式.486;说明使用的说明使用的80 x86微处理器指令微处理器指令.stack;定义堆栈段定义堆栈段.data;定义数据段定义数据段;数据定义数据待填)数据定义数据待填).code;定义代码段定义代码段.startup;程序执行起始程序执行起始;主程序指令待填)主程序指令待填).exit;程序执行结束,返回程序执行结束,返回DOS;子程序指令待填)子程序指令待填)end;汇编结束汇编结束存储模式存储模式Memory Model) 存储模式决定
11、一个程序的规模存储模式决定一个程序的规模 简化段定义源程序格式中,必须有简化段定义源程序格式中,必须有.MODEL语句语句.MODEL 存储模式存储模式 .MODEL语句确定了程序采用的存储模式语句确定了程序采用的存储模式 一般的小型程序可以选用一般的小型程序可以选用SMALL模式模式 大型程序选择大型程序选择LARGE模式模式 TINY模式创建模式创建COM程序,其他模式产生程序,其他模式产生EXE程程序序 FLAT模式用于模式用于32位程序中,不能在位程序中,不能在DOS环境执环境执行行COM程序只有一个逻辑段不超过程序只有一个逻辑段不超过64KB)逻辑段定义逻辑段定义 堆栈段定义伪指令堆
12、栈段定义伪指令.STACK创建一个堆栈段创建一个堆栈段 段名:段名:STACK,程序中可用,程序中可用STACK表示表示 默认是默认是1KB(1024400H字节空间字节空间 数据段定义伪指令数据段定义伪指令.DATA创建一个数据段创建一个数据段 段名:段名:DATA,程序中可用,程序中可用DATA表示表示 代码段定义伪指令代码段定义伪指令.CODE创建一个代码段创建一个代码段 默认段名:默认段名:TEXT,程序中可用,程序中可用CODE表示表示处理器选择伪指令处理器选择伪指令 缺省情况只汇编缺省情况只汇编16位位8086指令集指令集 利用利用32位寄存器完成位寄存器完成32位操作,必须加位操
13、作,必须加上上.386及以上处理器的选择伪指令及以上处理器的选择伪指令 留心留心.386及以后的处理器选择伪指令的位置及以后的处理器选择伪指令的位置 在存储模式在存储模式MODEL指令之后,默认采用指令之后,默认采用16位段位段 在存储模式在存储模式MODEL指令之前,默认采用指令之前,默认采用32位段位段简化段定义源程序格式简化段定义源程序格式;example.asm.model small;定义程序的存储模式定义程序的存储模式.486;说明使用的说明使用的80 x86微处理器指令微处理器指令.stack;定义堆栈段定义堆栈段.data;定义数据段定义数据段;数据定义数据待填)数据定义数据待
14、填).code;定义代码段定义代码段.startup;程序执行起始程序执行起始;主程序指令待填)主程序指令待填).exit;程序执行结束,返回程序执行结束,返回DOS;子程序指令待填)子程序指令待填)end;汇编结束汇编结束.startup替换为:替换为:start: mov ax,data mov ds,ax.exit替换为替换为mov ah,4chInt 21hDOS功能调用功能调用 MS-DOS操作系统提供给程序员的子程序操作系统提供给程序员的子程序 调用子程序步骤类似高级语言调用函数)调用子程序步骤类似高级语言调用函数) (1在在AH寄存器中设置系统功能调用号寄存器中设置系统功能调用号
15、 (2在指定寄存器中设置入口参数在指定寄存器中设置入口参数 (3中断调用指令中断调用指令“INT 21H执行功能执行功能 (4根据出口参数分析功能调用执行情况根据出口参数分析功能调用执行情况字符串显示功能调用字符串显示功能调用 主存的字符串以主存的字符串以“$”作为结尾符作为结尾符 类似类似C/C+语言中隐含用语言中隐含用NULL作为字符串结作为字符串结尾尾功能编号功能编号 AH09H入口参数入口参数 DS DX欲显示的字符串逻辑地址欲显示的字符串逻辑地址(段地址段地址 偏移地址偏移地址)功能说明功能说明 将指定的字符串在当前光标位置开始显示将指定的字符串在当前光标位置开始显示字符串可以是任何
16、长度字符串可以是任何长度可以包含控制字符(如回车可以包含控制字符(如回车0DH,换行,换行0AH)必须以必须以“$”(ASCII码为码为24H)字符结尾)字符结尾汇编结束汇编结束end语句)语句) 翻译源程序成目标模块的过程到此结束翻译源程序成目标模块的过程到此结束 源程序的最后必须有一条源程序的最后必须有一条END语句语句 汇编程序不处理汇编程序不处理END指令之后的任何内容指令之后的任何内容 END伪指令后面可以有一个伪指令后面可以有一个“标号参数标号参数 指定程序开始执行于该标号所指示的指令指定程序开始执行于该标号所指示的指令end start执行结束执行结束汇编结束汇编结束程序完整框架
17、程序完整框架 (1) SEGMENT/ENDS伪指令。伪指令SEGMENT和ENDS总是成对使用的。用这对伪指令来指定段的名称和范围。 段名 SEGMENT 本段程序内容(指令语句或伪指令语句) 段名 ENDS 从SEGMENT伪指令之后出现的指令和伪指令都被认为是在该段之内, 直至ENDS出现为止。 当用于定义数据段、附加数据段和堆栈段时,处于SEGMENT/ENDS伪指令中间的语句,只能包括伪指令语句,不能包括指令语句,一般格式为 段名 SEGMENT 数据定义,存储单元分配等伪指令语句 段名 ENDS 当由SEGMENT/ENDS定义代码段时,中间的语句可包括指令语句和与指令有关的伪指令
18、语句。一般格式为 段名 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 ; 源程序模块结束源程序模块结束 定义数据段定义数据段定义附加数据段定义附加数据段定义代码定
19、义代码(即指令即指令)段段STACK_SEG SEGMENTSTACK_SEG ENDS定义堆栈段定义堆栈段 ASSUME伪指令。伪指令。ASSUME伪指令语句用来告诉汇编程序伪指令语句用来告诉汇编程序在指令执行期间内存的哪一段是数据段,哪一段是堆栈段,在指令执行期间内存的哪一段是数据段,哪一段是堆栈段, 哪哪一段是代码段。一段是代码段。 ASSUME伪指令语句的格式如下:伪指令语句的格式如下: ASSUME 段寄存器名:段名符段寄存器名:段名符, 段寄存器名:段寄存器名: 段名符,段名符, 上述格式中上述格式中 内的内容可有可无。内的内容可有可无。 例如:例如: ASSUME CS: MYC
20、ODE, 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 21HMYCODE ENDS END START二进制数二进制数 便于计算机存储及物理实现便于计算机存储及物理实现 特点:逢二进一,由特点:逢二进一,由0和和
21、1两个数码组成,两个数码组成,基数为基数为2,各个位权以,各个位权以2k表示表示 二进制数:二进制数:anan-1a1a0.b1b2bman2nan-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.b1b2bman16nan-116n-1a1161 a0160b116-1b216-2b
22、m16-m其中其中ai,bj是是0F中的一个数码中的一个数码常用进位计数制对照表常用进位计数制对照表2 的次幂的缩简表的次幂的缩简表 1K=210 ,1M=220,1G=230,1T=240二进制数或十六进制数转换为十二进制数或十六进制数转换为十进制数进制数 方法:按权展开方法:按权展开 二进制数转换为十进制数二进制数转换为十进制数0011.1010B12112012-102-212-33.625 十六进制数转换为十进制数十六进制数转换为十进制数1.2H116021611.125十进制整数转换为二或十六进制数十进制整数转换为二或十六进制数 整数部分转换:用除法整数部分转换:用除法 十进制数整数
23、部分不断除以基数十进制数整数部分不断除以基数2或或16,并记下余数,直到商为并记下余数,直到商为0为止为止 由最后一个余数起逆向取各个余数,则由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数为转换成的二进制和十六进制数12601111110B1267EH十进制小数转换为二或十六进制数十进制小数转换为二或十六进制数 小数部分转换:用乘法小数部分转换:用乘法 分别乘以各自的基数,记录整数部分,直分别乘以各自的基数,记录整数部分,直到小数部分为到小数部分为0为止为止0.81250.1101B0.81250.DH 小数转换会发生总是无法乘到为小数转换会发生总是无法乘到为0的情况的情况 可
24、选取一定位数精度)可选取一定位数精度) 将产生无法避免的转换误差将产生无法避免的转换误差十六进制数的加减运算十六进制数的加减运算 二进制和十六进制数之间具有对应关系二进制和十六进制数之间具有对应关系 整数从左向右整数从左向右 小数从右向左小数从右向左 每每4个二进制位对应一个十六进制位个二进制位对应一个十六进制位00111010B3AH,F2H11110010B 十六进制数的加减运算类似十进制十六进制数的加减运算类似十进制 逢逢16进位进位1,借,借1当当1623D9H94BEHB897HA59FH62B8H42E7H计算机中的常用数据类型;计算机中的常用数据类型; 计算机中对实际数据有特殊的
25、表示方法;计算机中对实际数据有特殊的表示方法; 整数分带符号数和无符号数两种;整数分带符号数和无符号数两种; 无符号数:字节、字、双字整数操作数中,对应无符号数:字节、字、双字整数操作数中,对应的的 8 位、位、 16 位、位、 32 位二进制数全部用来表示数位二进制数全部用来表示数值本身。值本身。 没有用来表示符号位的位,没有用来表示符号位的位, 因而为正整数。因而为正整数。 无符号整数 31242316 158 70158 7070双字字字节m3m2m1mMSBMSBMSB1-2地址MSB (Most Significant Bit):最高有效位真值和机器数真值和机器数 真值:现实中真实的
26、数值真值:现实中真实的数值 机器数:计算机中用机器数:计算机中用0和和1数码组合表达的数值数码组合表达的数值 定点数:固定小数点的位置表达数值的机器数定点数:固定小数点的位置表达数值的机器数 定点整数:将小数点固定在机器数的最右侧表达定点整数:将小数点固定在机器数的最右侧表达的整数的整数 定点小数:将小数点固定在机器数的最左侧表达定点小数:将小数点固定在机器数的最左侧表达的小数的小数 浮点数:小数点浮动表达的实数浮点数:小数点浮动表达的实数 无符号数:只表达无符号数:只表达0和正整数的定点整数和正整数的定点整数 有符号数:表达负整数、有符号数:表达负整数、0和正整数的定点整数和正整数的定点整数
27、 符号位需要占用一个位符号位需要占用一个位 常用机器数的最高位常用机器数的最高位 0表示正数、表示正数、1表示负数表示负数n 正数的原码表示:n 设X=+Xn-2Xn-3X1X0 (即n-1 位二进制正数),那么n X原=0Xn-2Xn-3X10n 负数的原码表示n 设X= -Xn-2Xn-3X1X0 (即n-1 位二进制负数),那么n X原=1Xn-2Xn-3X10=2n-1+Xn-2Xn-3X1X0n =2n-1-(-Xn-2Xn-3X1X0)=2n-1-Xn注意:在这里我们一般假设n=8。 原码原码n 零的原码表示n 在二进制数原码表示中有正零和负零之分, 即n+0原=00000n-0原
28、=10000n 原码定义: X原=(n位二进制数,位二进制数,最高位为符号位最高位为符号位)X X02 n-1-X X0 例1.2:求 X+18 和 Y-18 的原码。 解: X的真值+0010010,根据原码的定义, X原00010010; Y的真值-0010010,根据原码的定义, Y原10010010。n 表示范围:表示范围: n n位原码能够表示的数值的范围为:位原码能够表示的数值的范围为:n -(2n-1-1)+(2n-1-1),n 即即-011.1011.1。 反码反码 反码的定义反码的定义 X反=X 0 X 2n-1-12 n-1+X (2n-1-1) X 0表示范围:表示范围:
29、n位反码能够表示的数值的范围为:位反码能够表示的数值的范围为:-(2n-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,2 n+X - 2n-1 X0。 表示范围:n位补码能够表示的数值的范围为:-2n-1(2n-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025办公设备租赁合同
- 2025年环境、健康与安全工程合同管理协议范本
- 2025年马铃薯购销合同
- 《触电事故的急救与防范》课件
- 《绿色建筑节能技术》课件
- 《黄斑变性病人的护理》课件
- 《我国投资环境分析》课件
- 《中华人民共和国劳动基准法》课件
- 《中国的文化遗产课件》课件
- 2025年百色货运资格证试题及答案
- 学前教育学 课件 第1、2章 绪论;学前教育的目标、内容的方法
- 2025北京丰台高三一模物理试题及答案
- 江南美术遗产融入美育的数智化路径探索
- 诊所医疗质量相关管理制度
- 西雅图驾驶证考题及答案
- 综合执法考试试题及答案
- 软式内镜消毒管理与质量标准
- (高清版)DB11∕T2324-2024脚手架钢板立网防护应用技术规程
- DBJ50T-284-2018 工程勘察信息模型设计标准
- 无人机吊装作业安全措施
- 中药学习题集(总论-第二十章,附标准答案)
评论
0/150
提交评论