汇编语言程序格式精选课件.ppt

上传人(卖家):三亚风情 文档编号:3263229 上传时间:2022-08-14 格式:PPT 页数:78 大小:784.50KB
下载 相关 举报
汇编语言程序格式精选课件.ppt_第1页
第1页 / 共78页
汇编语言程序格式精选课件.ppt_第2页
第2页 / 共78页
汇编语言程序格式精选课件.ppt_第3页
第3页 / 共78页
汇编语言程序格式精选课件.ppt_第4页
第4页 / 共78页
汇编语言程序格式精选课件.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 汇编程序功能汇编程序功能 伪操作伪操作 汇编语言程序格式汇编语言程序格式 汇编语言程序的上机过程汇编语言程序的上机过程第第4章章 汇编语言程序格式汇编语言程序格式第1页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言编辑程序编辑程序.ASM 文件文件汇编程序汇编程序.OBJ 文件文件连接程序连接程序.EXE 文件文件Edit 等等MASMLINK在计算机上运行汇编语言程序的步骤是:在计算机上运行汇编语言程序的步骤是:用编辑程序(任何一种文本编辑程序)建立用编辑程序(任何一种文本编辑程序)建立ASMASM文件;文件;用用M

2、ASMMASM程序把程序把ASMASM文件转换成文件转换成OBJOBJ文件;文件;用用LINKLINK程序把程序把OBJOBJ文件转换成文件转换成EXEEXE文件;文件;用用DOSDOS命令直接键入文件名就可执行该程序;命令直接键入文件名就可执行该程序;第2页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言汇编程序的主要功能:汇编程序的主要功能:第3页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 伪操作是伪操作是汇编程序汇编程序对源程序进行汇编时处理的对源程序进行汇编时处理的操作,(不像机器指令那样是程序运行期间由计算机来执行的)操作,(不像机器指令那样

3、是程序运行期间由计算机来执行的)。处理器选择伪操作处理器选择伪操作 段定义伪操作段定义伪操作 程序开始和结束伪操作程序开始和结束伪操作 数据定义及存储器分配伪操作数据定义及存储器分配伪操作 表达式赋值伪操作表达式赋值伪操作 地址计数器与对准伪操作地址计数器与对准伪操作 基数控制伪操作基数控制伪操作第4页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 选择选择 8086 指令系统指令系统 选择选择 80286 指令系统指令系统 选择保护模式下的选择保护模式下的 80286 指令系统指令系统 选择选择 80386 指令系统指令系统 选择保护模式下的选择保护模式下的 80386

4、指令系统指令系统 选择选择 80486 指令系统指令系统 选择保护模式下的选择保护模式下的 80486 指令系统指令系统 选择选择 Pentium 指令系统指令系统 选择保护模式下的选择保护模式下的 Pentium 指令系统指令系统 这类伪操作一般这类伪操作一般,如不给出,如不给出,则汇编程序则汇编程序。第5页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言段定义伪操作的格式:段定义伪操作的格式:。1.完整的段定义伪指令完整的段定义伪指令第6页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言:表示:表示,即段起始地址最低四位必须是即段起始地址最低四位必须是0

5、 0。:表示:表示,即段,即段起始地址的最低一位必须是起始地址的最低一位必须是0 0。:表示:表示。:表示:表示,即起始地址的最低八位必须是即起始地址的最低八位必须是0 0。默认为默认为 第7页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言3)3)组合方式组合方式组合方式有六种类型可供选择。组合方式有六种类型可供选择。(1)该段为该段为,在连接时将不与其他同名段合并,在连接时将不与其他同名段合并(2)该段在连接时可以把该段在连接时可以把。每一段从小段的边界开始,所以各段之间有小于每一段从小段的边界开始,所以各段之间有小于16个字节的间个字节的间隙。隙。(3)该段在连接时可以

6、该段在连接时可以,由于各同名段有相同的起始地址,所以会产生覆盖。,由于各同名段有相同的起始地址,所以会产生覆盖。(4)把把。各段之间。各段之间没有间隙。没有间隙。(5)同同PUBLIC(6)使段地址是表达式所计算出来的使段地址是表达式所计算出来的16位值,位值,CS除外。除外。默认为默认为 第8页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言【例】有两个模块,各模块段定义如下【例】有两个模块,各模块段定义如下模块模块1 1:DATA1DATA1SEGMENTSEGMENT PARA PUBLIC DATA1PARA PUBLIC DATA1M1M1DB 45H DUPDB

7、45H DUP(0 0)DATA1DATA1ENDSENDSDATA2DATA2SEGMENT PARA COMMON DATA2SEGMENT PARA COMMON DATA2N1 DB 102H DUPN1 DB 102H DUP(0 0)DATA2DATA2ENDSENDSEND END 模块模块2 2:DATA1DATA1SEGMENT PARA PUBLIC DATA1SEGMENT PARA PUBLIC DATA1M2M2DB 104H DUPDB 104H DUP(11H11H)DATA1DATA1ENDSENDSDATA2DATA2SEGMENT PARA COMMON D

8、ATA2SEGMENT PARA COMMON DATA2N2N2DB 105H DUPDB 105H DUP(0 0)DATA2DATA2ENDSENDSDATA3DATA3SEGMENTSEGMENTT1T1DB 50 DUPDB 50 DUP(20H20H)DATA3DATA3ENDSENDSENDEND第9页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言该段的定位组合方式示意图如图所示。该段的定位组合方式示意图如图所示。第10页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 4)4)使用类型使用类型 使用使用1616位寻址方式位寻址方式 段长段长

9、64K64K 使用使用3232位寻址方式位寻址方式 段长段长4G4G 5)5)类别类别 在引号中给出连接时组成的段组的类型名。在在引号中给出连接时组成的段组的类型名。在第11页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言假定伪指令假定伪指令ASSUME格式:格式:功能:功能:DATA1DATA1SEGMENTSEGMENTA ADB 1DB 1,2 2,3 3DATA1DATA1ENDSENDSCODECODESEGMENTSEGMENT 其中段寄存器名必须是其中段寄存器名必须是CS,DS,ES 和和SS(对于对于386 及后继机及后继机型还有型还有FS 和和GS)中的一

10、个。中的一个。段名必须是由段名必须是由SEGMENT定义的段定义的段中的段名。中的段名。第12页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 段定义伪操作:段定义伪操作:完整的段定义格式举例完整的段定义格式举例 data segment ;定义数据段定义数据段 data ends;-extra segment ;定义附加段定义附加段 extra ends;-code segment ;定义代码段定义代码段 assume cs:code,ds:data,es:extrastart:mov ax,data mov ds,ax ;段地址段地址 段寄存器段寄存器 code end

11、s end start第13页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言code segmentmain proc far assume start:push ds mov ax,0 push ax retmain endpcode ends end startcode segmentcode segmentmain proc farmain proc far assume assume start:start:mov ax,4c00h mov ax,4c00h int 21h int 21hmain endpmain endpcode endscode ends en

12、d start end start第14页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 例:一个完整的段定义格式例:一个完整的段定义格式STACK SEGMENT STACK ;定义堆栈段定义堆栈段STACK .;分配堆栈段的大小分配堆栈段的大小STACK ENDSDATA SEGMENT ;定义数据段定义数据段 .;定义数据定义数据DATA ENDSCODE SEGMENT CODE ;定义代码段定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;程序开始程序开始 MOV DS,AX .;程序代码程序代码 MO

13、V AX,4C00H ;程序终止,返回程序终止,返回DOS INT 21HCODE ENDS ;代码段结束代码段结束.;子程序代码子程序代码END START ;汇编结束汇编结束 例:一个完整的段定义格式例:一个完整的段定义格式第15页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 2.存储模型与简化段定义伪指令存储模型与简化段定义伪指令 前面介绍了完整的段定义格式,用完整段定义格式虽然可以控制段的各种属性,但程前面介绍了完整的段定义格式,用完整段定义格式虽然可以控制段的各种属性,但程序员很少使用。现在的汇编程序提供了一种简化的段定义方式,它使定义段更简单、方序员很少使用。

14、现在的汇编程序提供了一种简化的段定义方式,它使定义段更简单、方便。具体形式如下:便。具体形式如下:;定义存储模式定义存储模式 ;定义堆栈段定义堆栈段 ;定义数据段定义数据段.;定义数据定义数据 ;定义代码段定义代码段 ;程序起始点,并建立程序起始点,并建立DS和和SS内容内容.;程序代码程序代码 ;程序结束点,返回程序结束点,返回DOS.;子程序子程序 ;汇编结束汇编结束第16页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言存储模式与简化段定义伪操作存储模式与简化段定义伪操作(1)MODEL 伪操作伪操作 存储模式:存储模式:第17页,共78页。计算机科学与技术系计算机科学

15、与技术系 汇编语言汇编语言 TINY:该存储类型是为编写:该存储类型是为编写COM文件类型而设置的。文件类型而设置的。SMALL:所有的数据变量必须在一个数据段之内,所有的代码也必须在一个代码:所有的数据变量必须在一个数据段之内,所有的代码也必须在一个代码段之内。在这种模型下,数据段寄存器的内容保持不变,所有转移也都是段内转移。段之内。在这种模型下,数据段寄存器的内容保持不变,所有转移也都是段内转移。MEDIUM:所有的数据变量必须在一个数据段之内,但代码段可以有多个。在:所有的数据变量必须在一个数据段之内,但代码段可以有多个。在这种模型下,数据段寄存器的内容保持不变,转移可以是段间转移。这种

16、模型下,数据段寄存器的内容保持不变,转移可以是段间转移。COMPACT:数据段可以有多个,但代码段只能有一。:数据段可以有多个,但代码段只能有一。LARGE:数据段和代码段都可以有多个,但一个数组的字节数不能超过:数据段和代码段都可以有多个,但一个数组的字节数不能超过64KB。HUGE:数据段和代码段都可以有多个,一个数组的字节数也可以超过:数据段和代码段都可以有多个,一个数组的字节数也可以超过64KB。FLAT:只能在:只能在80386及其以后的计算机系统中运行。及其以后的计算机系统中运行。第18页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言SMALL存储模式存储模式

17、一般的程序都可用这种模式。在小型模式下,一个程一般的程序都可用这种模式。在小型模式下,一个程序至多只能有一个代码段和一个数据段,每段不大于序至多只能有一个代码段和一个数据段,每段不大于64KB。访问操作数或指令都只需要使用访问操作数或指令都只需要使用16位偏移地址位偏移地址;这意;这意味着诸如指令转移、程序调用以及数据访问等都是味着诸如指令转移、程序调用以及数据访问等都是近属性近属性(NEAR),即小型模式下的调用类型和数据指针缺省分),即小型模式下的调用类型和数据指针缺省分别为近调用和近指针。别为近调用和近指针。第19页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言.mo

18、del small.model small.stack 100H.stack 100H.data.data .code.code.startup.startup .exit 0.exit 0endend第20页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言.第21页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言简化的段定义伪操作简化的段定义伪操作.code name.code name.data.data.data?.data?.fardata name .fardata name 默认名:默认名:FAR_DATAFAR_DATA.fardata?nam

19、e.fardata?name 默认名:默认名:FAR_BSSFAR_BSS.const.const.stack size .stack size 默认为默认为1KB1KB第22页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言第23页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言v 例:简化段定义例:简化段定义 .MODEL SMALL .STACK 100H .DATA .CODESTART:MOV AX,DATA MOV DS,AX MOV AX,4C00H INT 21H END START第24页,共78页。计算机科学与技术系计算机科学与技术系 汇

20、编语言汇编语言.model small.model small.data.data.code.code.startup.startup .exit 0.exit 0end end .model small .model small .data .data .code .codestart:start:mov ax,datamov ax,data mov ds,ax mov ds,ax mov ax,4c00h mov ax,4c00h int 21h int 21h end start end start .model small .model small .const .const .dat

21、a .data .code .codestart:mov ax,DGROUPstart:mov ax,DGROUP mov ds,ax mov ds,ax mov ax,4c00h mov ax,4c00h int 21h int 21h end start end start第25页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言格式:格式:段组名段组名 GROUP GROUP 数据段名数据段名11,数据段名,数据段名22功能:功能:汇编程序把各数据段组成一个段组,以便程序在访问各数据段时使汇编程序把各数据段组成一个段组,以便程序在访问各数据段时使用一个数据段寄存器用一个数

22、据段寄存器DS。如:。如:data1 segment data1 ends data2 segment data2 ends datagroup group data1,data2 code segment assume cs:code,ds:datagroup start:mov ax,datagroup mov ds,ax 3.段组定义伪操作段组定义伪操作第26页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言dseg1 segment word public datadseg1 segment word public data dseg1 ends dseg1 ends

23、 dseg2 segment word public datadseg2 segment word public data dseg2 endsdseg2 ends datagroup datagroup groupgroup dseg1,dseg2 dseg1,dseg2cseg segment para public codecseg segment para public code assume cs:cseg,ds:assume cs:cseg,ds:datagroupdatagroupstart:start:mov ax,datagroup mov ax,datagroup mov

24、ds,ax mov ds,ax mov ax,4c00h mov ax,4c00h int 21h int 21hcseg endscseg ends end start end start第27页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言data1 segment data1 segment wordword const1 dw 100 const1 dw 100data1 endsdata1 ends data2 segment data2 segment wordword var1 dw?var1 dw?data2 endsdata2 endsdatagroup

25、group data1,data2datagroup group data1,data2code segment code segment assume cs:code,ds:datagroupassume cs:code,ds:datagroup mov ax,datagroup mov ax,datagroup mov ds,ax mov ds,ax mov ax,const1 mov ax,const1 mov var1,ax mov var1,ax mov ax,4c00h mov ax,4c00h int 21h int 21hcode endscode ends end start

26、 end start第28页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言;指定列表文件每页打印的标题;指定列表文件每页打印的标题;指出模块的名字;指出模块的名字;表示源程序结束,;表示源程序结束,label 指示程序指示程序 ;开始执行的起始标号;开始执行的起始标号;定义程序的入口点;定义程序的入口点;退出程序并返回操作系统;退出程序并返回操作系统 ;return_value常用常用 作返回值作返回值4.2.3 程序开始和结束伪操作程序开始和结束伪操作可以可以没有没有第29页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言在汇编程序在汇编程序MASM中,

27、提供了二组简化的代码伪指令:中,提供了二组简化的代码伪指令:.STARTUP 和和.EXIT。v.STARTUP在代码段的开始,用于自动初始化寄存器在代码段的开始,用于自动初始化寄存器DS、SS和和SP;v.EXIT用于结束程序的运行。用于结束程序的运行。.model small.data.code.startup .exit 0end .model small .data .codestart:mov ax,data mov ds,ax mov ax,4c00h int 21h end start第30页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言4.2.4 数据定义及

28、存储器分配伪操作:数据定义及存储器分配伪操作:变量名必须是一个合法的标识符,它可以写,也可以不写;变量名必须是一个合法的标识符,它可以写,也可以不写;助记符用于确定内存单元的数据类型,如:助记符用于确定内存单元的数据类型,如:DBDB(字节)、(字节)、DW DW(字)(字)、DD DD(双字)(双字)、DFDF(6 6字字节)、节)、DQDQ(四字)、(四字)、DTDT(1010字节)。字节)。操作数是定义内存单元时的初值表达式,操作数是定义内存单元时的初值表达式,一个定义语句可以一个定义语句可以有多个初值表达式,各表达式之间必须用逗号有多个初值表达式,各表达式之间必须用逗号,分开;分开;如

29、果某个存储单元没有初值表达式,则必须用一个问号如果某个存储单元没有初值表达式,则必须用一个问号?来表示;来表示;在定义语句的后面可以书写注释内容,也可以不写。在定义语句的后面可以书写注释内容,也可以不写。第31页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言DATA_BYTE DATA_BYTE DB DB 10,4,10H,10,4,10H,?DATA_WORD DATA_WORD DWDW 100,100H,-5,100,100H,-5,?例:例:1 -0AH0AH 04H04H 10H10H -64H64H 00H00H 00H00H 01H 01H FBHFBH F

30、FHFFH -DATA_BYTE DATA_BYTE DATA_WORD DATA_WORD 第32页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言【例】【例】DATA1 DB 10,4,10HDATA2 DW 100,100H,-5DATA3 DD 3*20,0FFFDH0 41 06 40 00 00 1F BF F3 C0 00 00 0F DF F0 00 00 ADATA1DATA2DATA310d410h第33页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言ARRAY DB HELLO DB AB DW AB 48H48H 45H45H 4C

31、H4CH 4CH4CH 4FH4FH 41H41H 42H42H 42H42H 41H41H ARRAY ARRAY DW1DD12345678HDW2DD0abcd1243H 78H78H 56H56H 34H34H 12H12H 43H43H 12H12H CDHCDH ABHABH DW1 DW1 DW2 DW2 例例例:例:3例2图例3图第34页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言重复说明符重复说明符DUP 从前面的内容里,我们知道了定义少量内存变量的定义形从前面的内容里,我们知道了定义少量内存变量的定义形式,但如果在程序中式,但如果在程序中要说明要说明5

32、050个、个、100100个、个、200200个甚至更多的、个甚至更多的、同类型的内存变量时同类型的内存变量时,若采用前面所学的方法,对它们一一,若采用前面所学的方法,对它们一一加以说明显然是不可行的。为此,汇编语言提供了变量的重加以说明显然是不可行的。为此,汇编语言提供了变量的重复说明符复说明符DUPDUP,其说明的一般形式如下:,其说明的一般形式如下:解释:解释:repeat_countrepeat_count是重复次数,是重复次数,(表达式表达式,表达式表达式,表达式表达式)是被重复的部分,是被重复的部分,“表达式表达式”可以是存储单元的初可以是存储单元的初值,也可以是含义另一个值,也可

33、以是含义另一个DUPDUP的式子。如果在表达式的括号的式子。如果在表达式的括号中有多个表达式,那么,它们之间要用逗号中有多个表达式,那么,它们之间要用逗号,分开。分开。第35页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言0 10 2-0 00 10 2-0 0BUF1BUF2-100个字节个字节例:例:BUF1 DB 2 DUP(0,1,2,?),?)BUF2 DB 100 DUP(?)(?)第36页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言例如:例如:BUFFER DB 100 BUFFER DB 100 DUPDUP(?)(?)STRING D

34、B 120 DUP(ABCDE),0STRING DB 120 DUP(ABCDE),0DB 2 DUP(0,2 DUP(1,2),3)DATA1 DW 50 DATA1 DW 50 DUPDUP(10H,20(10H,20 DUPDUP(1,2,3),20H)(1,2,3),20H)POINTS DD 12,30 POINTS DD 12,30 DUPDUP(0)(0)从上面的例子可看出:用从上面的例子可看出:用DUPDUP说明内存变量相当于在高级说明内存变量相当于在高级语言中定义数组。语言中定义数组。-buffer buffer -100字节画出存储单元的分配图,计算分配字节数画出存储单元

35、的分配图,计算分配字节数第37页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言强制属性操作符强制属性操作符 PTR 第38页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 为了使指令中存储单元操作数具有明确的属性,我们可以使用强制属为了使指令中存储单元操作数具有明确的属性,我们可以使用强制属性操作符性操作符PTRPTR。其一般格式为:。其一般格式为:数据类型数据类型PTRPTR地址表达式地址表达式 其中:数据类型是前面所学的各种数据类型,常用的数据类型有:其中:数据类型是前面所学的各种数据类型,常用的数据类型有:BYTEBYTE、WORDWORD、DWO

36、RDDWORD、NEARNEAR和和FARFAR等。等。为了明确指令中存储单元的属性,可把指令为了明确指令中存储单元的属性,可把指令“MOV BX,1H”MOV BX,1H”可改可改写成:写成:MOV MOV byte ptrbyte ptr BX,1H BX,1H或或 MOV MOV word ptrword ptr BX,1H BX,1H第39页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 在在指令中用操作符指令中用操作符PTRPTR强制后,不管其后的地址表达式原数据类型是什么,在本指强制后,不管其后的地址表达式原数据类型是什么,在本指令中就以令中就以PTRPTR前面

37、的类型为准。前面的类型为准。该强制属性只在本指令有效,是一种临时性的属性,它该强制属性只在本指令有效,是一种临时性的属性,它不会改变原内存单元的定义属性。不会改变原内存单元的定义属性。例如:例如:MOV AX,MOV AX,word ptrword ptr b1 b1;MOV BH,MOV BH,byte ptr byte ptr w1;w1;MOV CH,MOV CH,byte ptrbyte ptr w1+1;w1+1;MOV MOV wordword ptr ptr d1,12H;d1,12H;上面指令中的强制属性是上面指令中的强制属性是临时属性临时属性,它不能改变这些变量在定义时的永久

38、属性。,它不能改变这些变量在定义时的永久属性。第40页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言OPER1 DB?,?OPER2 DW?,?MOV OPER1,0 ;字节指令 MOV OPER2,0 ;字指令OPER1 DB 1,2OPER2 DW 1234H,5678H MOV AX,OPER1+1 MOV AL,OPER2 类型不匹配 MOV AX,MOV AX,WORD WORD PTRPTR OPER1+1 OPER1+1 MOV AL,MOV AL,BYTE BYTE PTRPTR OPER2 OPER2(AX)=3402H (AL)=34H例例第41页,共7

39、8页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言BYTE_ARRAY BYTEWORD_ARRAY DW 50 DUP(?)tos WORD L NEAR LABEL 伪操作:伪操作:BYTE_ARRAY BYTE_ARRAY WORD_ARRAY WORD_ARRAY tos tos 50字0064H0064H 同一个变量可以具有不同的类型属性,除了可以用同一个变量可以具有不同的类型属性,除了可以用PTRPTR来定义外,还可以用来定义外,还可以用LABELLABEL伪操作来定义伪操作来定义 符号名符号名 LABELLABEL 类型类型其中:常用的类型有其中:常用的类型有BYTEB

40、YTE、WORDWORD、DWORDDWORD、NEARNEAR和和FARFAR等等第42页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言4.2.5 表达式赋值伪操作:表达式赋值伪操作:等价语句的一般使用格式如下:等价语句的一般使用格式如下:符号名符号名EQUEQU表达式表达式作用是左边的符号名代表右边的表达式。作用是左边的符号名代表右边的表达式。注意:注意:等价语句不会给符号名分配存储空间,符号名不能等价语句不会给符号名分配存储空间,符号名不能与其它符号同名,也不能被重新定义与其它符号同名,也不能被重新定义例例 ALPHA EQU 9BETA EQU ALPHA+18BB

41、 EQU BP+8第43页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 汇编语言提供了用等号汇编语言提供了用等号 “=”=”来定义符号常数的方法,即可用来定义符号常数的方法,即可用符号名代表一个常数。其一般格式如下:符号名代表一个常数。其一般格式如下:数值表达式在汇编时应该可以计算出数值,它不能含有向前引数值表达式在汇编时应该可以计算出数值,它不能含有向前引用的符号名称。用的符号名称。用等号语句定义的符号可以被重复定义用等号语句定义的符号可以被重复定义。例如:例如:ABC=10+200 ABC=10+200*5 5 ;ABC ;ABC的值为的值为10101010ABC1=

42、5 ABC1=5*ABC+21 ABC+21 ;ABC1 ;ABC1的值为的值为50715071COUNT=1COUNT=1 ;COUNT ;COUNT的值为的值为1 1COUNT=2COUNT=2*COUNT+1COUNT+1;COUNT;COUNT的值为的值为3 3EMP=7EMP=7EMP=EMP+1EMP=EMP+1第44页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言4.2.6 地址计数器与对准伪操作:地址计数器与对准伪操作:1.地址计数器地址计数器$:保存当前正在汇编的指令的地址保存当前正在汇编的指令的地址 ORG$+8 ;跳过8个字节的存储区 JNE$+6 ;

43、转向地址是 JNE指令 的首址+6 JMP$+2 ;转向下一条指令$用在伪操作的参数字段:用在伪操作的参数字段:表示地址计数器的当前值表示地址计数器的当前值 ARRAY DW 1,2,$+4,3,4,$+4 00H00H 01H 00H 02H 00H 7CH7CH 00H00H 03H 00H 04H 00H 82H82H ARRAY ARRAY 007E007E007800780074007400760076007A007A第45页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言v 地址计数器地址计数器$:保存当前正在汇编的指令的地址。保存当前正在汇编的指令的地址。例:例

44、:又假定又假定ARRAY分配的偏移地址为分配的偏移地址为0074,则存储区分配情况如图所示。则存储区分配情况如图所示。0 00 20 07 C0 00 30 00 40 1ARRAY00740 08 20 00078007E0078+4=007C007E+4=0082第46页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 SEG1 SEGMENT SEG1 SEGMENT ORG 10ORG 10 VAR1 DW 1234H VAR1 DW 1234H ORG 20ORG 20 VAR2 DW 5678H VAR2 DW 5678H ORG$+8 ORG$+8 VAR3 D

45、W 1357H VAR3 DW 1357HSEG1 ENDSSEG1 ENDSBUFFER LABEL BYTEBUFFER LABEL BYTE ORG$+8 ORG$+8 BUFFER DB 8 DUP(?)BUFFER DB 8 DUP(?)ORG 100HSTART:2.ORG 伪操作伪操作 伪指令的作用是:伪指令的作用是:告诉汇编程序,本伪指令下面的内存变告诉汇编程序,本伪指令下面的内存变量从该量从该“数值表达式数值表达式”所指定的地址开始分配。所指定的地址开始分配。第47页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言ORG 数值表达式数值表达式伪指令的作用是:

46、告诉汇编程序,本伪指令下面伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量从该的内存变量从该“数值表达式数值表达式”所指定的地址开所指定的地址开始分配。始分配。如:如:DATA SEGMENT ORG 10 VECT1 DW 47A5H ORG 20 VECT2 DW 0C596H DATA ENDS A 54 7VECT10AH14H9 6C 5VECT2第48页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言B DW 2 DUP (?)A DB morning EVEN3.偶对齐伪指令偶对齐伪指令EVEN 偶对齐伪指令格式:偶对齐伪指令格式:EVENEVEN 伪指令的

47、作用是:告诉汇编程序伪指令的作用是:告诉汇编程序(Assember)(Assember),本伪指,本伪指令下面的内存变量令下面的内存变量从下一个偶地址单元开始分配从下一个偶地址单元开始分配。第49页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言4.对齐伪指令对齐伪指令ALIGN 对齐伪指令格式:对齐伪指令格式:ALIGN ALIGN NumNum其中:其中:NumNum必须是必须是2 2的幂,如:的幂,如:2 2、4 4、8 8和和1616等等。伪指令的作用是:伪指令的作用是:告诉汇编程序,本伪指令下面告诉汇编程序,本伪指令下面的内存变量必须从下一个能被的内存变量必须从下一

48、个能被NumNum整除的地址开始分整除的地址开始分配。配。例:ALIGN 4ALIGN 4 ALIGN 2 ALIGN 2 ;EVEN第50页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言4.2.7 基数控制伪操作:基数控制伪操作:.RADIX 表达式表达式 ;规定无标记数的基数MOV BX,0FFHMOV BX,178.MOV BX,0FFMOV BX,178D第51页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言 4.3 汇编语言程序格式汇编语言程序格式伪指令语句格式如下:伪指令语句格式如下:符号名符号名 伪指令符伪指令符 操作数操作数 ;注释;注释

49、 符号名符号名:符号名是伪指令语句的一个可选项。:符号名是伪指令语句的一个可选项。伪指令符伪指令符:伪指令符指定汇编程序要完成的具体操作,如:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令数据定义伪指令DB、DW、DD,段定义伪指令,段定义伪指令SEGMENT,假定伪指令假定伪指令ASSUME等。等。操作数操作数:伪指令后面的操作数可以是常数、字符串、变量、:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必表达式等,其个数由具体的伪指令决定,各个操作数之间必须以须以“逗号逗号”分隔。分隔。注释注释:伪指令的注释必须以:伪指令的注释必须以“

50、;”开始,其作用同指令语开始,其作用同指令语句中的注释部分。如:句中的注释部分。如:DATA DB 10,4,10H;定义一组字节操作数;定义一组字节操作数第52页,共78页。计算机科学与技术系计算机科学与技术系 汇编语言汇编语言4.3.1 名字项名字项名字项可以是标号或变量,它们都是用来表示本语句的符号地址名字项可以是标号或变量,它们都是用来表示本语句的符号地址。v 标号标号:在代码段中定义,后面跟上:在代码段中定义,后面跟上“:”。它有三种属性,即段、。它有三种属性,即段、偏移和类型。偏移和类型。v 变量变量:在数据段或附加段中定义,后面不跟冒号,它也有三种属:在数据段或附加段中定义,后面

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(汇编语言程序格式精选课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|