汇编语言程序设计(41).ppt_第1页
汇编语言程序设计(41).ppt_第2页
汇编语言程序设计(41).ppt_第3页
汇编语言程序设计(41).ppt_第4页
汇编语言程序设计(41).ppt_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 汇编语言程序格式,4.1 汇编语言语句种类及格式 4.2 伪操作 4.4 汇编语言的上机过程,4.1汇编语言语句种类及格式,指令语句 伪指令语句 宏指令,一、指令语句,使CPU产生动作、并在程序执行时才处理的语句,就是第2章学习的处理器指令 书写格式 标号: 指令助记符 DEST ,SRC ;注释 标号:一条指令的符号地址。可以省略,如有必须以“:”作为结束标志。在程序段或子程序段的第一条指令处可使用标号,以在程序需要时转移到该处时,以标号的形式引用。,指令语句标号的命名,标号的命名:根据用途,由字母、数字、专用符号? - $ 约定: 最长31个字符 第一个字符不能是数字 ? - $可

2、出现在标号的任意位置,但? $不能单独使用 . 只能出现在起始位置 一个程序中,每个标识符的定义是唯一的,且不能与任何保留字相同,二、伪指令语句,(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等 伪指令与具体的处理器类型无关,但与汇编程序的版本有关 名字 伪指令 操作数 ;注释,伪指令语句格式说明,符号名字段: 与标号相区别,不带“:” 可以是常量名、变量名、过程名、结构名、记录名等 可视为指令语句中的操作数(如符号名就表示一个常量或存储地址 命名规则与标号相同 伪指令字段:规定这条语句要求汇编程序完成的具体操作,4.2 伪操作,一、

3、数据定义及存储器分配伪操作 二、表达式赋值伪操作 三、段定义伪操作 四、程序开始和结束伪操作 五、地址计数器及对准伪操作 六、基数控制伪操作 七、处理器选择伪操作,数据是语句中操作数的基本组成部分 一般来讲数据具有数值和属性两个特征 汇编语言能识别的数据项包括:常数、变量和标号,一、数据定义及存储器分配伪操作,变量:代表存储在某些存储单元中的数据,在程序运行期间可以修改;对变量的访问以变量名的形式进行;可认为变量名为存储单元的符号地址 变量的定义与预置 由数据定义伪操作完成,分配存储单元 起名字 赋初值,一、数据定义伪指令的格式,变量名,DB DW DD DQ,表达式1,表达式2,,段属性(S

4、EG):表示变量存放在哪个逻辑段中,访问时要使之成为当前段 偏移量属性(OFFSET):表示变量在所属逻辑段中距起始点的距离 类型属性(TYPE):表示变量所占字节数,一、数据定义伪指令(表达式),数值表达式 D1 DB 12H,34H,56H (D1)=12H, (D1+1)=34H, (D1+2)=56H D2 DW 1234H,5678H (D2)=1234H, (D1+2)=5678H ?表达式:表示该单元的内容任意 D3 DB ?,?;表示分配2个字节 D4 DW ?,?;表示分配2个字,一、数据定义伪指令(表达式),字符串表达式 STR1 DB ABCDE ;为每个字符分配1个单元

5、,STR2 DW AB,CD ;为由2个字符组成的字符串分配2个单元,一、数据定义伪指令(表达式),带DUP的表达式,变量名,DB DW DD DQ,表达式1 DUP(表达式2),D1 DB 20H DUP(?) ;预留20H个字节,内容任意,D2 DB 10H DUP(ABCD) ;重复10H个ABCD,共占40H字节,D3 DW 10H DUP(4) ;重复10H个字单元,内容0004H,共占20H字节,一、数据定义伪指令(表达式),带DUP的表达式DUP操作符可重复使用,D4 DB 10H DUP(4 DUP(2),7),;重复10H个(2,2,2,2,7),共占50H字节,标号,指令的

6、符号地址,段属性(SEG) 偏移量属性(OFFSET) 距离属性(Distance类型):表示标号的转移特性,标号,设置标号距离属性的方法 1)隐含方式:在指令语句中使用标号后,其隐含为NEAR属性 SUB1: MOV AL,30H ;SUB1具有NEAR属性 ;该方式定义的标号只能具备NEAR属性,标号,设置标号距离属性的方法 2)用LABEL 伪指令赋予标号距离属性 名称 LABEL 类型,/Type,该伪指令一般与指令语句/数据定义伪指令连用,以补充或设置与值连用的标号/变量的距离/类型属性,设置标号距离属性的方法(例1),SUB1:MOV AL,30H,段内转移/调用: SUB1,SU

7、B1_FARLABEL FAR,段间转移/调用: SUB1_FAR,设置变量类型属性的方法(例2),D_WORDDW 20H DUP(?),利用D_WORD无法取出数组中的某字节 MOVAL,D_WORD+4,D_BYTELABEL BYTE,MOVAL,D_BYTE+4,变量的使用在指令语句中,对已经定义的变量直接引用其符号名 DATA SEGMENT DA1 DB 0FEH DA2 DW 52ACH DA3 DB 10H DUP(?) DA4 DW 10H DUP(1) MOV AL,DA1 ;AL=FEH MOV BX,DA2 ;BX=52ACH MOV SI,2 MOV DA3SI,A

8、L MOV DA4SI,BX,变量的使用在伪指令语句中,DATA SEGMENT DA1 DB 12H NUM DB 75HH ARRAY DW 20H DUP(0) ADR1 DW NUM ADR2 DD NUM ADR3 DW ARRAY2 ,DW:定义的存储单元存放相应变量的偏移量 DD:定义的存储单元存放相应变量的偏移量和段基值 不能使用DBN,二、表达式赋值伪操作,等值语句 符号 EQU 表达式 ;将表达式的值赋给左边的符号,表达式的形式 1) 常数或数值表达式 CNT EQU 5 NUM EQU 13+5+4,2) 址表达式 ADR1 EQU DS:BP+14,3) 变量、标号或指

9、令助记符 W0 EQU WORD PTR DA_BYTE,等值语句仅在汇编源程序时作为替代符号用,不产生任何目标代码,不占存储单元 在同一程序中,同一符号不能用EQU重复定义,二、表达式赋值伪操作,等值语句 符号 = 表达式 ;功能与EQU相同,但可重复定义,CNT = 5 NUM = 4 NUM = NUM+10H CBD = DDA CBD = ADD,表达式与运算符,指令中的操作数可以以表达式的形式出现,汇编程序在汇编过程中计算表达式,最终得到一个数值 程序运行之前,就已经计算出了表达式;所以,程序运行速度没有变慢,但增强程序的可读性 MASM对除伪指令外各种汇编时处理的指令统称为操作符

10、(Operator),运算符,运算符算术运算符,+ - * / MOD SHR SHL 实现加、减、乘、除、取模、移位的运算 MOV AX,3*4+5;等价于 MOV AX,17 其中MOD也称为取模,它产生除法之后的余数,如19 mod 7 = 5 加+和减-运算符还可以用于地址表达式 表达式 SHR/SHL CNT 除加、减外,其他运算符的参数必须是整数,算术运算符例,NUM= 11011011B MOV AL,NUM SHL 3MOV AL,11011000B MOV BL, NUM SHR 2MOV AL,00110110B ADD DL, NUM SHR 6ADD DL,000000

11、11B MOV AL,ARRAYBXSIMOV AL,ARRAYBX+SI,运算符逻辑运算符,AND OR XOR NOT 实现按位相与、相或、异或、求反的逻辑运算 OR AL,03H AND 45H0R AL, 01H MOV AX, NOT 0F0HMOV AX,0FF0FH MOV BL, 55H AND 0F0H MOV BL,50H,运算符关系运算符,EQ NE GT LT GE LE 用于比较和测试符号数值 表达式1 关系运算符 表达式2 表达式为常数时,按无符号数进行比较 表达式为变量(同段内)时,比较其偏移量 MASM用0FFH/0FFFFH(补码 -1)表示条件为真 MASM

12、用0000H表示条件为假,运算符关系运算符(举例),MOV AX, 0FH EQ 1111B MOV AX,0FFFFH MOV BX, 0FH NE 1111B MOV BX,0 VAR DW NUM LT 0ABH ;当已定义的常数NUM小于ABH时,则VAR 0FFH,运算符数值返回运算符,操作对象:存储器操作数(变量/标号) 格式:运算符 变量名/标号名,SEG 名字/标号 返回名字或标号的段基值 MOV AX, SEG K1,OFFSET 名字/标号 返回名字或标号的段内偏移地址 MOV SI, OFFSET VAR,运算符数值返回运算符,TYPE 名字/标号 返回名字或标号的类型属

13、性,以数字形式表示,运算符数值返回运算符(例),V1 DB ABCD V2 DW 1234H,5678H V3DD V2 MOV AL, TYPE V1;AL=1 MOV CL, TYPE V2;CL=2 MOV CH, TYPE V3;CH=4,运算符数值返回运算符,LENGTH 名字/标号 只用于变量,且为DUP所定义 如未用DUP定义则返回值为1 如使用DUP定义则返回最外层之值,运算符数值返回运算符(例),K1DB 10H DUP(0) K2DB 10H,20H,30H K3DW 20H DUP(0,1,2 DUP(2) K4DB ABCD MOV AL,LENGTH K1;AL=10

14、H MOV BL,LENGTH K2;BL=1 MOV CX,LENGTH K3;CX=20H MOV DX,LENGTH K4;DX=1,运算符数值返回运算符,SIZE 名字 只用于变量,得到重复定义的变量的数组元素所占字节数=LENGTH*TYPE,K1DB 10H DUP(0) K2DB 10H,20H,30H K3DW 20H DUP(0,1,2 DUP(2) K4DB ABCD MOV AL,LENGTH K1;AL=10H MOV BL,LENGTH K2;BL=1 MOV CX,LENGTH K3;CX=20H MOV DX,LENGTH K4;DX=1 MOV AL,SIZE

15、K1;AL=10H MOV BL,SIZE K2;BL=1 MOV CL,SIZE K3;CL=40H MOV DL,SIZE K4;DL=1,运算符属性修改运算符,对存储器操作数(名字/标号)的属性进行修改 PTR 运算符 类型 PTR 地址表达式,该修改是临时的,只在当前语句有效,运算符属性修改运算符(例),DA_BYTE DB 20H DUP(0) DA_WORD DW 30H DUP(0) LEA BX DA_WORD LEA SI,DA_BYTE MOV AX,WORD PTR BA_BYTE10H ADD BYTE PTR DA_WORD20H,BL INC BYTE PTR BX

16、 SUB WORD PTR SI,30H AND AX,WORD PTRBXSI JMP FAR PTR SUB1,运算符THIS运算符,THIS 类型名 利用THIS说明的操作数具有汇编时的当前逻辑地址,但具有指定的类型 LABEL伪指令的功能等同于“EQU THIS”,D_BYTEEQU THIS BYTE W_WORDDW 20H DUP(0) ;定义20H字单元,该区域可按字节访问,也可以按字访问 JMP_FAREQU THIS FAR JMP_NEAR: MOV AL,30H,运算符HIGH/LOW运算符,操作对象:常数/地址表达式 功能:取其高/低8位 CONST EQU 0ABC

17、DH MOV AH,HIGH CONST ;AH=0ABH,运算符的优先级,1() LENGTH SIZE WIDTH MASK 2PTR OFFSET SEG TPYE THIS : 3HIGE LOW 4* / MOD SHL SHR 5+ - 6EQ NE GT LT GE LE 7NOT 8AND 9OR XOR 10SHORT,建议采用圆括号“( )”显式表达,它可以极大地提高程序的可阅读性,三、段定义伪操作,程序的段结构,段定义 段寻址(指定当前段) 段寄存器的装入,三、段定义伪操作完整段定义伪指令,段名SEGMENT 定位 组合 段字 类别 ;语句序列 段名ENDS,段定义由SE

18、GMENT和ENDS这一对伪指令实现,SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令表示一个段的结束 段定义指令后的4个关键字用于确定段的各种属性,堆栈段要采用stack组合类型 如果不指定,则采用默认参数;但如果指定,注意要按照上列次序,三、段定义伪操作段定位(align)属性,表示对逻辑段起始边界的选择,可为: PAGE 段从一个页边界开始(XXX00H,256Bytes/Page) PARA段节边界开始(XXXX0H) DWORD段从一个4倍数地址开始 WORD 段从一个偶地址开始 BYTE 段可以从任意单元开始 完整段定义伪指令的默认定位属性是PARA,三、段定义伪操作段组合

19、(combine)属性,指定多个逻辑段之间如何连接与定位,可为: PRIVATE本段与其他段没有连接关系,这是完整段定义伪指令默认的段组合方式 PUBLIC在满足定位关系的前提下,连接程序把本段与所有同名段相邻地连接在一起,形成新的逻辑段。(可在程序的不同位置及不同的文件中使用段定义语句定义一个逻辑段) COMMON产生一覆盖段,两个同名段起始地址相同,用较长的段覆盖较短的段,三、段定义伪操作段组合(combine)属性,STACK把所有的同类别段连接在一起,段基值SS,且自动为SP初始化。在一个程序中一般应该有一个堆栈段。 AT 表达式表示本段定位在表达式所指示的节的边界上 AT 0930H

20、 表示本段的物理地址从09300H开始 MEMORY 表示本段定位在所有其它段的最高地址,三、段定义伪操作段类别(class)属性,当连接程序组织段时,将所有的同类别段相邻分配 段类别可以是任意名称,但必须位于单引号中 大多数MASM程序使用 code、data和stack来分别指名代码段、数据段和堆栈段,以保持所有代码和数据的连续,DA1SEGMENT PARA DATA DD1DB 10 DUP(12H) DA1ENDS STA1SEGMENT STACK STACK0 DW 20H DUP(?) STA1ENDS DA2SEGMENT PARA DATA DD2DB 20H DUP(13

21、H) DA2ENDS STA2SEGMENT STACK STACK0 DW 30H DUP(?) STA2ENDS CODE SEGMENT CODE ENDS,三、段定义伪操作段寻址,指明当前段 ASSUME 段寄存器名:段名,段寄存器名:段名,,在程序运行过程中,可重新设置当前段,也可以删除原有的设置 ASSUME ES:NOTHING;删除对ES的设置 ASSUME NOTHING ;删除对所有段的设置,三、段定义伪操作段寄存器的装入,ASSUME只说明了已哪些段为当前段,具体的段基值并没有装入,DS与ES的装入 用ASSUME将DS/ES与相应的段建立联系后,用数据传送指令 MOVA

22、X,段名 MOV DS/ES,AX,三、段定义伪操作段寄存器的装入,SS的装入 在定义段时,用组合类型STACK说明 STACK1SEGMENT PARA STACK DW 20H DUP(0) STACK1ENDS CODESEGEMNT ASSUME CS:CODE,SS:STACK1 ,SS获得STACK1的段基值,且SP=40H,三、段定义伪操作段寄存器的装入,SS的装入(类似于DS/ES的方法) STACK1SEGMENT DW 40H DUP(0) TOPLABEL WORD STACK1ENDS CODESEGEMNT ASSUME CS:CODE MOV AX,STACK1 M

23、OV SS,AX MOV SP,OFFSET TOP;SP=80H ,中间不得插入其他指令,三、段定义伪操作段寄存器的装入,CS的装入 用结束伪指令:每个源程序都必须以END伪指令结束 END 起始地址,标号 表达式,不一定是指令语句,三、段定义伪操作段寄存器的装入,CS的装入 CODESEGEMNT ASSUME CS:CODE,SS:STACK1 START: END START,四、程序开始和结束伪操作,开始: NAME modul_name TITLE text,程序终止和汇编结束是两码事,结束: END 起始地址,五、地址计数器及对准伪操作,地址计数器$ :汇编程序在为每条指令或变量

24、分配内存时,使用当前位置计数器来指示下一指令或数据的偏移量,用$表示其值 定位伪指令:ORG 表达式 将表达式的值赋给当前位置计数器。即该伪指令后的指令或变量以表达式的值为偏移量 EVEN使下一指令或变量的偏移量为偶数,五、地址计数器及对准伪操作(例),DATASEGMENT ORG 30H DB1DB 12H,34H ORG $+20H STRDB ABC CNTEQU $-STR EVEN DW1DW 20H DUP(0) DATAENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ORG 10H START:MOV AX,DATA MOV DS,AX COD

25、E ENDS END START,六、基数控制伪操作,汇编语言源程序默认使用十进制,其他用标注表示(B,O,H) 格式:RADIX 表达式 功能:把默认的基数改为2、8、16等 除指定进制外,其他加标注,MOV BX,0FFH MOV BX,178,RADIX 16 MOV BX,0FF MOV BX,178D,过程定义伪指令,过程名PROC NEAR/FAR RET 过程名ENDP,;隐含为NEAR,;必须包含,在同一个逻辑段中可包含多个过程,程序结束返回的方法,以过程成形式编制的程序 以中断指令“INT 21H”返回,程序结束返回的方法以过程成形式编制的程序,程序段前缀PSP (Progr

26、am Segment Prefix),从可用内存的最低地址处开始 参数与缓存区结合的区域 共占256(100H)字节 操作系统在PSP首址+ 100H处装配要运行的程序 对扩展名为EXE的程序,运行时DS和ES指向程序段前缀 在PSP PSP+1存放指令“INT 20H”(该指令使程序返回控制台命令接收状态),PSP,DS:0000H,ES:0000,附加段,已用内存,各段顺序及大小随程序而定,数据段,堆栈段,剩余内存,程序段前缀 PSP,代码段,INT 20H,100H,PSP+100H,程序结束返回的方法以过程成形式编制的程序,对过程的要求,过程的距离属性应设置为FAR 保留进入程序前的D

27、S( PUSH DS ) 使过程结束后执行 INT 20H过程的最后一条指令RET 后从栈顶弹出DS:0000 CS:IP,程序结束返回的方法以过程成形式编制的程序,MAINPROC FAR PUSH DS XOR AX,AX PUSH AX RET MAIN ENDP,;完成所需要的功能,程序结束返回的方法以中断指令“INT 21H”返回,DOS软中断向用户提供了一组非常有用的系统功能,其中4CH功能结束当前进程,控制返回给调用该程序的进程,因此,在程序结束前加入语句: MOV AH,4CH INT 21H,七、处理器选择伪操作,. 8086;选择8086指令系统 . 286;选择80286

28、指令系统 . 286 P;选择保护方式下的80286指令系统 . 386;选择80386指令系统 . 386 P;选择保护方式下的80386指令系统 . 486;选择80486指令系统 . 486 P;选择保护方式下的80486指令系统 . 586;选择Pentium指令系统 . 486 P;选择保护方式下的Pentium 指令系统,简单的汇编源程序(例1),编制一汇编源程序,求出下列公式中的Z值,并放在RESULT单元中。,开始,预置数据段和堆栈段,为返回DOS做准备,DX X+Y,DX DX*8,DX DX-X,DX DX/2,RESULT DX,返回,TITLEEXAMPLE DATAS

29、EGMENT XDW 6 YDW 7 RESULT DW ? DATAENDS STA1SEGMENT PARA STACK DW 20H DUP(0) STA1 ENDS CODE SEGMENT PROC1PROC FAR ASSUME CS:CODE,DS:DATA ASSUME SS:STA1,START:PUSH DS;为返回做准备 XOR AX,AX PUSH AX MOV AX,DATA ;装入DS MOV DS,AX MOV DX,X;DX=X ADD DX,Y;DX=X+Y MOV CL,3 SHL DX,CL ;DX=(X+Y)*8 SUB DX,X ;DX=(X+Y)*8

30、-X SAR DX,1 ;DX=(X+Y)*8-X)/2 MOV RESULT,DX RET PROC1 ENDP CODE ENDS END START,简单的汇编源程序(例2),用查表的方法将1位十六进制数转换成相应的ASCII码。,解:将地址及其单元存储的内容建立一种关系,DATASEGMENT TABLE DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H HEXDB 4 ASCIIDB ? DATAENDS STA1SEGMENT PARA STACK DW 20H DUP(0) STA1

31、ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME SS:STA1,START: MOV AX,DATA ;装入DS MOV DS,AX XOR BX,BX MOV BL,HEX MOV DL,TABLEBX MOV ASCII,DL MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START,MOV BX,OFFSET TABLE MOV AL,HEX XLAT TABLE MOV ASCII,AL,4.4 汇编语言的上机过程,源程序:文件名.asm,目标模块:文件名.obj,可执行文件:文件名.

32、exe,错误,汇编语言程序的开发过程,开发过程源程序的编辑,源程序文件要以ASM为扩展名 源程序文件的形成(编辑)可以通过任何一个文本编辑器实现: DOS中的全屏幕文本编辑器EDIT 其他程序开发工具中的编辑环境 MASM程序员工作平台PWB中的编辑环境 EDIT TEST.ASM,开发过程源程序的汇编,汇编是将源程序翻译成由机器代码组成的目标模块文件的过程 MASM 5.x/6.x提供的汇编程序是MASM.EXE: MASM TEST.ASM 如果源程序中没有语法错误,MASM将自动生成一个目标模块文件(TEST.OBJ);否则MASM将给出相应的错误信息 这时应根据错误信息,重新编辑修改源

33、程序后,再进行汇编,开发过程目标模块的连接,连接程序能把一个或多个目标文件和库文件合成一个可执行程序(.EXE、.COM文件): LINK TEST.OBJ 如果没有严重错误,LINK将生成一个可执行文件(TEST.EXE);否则将提示相应的错误信息 这时需要根据错误信息重新修改源程序后再汇编、链接,直到生成可执行文件,开发过程可执行程序的调试,经汇编、连接生成的可执行程序在操作系统下只要输入文件名就可以运行: TEST 操作系统装载该文件进入主存,并开始运行 如果出现运行错误,可以从源程序开始排错,也可以利用调试程序帮助发现错误 采用DEBUG.EXE调试程序: DEBUG TEST.EXE

34、,源程序的两种格式书写,源程序分别用两种格式书写 第一种格式MASM 5.0以前就具有 完整段定义格式 第二种格式从MASM 5.0开始支持 简化段定义格式,存储模式伪指令,.MODEL 存储模式 使用简化段定义,必须有存储模式伪指令 .model语句必须位于所有段定义语句之前 存储模式决定一个程序的规模,确定进行子程序调用、指令转移和数据访问的缺省属性 MASM有7种不同的存储模式: TINY SMALL COMPACT MEDIUM LARGE HUGE FLAT,存储模式TINY微型模式,微型模式是MASM 6.0才引入的 用于创建COM类型程序 用微型模式编写汇编语言程序时,所有的段地

35、址寄存器都被设置为同一值 这意味着代码段、数据段、堆栈段都在同一个段内,不大于64KB;访问操作数或指令都只需要使用16位偏移地址,存储模式SMALL小型模式,一般的程序(例如本书的绝大多数程序示例和习题)都可用这种模式 在小型模式下,一个程序至多只能有一个代码段和一个数据段,每段不大于64KB 这里的数据段是指数据段、堆栈段和附加段的总和,它们共用同一个段基址,总长度不可超过64KB;因此小模式下程序的最大长度为128KB 访问操作数或指令都只需要使用16位偏移地址;这意味着诸如指令转移、程序调用以及数据访问等都是近属性(NEAR),即小型模式下的调用类型和数据指针缺省分别为近调用和近指针,

36、存储模式COMPACT紧凑模式,适合于数据量大但代码量小的程序 紧凑模式下,代码段被限制在一个不大于64KB的段内;而数据段则可以有多个,超过64KB 这种模式下的调用类型缺省仍为近调用;而数据指针缺省为远(FAR)指针,因为必须用段地址来区别多个数据段,存储模式MEDIUM中型模式,中型模式是与紧凑模式互补的模式 适合于数据量小但代码量大的程序 中型模式的代码段可以超过64KB,有多个;但数据段只能有一个不大于64KB的段 这种模式下的数据指针缺省为近指针;但调用类型缺省是远(FAR)调用,因为要利用段地址区别多个代码段,存储模式LARGE大型模式,较大型程序通常采用的存储模式 大型模式允许的代码段和数据段都有多个,都可以超过64KB;但全部的静态数据(不能改变的数据)仍限制在64K字节内 大型模式下的调用类型和数据指针缺省分别为远调用和远指针,存储模式HUGE(巨型模式),与大型模式基本相同,只是静态数据不再被限制在64K字节之内,存储模式 FLAT平展模式,平展模式用于创建一个32位的程序, 它只能运行在32位x86 CPU上。 DOS下不能使用FLAT模式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论