汇编程序2-伪指令

上传人:ji****n 文档编号:57346711 上传时间:2018-10-21 格式:PPT 页数:34 大小:399.50KB
返回 下载 相关 举报
汇编程序2-伪指令_第1页
第1页 / 共34页
汇编程序2-伪指令_第2页
第2页 / 共34页
汇编程序2-伪指令_第3页
第3页 / 共34页
汇编程序2-伪指令_第4页
第4页 / 共34页
汇编程序2-伪指令_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《汇编程序2-伪指令》由会员分享,可在线阅读,更多相关《汇编程序2-伪指令(34页珍藏版)》请在金锄头文库上搜索。

1、1,回顾:,2,主要解决问题:,第四章 汇编语言程序设计,汇编语言的基本语法,第四章 汇编语言程序设计,程序设计的基本方法,3,第四章 汇编语言程序设计,4.3 伪指令,4.3 伪指令,伪指令,在汇编语言中,伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。,例如定义数据、分配存储区、定义段及定义过程等都采用伪指令表示。,说明,指示性语句,汇编程序完成,不产生目标代码。,指令性语句,CPU,对应CPU的一个特定操作。,4,包括:,第四章 汇编语言程序设计,数据定义伪指令,4.2 汇编语言基本语法,4.3 伪指令,符号定义伪指令,段定义伪指令,过程定义伪指令,结束伪指令,5,第四章 汇编

2、语言程序设计,4.3 伪指令,一、数据定义伪指令,定义程序中所用的内存操作数。,【格式】,变量名 类型命令 操作数,操作数 ,变量名,内存操作数的符号地址,类型命令,指示内存操作数的类型,操作数,内存操作数的内容,【操作】,为变量分配存储空间,并置初值。,4.3 伪指令,6,类型命令,1.类型命令有为DB/DW/DD/DF/DQ/DT,表示每个参数占1/2/4/6/8/10字节存储空间;,2.操作数可以是常量、表达式或“?”;,3.用DUP重复定义相同的操作数;,变量名 类型命令 n DUP (操作数),4.字符串变量的定义;,字符串长度超过两个 只能用DB类型定义,5.变量名可缺省的情况;,

3、变量名,操作数,操作数 ,7,例:,X2 DB 1, -1,0FCH,X3 DW 1, -1,0FCH,X4 DD 1, -1,0FCH,X1 DB 40H,例:,Y1 DW 10*10,Y2 DW ?,例:,Y3 DW 2 DUP(2,4),1476H,Y4 DB 2 DUP(?,2 DUP(A,B) ),例:,S1 DB HEL,S2 DB H, E, L,S3 DW HE,8,第四章 汇编语言程序设计,4.3 伪指令,二、符号定义伪指令,符号定义伪指令的用途是给一个符号重新命名,或定义新的类型属性等。这些符号可以包括汇编语言的变量名、标号名、过程名、寄存器名以及指令助记符等。,4.3 伪

4、指令,EQU,”=”,9,第四章 汇编语言程序设计,4.3 伪指令,EQU,二、符号定义伪指令,【格式】,名字 EQU 表达式,用途: 便于程序的调试和赋值,例: AA EQU 30HK1 EQU 40HMOV A, AA ; 30HAMOV A, K1 ; 40HA,与变量不同,不占内存,不可任意改变。由EQU定义的符号在同一模块中不允许重定。,10,第四章 汇编语言程序设计,4.3 伪指令, ”=”,二、符号定义伪指令,【格式】,名字 = 表达式,说明: 与EQU功能类似,起赋值作用。,例: X = 5X = X + 1,用“=”定义的符号名可以被重新定义,使 符号名具有新值。,11,第四

5、章 汇编语言程序设计,4.3 伪指令 教材P.146,三、段定义伪指令,段定义伪指令用于指示汇编程序如何按段组织程序以及段寄存器所对应的段。,4.3 伪指令,1. SEGMENT-ENDS语句,操作,定义逻辑段,格式,段名不可省,12,2. 段分配伪指令ASSUME,ASSUME通常放在代码段的开始,用于告诉汇编程序:哪几个逻辑段是当前的代码段、数据段、堆栈段和附加段。,例如:,4.3 伪指令,13,14,- 指出ORG后面的程序段或数据块存放的起始地址的偏移量。不用ORG则程序段起始地址的偏移量为0。,4.3 伪指令,3. ORG伪指令,15,四、 过程定义伪指令,将需要多次重复的某种操作或

6、某种运算 编成一段程序,称为过程或子程序,可以被其它 程序使用。调用子程序的程序体称为“主程序” 或“调用程序”。,过程调用和返回:,4.3 伪指令,16,说明:,格式:,17,main,sub,18,19,过程调用(p.111),段间间接调用: CALL OPR,段间直接调用: CALL FAR 过程名,段内间接调用: CALL OPR,段内直接调用: CALL 过程名 CALL NEAR 过程名,功能,格式,SP (SP)-2 ; (SP)+1: (SP) (IP) (保存返回地址偏移值) IP (IP)+DISP16 (转至符号地址处),SP (SP)-2; (SP)+1: (SP) (

7、IP) IP ( OPR),CS、IP 相继入栈 (同上) IP (OPR); CS (OPR+2),SP (SP)-2; (SP)+1: (SP) (CS) SP (SP)-2; (SP)+1: (SP) (IP) IP 过程名所在段的EA CS 过程名所在段的段基址,20,过程返回(p.112),常数表达式所确定的值必须是偶数。,21,说明:, 直接调用,目标地址在指令中;间接调用,目 标地址放在指令指定的寄存器或内存单元中。 仅当段内直接调用时, IP (IP)+DISP16, 其他情况都是重装IP。, 段内和段间返回指令的汇编语言格式均为 RET,但机器码不同:段内为C3H, 段间为

8、CBH。汇编程序根据过程属性确定返回类型。,22,code SEGMENT、CALL sub 2000:0200H 、 、 、 sub PROC NEAR 2000:0300H 、 、 、 RET sub ENDP code ENDS,执行CALL后 (IP)=0300H,执行RET后 (IP)=0200H,例: 段内直接调用及返回的堆栈情况,23,五、 程序结束语句,以END为结束,格式为:,END标志整个源程序结束,汇编程序停止汇 编操作。标号指示程序开始执行的起始地址。 一个程序必有且只有一条END伪指令语句。,4.3 伪指令,END 标号 或者 END,24,附:属性算符 与伪指令不同

9、。属性算符是与操作数一起 使用的运算符,用于更换操作数的属性或取操 作数的属性值返回给指令。操作数的属性是指操作数段、偏移及类型 (字节、字、双字、近、远)三个方面的属性。,4.3 伪指令,25,1、指针算符PTR(Pointre)格式: 类型 PTR 表达式,功能:按PTR后面的表达式寻址,不管操作 数原来是何类型,均以PTR前面指定的类型 为准。类型可以是BYTE,WORD,DWORD, NEAR, FAR。,属性算符,26,例:BUFW DW 1234H,若原变量定义为字节,由PTR 强行变为字 或双字时,以原变量地址为起始起址,向后面 单元连续读取。,MOV AX, BUFW; AX=

10、1234H,MOV BL, BYTE PTR BUFW;BL=12H,MOV CL, BYTE PTR BUFW+1;CL=34H,27,2、取段值算符SEG格式:SEG 变量名 或 标号SEG伪指令取回变量名或标号的段属性值, 即变量名或标号所在段的段基址。,属性算符,28,3、取段内偏移量算符OFFSET格式: OFFSET 变量名 或 标号OFFSET取回变量名或标号在其定义段内 的偏移量。,属性算符,29,汇编语言源程序基本框架,30,过程名 PROC FAR 标号 PUSH DSXOR AX, AXPUSH AX,31,32,DATA SEGMENT BUF DB HOW DO YO

11、U DO?$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MOV DX,SEG BUFMOV DS,DX LEA DX,BUFMOV AH,9INT 21HMOV AH,4CHINT 21H CODE ENDSEND BEGIN,33,Microsoft (R) Macro Assembler Version 5.00 10/19/6 Page 1-1 1 0000 DATA SEGMENT 2 0000 48 4F 57 20 44 4F 20 BUF DB HOW DO YOU DO?$ 3 59 4F 55 20 44 4F

12、3F 4 24 20 5 0010 DATA ENDS 6 0000 CODE SEGMENT 7 ASSUME CS:CODE,DS:DATA 8 0000 BA - R BEGIN: MOV DX,SEG BUF 9 0003 8E DA MOV DS,DX 10 0005 8D 16 0000 R LEA DX,BUF 11 0009 B4 09 MOV AH,9 12 000B CD 21 INT 21H 13 000D B4 4C MOV AH,4CH 14 000F CD 21 INT 21H 15 0011 CODE ENDS 16 END BEGIN,34,Microsoft

13、(R) Macro Assembler Version 5.00 10/19/6 Page 1-11 0000 DATA SEGMENT 2 0000 48 4F 57 20 44 4F 20 BUF DB HOW DO YOU DO?$ 3 59 4F 55 20 44 4F 3F 4 24 20 5 0010 DATA ENDS 6 0000 CODE SEGMENT 7 ASSUME CS:CODE,DS:DATA 8 0000 BA - R BEGIN: MOV DX,SEG BUF 9 0003 8E DA MOV DS,DX 10 0005 8D 16 0000 R LEA DX,

14、BUF 11 0009 B4 09 MOV AH,9 12 000B CD 21 INT 21H 13 000D B4 4C MOV AH,4CH 14 000F CD 21 INT 21H 15 0011 CODE ENDS 16 END BEGIN Microsoft (R) Macro Assembler Version 5.00 10/19/6 Symbols-1Segments and Groups:N a m e Length Align Combine ClassCODE . . . . . . . . . . . . . . 0011 PARA NONE DATA . . .

15、. . . . . . . . . . . 0010 PARA NONE Symbols: N a m e Type Value AttrBEGIN . . . . . . . . . . . . . L NEAR 0000 CODE BUF . . . . . . . . . . . . . . L BYTE 0000 DATAFILENAME . . . . . . . . . . . TEXT how 14 Source Lines14 Total Lines6 Symbols49824 + 416896 Bytes symbol space free0 Warning Errors0 Severe Errors,

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

当前位置:首页 > 生活休闲 > 社会民生

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