第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句

上传人:小** 文档编号:45890699 上传时间:2018-06-20 格式:PPT 页数:50 大小:870KB
返回 下载 相关 举报
第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句_第1页
第1页 / 共50页
第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句_第2页
第2页 / 共50页
第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句_第3页
第3页 / 共50页
第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句_第4页
第4页 / 共50页
第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句》由会员分享,可在线阅读,更多相关《第3章汇编语言程序设计-3.1、3.2汇编语言格式、语句(50页珍藏版)》请在金锄头文库上搜索。

1、1第第3 3章章 汇编语言程序设计汇编语言程序设计u机器语言:用二进制表示指令和数据。u汇编语言:由指令助记符、符号常量和标号等符号书写程序的设计语言称为汇编语言(Assemble Language)。汇编语言需要翻译为机器语言,CPU才能执行,这个过程称为汇编。汇编程序分为小汇编(ASM),和宏汇编(MASM) 。u高级语言:通用性强,编程简捷,易读,易维护。最终翻译为机器语言才能执行。2用汇编语言编写源程序,经过汇编程序和连接程序生用汇编语言编写源程序,经过汇编程序和连接程序生 成目标程序和执行程序成目标程序和执行程序文件名文件名.ASM .ASM 文件名文件名.OBJ .OBJ 文件名文

2、件名.EXE.EXE汇编语言 源程序汇编目标 程序连接执行 程序编辑程序 EDIT.EXE汇编程序 MASM.EXE连接程序 LINK.EXE汇编程序(MASM.EXE)的主要功能是: 1、将汇编语言源程序翻译成机器语言; 2、根据程序分配存储区域(程序区,数据区,堆栈区); 3、将各种进位制数据转换成二进制数; 4、把字符转换成ASCII码; 5、计算出数值表达式的值; 6、对源程序进行检查,如果有错误则给出相应提示。 33.1 3.1 汇编语言程序格式汇编语言程序格式一、示例程序 data1 segment data;数据段NUM DW 0011101000000111B;即3A07H d

3、ata1 ends stack1 segment stack stack;堆栈段SAVE DW 100 DUP(?) stack1 ends code segment code;代码段assume cs:code,ds:data1,ss:stack1 begin: mov ax, data1 ;建立数据段段地址mov ds, axmov ax, stack1;建立堆栈段mov ss, ax .;程序代码 code endsend begin4汇编语言中有两类指令: 一类是执行性指令,另一类是说明性指令。1、 执行性指令 即指令系统中包括的指令。执行性指令的格式标号: 前缀 指令助记符 操作数表

4、 ;注释51)标号代表“:”后指令的存储地址,供JMP,CALL和 LOOP等指令操作使用。2)前缀是 8086/8088中一些特殊指令,它们同其他指令配 合使用,如“串操作指令”的重复指令REP。3)指令助记符包括8086/8088指令助记符。4)操作数表是由逗号分隔开的多个操作数。包括目标操 作数和源操作数,5)注释以“;”开始,用来简要说明该指令在程序中的作 用,以提高程序的可读性。62、说明性指令(伪指令)说明性指令在汇编时不产生任何代码。 表示源程序的起始终止信息、分段情况、内存结构和变量说 明等信息。说明性指令的格式如下:名字 伪指令 操作数表 ;注释73.2 汇编语言语句的组成1

5、、指令语句在汇编时产生目标代码,与机器指令对应的语句。如:MOV AX, CXADD AX, datal2、伪指令语句在汇编时不产生目标代码,只为汇编程序提供汇编 时所 需要信息的语句。如:datal DW 12abH8为了书写方便,把一组汇编语句序列用一条指令代替,这 种指令称为宏指令。在汇编时,凡是有宏指令的地方将用相应 的汇编语句序列取代,所以宏指令可以产生目标代码。 宏指令定义 如下,funcal macro x ;x是形式参数mov ah, xint 21h ;宏定义endmfuncal 是宏指令,使用时直接写成:funcal 2 ;其中2是宏参数, 汇编时产生:mov ah, 2i

6、nt 21h 两条语句,并将它们汇编成目标代码。 3、宏指令语句 9汇编语言中的几个基本概念汇编语言中的几个基本概念1、标识符标识符即标号和名字,标号后面必须跟冒号。名字可以是变量名、段名、过程名等。 2、保留字保留字是汇编语言中预先保留下来的具有特殊含义的符号,不能滥用。3、数的表示 常数二进、八进、十进和十六进制数,注意十六进制数若以字母开头,前面要 加数字0。 实数(有数值协处理器的机器)整数部分. 小数部分 E指数部分例如:实数5.213E6 = 5.21310-6 字符串常数:用单引号括起来的一个或多个字符组成一个字符串常数, 例如:The rezult is:在内存中。以ASCII

7、码值存放,一个空格也是字符10变量在程序运行期间可以修改。 定义变量就是给变量分配一个或多个存储单元,并且对该存储单元 赋于一个名字变量名,同时预置初始值。定义变量用数据定义伪指令DB、DW、DD、DQ、DT。定义变量 是在逻辑段数据段、附加段和堆栈段内完成的。 例:DATA1 SEGMENT datax1 DB 12Hx2 DW 5678H DATA1 ENDS变量定义后,变量具有三个属性:段属性、偏移属性和类型属性。4、变量x1 12H 0000Hx2 78H 0001H 56H 0002H11l段属性(SEG):表示变量存放在那一个逻辑段中,段的基地址是 多少。如上面定义的变量名x1和x

8、2存放在DATA1逻辑段中。对它们进行存取时要先将它们所在段的段基址放在DS中,段基地址 就是DATA1表示的数值,执行下面语句:movax, DATA1movds, ax l偏移属性(OFFSET):表示变量在逻辑段中离段基址的偏移字节数 ,即偏移地址。如上面的x1的偏移地址为0000H,x2的偏移地址为 0001H。变量的段属性和偏移属性构成了变量的逻辑地址(段基地址:偏移地址)。程序中用变量名代表对存储单元的访问。moval, x1movbx, x2mov al, 0000H mov bx, 0001H汇编后 mov ax, 1292H12l 类型属性(type):表示变量占用存储单元的

9、字节数DB 1字节,DW 2字节,DD 4字节,DQ 8字节,DT 10字节例如,上面X1占有1个字节,初始值是12H;X2占用 两个字节,初始值5678H13格式: 变量名 伪指令(db,dw,dd,) 表达式1,表达式2,表达式有以下几种情况: 数值表达式例2: DA_BYTE DB 50H , 50 , 0caHDA_WORD DW 0a3f1H , 498dH ? 表达式,不带引号的?表示可预置任何内容例3: DA_B DB ? , ? ;要求分配两个字节单元DA_W DW ? , ? ;要求分配两个字单元 字符串表达式 表达式可以写成字符串形式,只能用DB、DW、DD定义,而且DW、

10、 DD语句定义的串只允许包含两个字符。 变量定义伪指令14S1 41H S2 42H S3 42H42H 41H 41H 43H 44H 00H44H 43H 00H45H 46H 44H46H 45H 43H00H00H 注意:定义多于两个以上字符的字符串时,只能 使用DB伪指令,不能使用DW和DD等伪指令。低地址高地址例4: S1 DB ABCDEF ;字符从左往右顺序存放 S2 DW AB, CD, EF ;低字节放低地址S3 DD AB, CD ;低字节放低地址这几个变量在存储器中存放情况如下:15 带DUP表达式 , DUP是定义重复数据操作符,格式:变量名 数据定义伪指令(db,d

11、w,) 重复次数 DUP(重复内容)例5:D_B1 DB 20H DUP(?) ;保留20H个字节D_B2 DB 10H DUP(ABCD) ;字符串ABCD 重复10H次D_W1 DW 10H DUP(4) ;字4重复10H次 $符号,伪指令中表示地址计数器的当前值例6:ARRAY DW 1,2,$+4, 3,4, $+4如果在汇编时,ARRAY的偏移地址是0074H,则在ARRAY数组 中,两个$+4得到的结果是不同的,这是由于$的值是在不断变化的。16ARRAY 01H 0074H00H02H00H7CH 0078H00H03H00H04H00H82H 007EH00H$用在伪指令和用在

12、执行指 令中的情况是不同的:$用在指令中只表示该指令的 首地址。例如指令 JNE $+6, 表示满 足条件时转移到该指令的首地 址加6以后所在的单元。 1000:2543 JNE $+6则转移地址是2549HARRAY DW 1,2,$+4, 3,4, $+417例7:下面的数据段定义,COUNT 表示什么?DATA SEGMENTBUFDB0123456789COUNTEQU$ - BUFDATAENDS这里,COUNT的值就是数据区的长度,所以COUNT=10MOV BX, 0 MOV AX, BUFBX MOV DX, OFFSET BUFLEADX, BUF18变量定义伪指令功能:变量

13、定义伪指令功能:在变量名所对应的地址内存开始依次存入 各项数据。当同时有几个定义语句时,由低地址到高地址给每个 变量语句中的表达式分配存储单元。例:DATA1 DB 23H,34H DATA2 DW 13A5H DATA3 DD 8975H DATA4 DB (-1),3*4 DATA5 DB 23 DATA6 DW AB DATA7 DW ?23H DATA1 34H A5H DATA2 13H 75H DATA3 89H 00H 00H FFH DATA4 0CH 32H DATA5 33H 42H DATA6 41H ? DATA7 ?段地址:偏移地址 2000:0000H 0001H 2 3 4 5 6 7 8 9 A B C D E F?为可在内存单元中放任意值19四、表达式和运算符四、表达式和运算符表达式由常数、操作数、操作符和运算符组成。有六种运算符,即算术运算符、逻辑运算符和关系运算符、分析运算 符、综合运算符和分离运算符。1、算术运算符+、*、/、MOD(取余)、SHL(左移)、SHR(右移 )例1 :32 MOD 5 ;结果为

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

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