微机原理与接口技术ch_第1页
微机原理与接口技术ch_第2页
微机原理与接口技术ch_第3页
微机原理与接口技术ch_第4页
微机原理与接口技术ch_第5页
已阅读5页,还剩138页未读 继续免费阅读

下载本文档

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

文档简介

1、中国科学技术大学电子工程与信息科学系内容4-0 概述4-1 汇编语言程序格式4-2 MSAM中的表达式4-3 伪指令语句4-4 DOS系统功能调用和BIOS中断调用4-5 程序设计方法4-6 宏汇编和条件汇编中国科学技术大学电子工程与信息科学系4-0 概述汇编语言是面向CPU指令系统的,用指令助记符、 符号地址、标号等构成的程序设计语言。用汇编语言编写的程序称为汇编语言(源)程序。 汇编语言程序要比用机器指令编写的程序容易理解和维护,但CPU不能直接识别。汇编语言程序的主要特点与机器相关,能够直接针对和根据系统硬件特性编写 高质量的应用程序。程序目标代码占有内存少,执行速度快,效率高,适 用于

2、实时控制、实时数据处理和实时通信。程序编制和调试复杂,不易移植,无法跨平台。中国科学技术大学电子工程与信息科学系汇编程序:能将汇编语言程序翻译成CPU能识别机器指令序列的翻译程序。汇编程序的主要作用和功能将源程序翻译成机器语言程序。按用户要求自动分配存储区域(如程序代码区、数 据区等) 。自动地把各种进制数 Æ 二进制数。把字符 Æ ASCII码。计算表达式的值。自动对源程序进行检查,指出语法错误(如非法格 式、未定义的助记符、标号、漏掉操作数等)。两者易混淆中国科学技术大学电子工程与信息科学系汇编程序种类基本汇编:ASM(也称为小汇编)宏汇编:MASM(有各种版本,还支持

3、宏操作,条 件汇编,协处理命令等)。TASM:Turbo编速度更快。Assembler,功能同MASM,汇OPTASM:Optimizing的MASM。调试工具Assembler, 一种优化DEBUG、CV(CodeView)、TD(TurboDebug)等。中国科学技术大学电子工程与信息科学系汇编语言程序编写环境(上机实验)用户开发的程序:ABC.exe等操作系统:DOS系统编辑器:EDIT.exe 编译程序:MASM.exe 连接程序:LINK.exe调试程序:DEBUG.exe应用软件系统软件硬件CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备中国科学技术大学电子工程与信息科

4、学系汇编语言上机过程D:>EDITABC.asmY有汇编错误信息N?D:>MASMABC有语法错,回EDIT下改程序D:>LINKABCY?有连接错误信息N有错,回到EDIT下改程序D:>ABC运行结果错,回EDIT下改程序或在DEBUG下调试,找原因 。D:>DEBUG ABC.exeY运行结果正确N用DEBUG调试程序查错?N?Y找到原因用DEBUG 调试可执行程序D:>sub>DEBUG ABC.EXE装入可执行程序到内存, 并执行D:>sub>ABC形成可执行程序 ABC.EXE连接目标程序 LINK ABC.OBJ形成目标程序 A

5、BC.OBJ汇编源程序 MASMABC.ASM编辑源程序 EDITABC.ASM下一程序中国科学技术大学电子工程与信息科学系汇编语言程序示例例:在屏幕上显示并打印字符串“This is a sample pro.”DATASEGMENT;数据段This is a sample program 0DH,0AH, DA1DB DBDATA STACKENDS SEGMENTPARA STACK STACK 100 DUP(?);堆栈段ST1 ENDSDBSTACK CODE MAINSEGMENT PROC FARASSUME CS:CODE,DS:DATA,SS:STACK;代码段START:M

6、OV MOV。RET ENDP ENDS ENDAX,STACK SS,AX;送堆栈段地址MAIN CODESTARTP124例4.1代码段堆栈段数据段中国科学技术大学电子工程与信息科学系汇编语言程序组成和特点1. 源程序由若干个逻辑段组成,并按逻辑段组织源程序,包括: 代码段必不可少,源程序至少有一个代码段。 堆栈段建立一个堆栈区,以存放中断时的断点地址,子程序调用时断点地址及子程序间传递参数。 数据段和附加数据段用来在内存中建立一个适当容量的工作区用以存放数据。2. 每段由段定义伪指令SEGMENT开始,以ENDS结束,用段名区分不同的段。段定义语句的格式如下:中国科学技术大学电子工程与信

7、息科学系;段名1G语句1NT分类名; 段的开始位类型语句2ENDS段名1; 段的结束;段名2SEGMENT ENDS分类名; 另一段开始定位组合段名2; 另一段结束;其它段;END;源代码结束段定义语句中国科学技术大学电子工程与信息科学系在代码段起始处,用ASSUME伪指令说明各个段寄存器与逻辑段的关系,并在程序起始处设置段寄存器的初值(代码段CS除外,其地址由计算机自动分配)。设置段寄存器的具体语句是:3.MOV MOV MOVMOVAX,STACKSS,AX AX,DATA DS,AX;获取堆栈段地址:堆栈段基址送SS;获取数据段地址;数据段基址送DS注:STACK和DATA是段定义伪指令

8、的段名每段由若干语句行组成,每行只有一条语句且不能超过128个字符,允许有后续行。整个源程序以END结束,它通知汇编程序停止汇编。END后的START标号为程序运行时的起始地址。4.5.中国科学技术大学电子工程与信息科学系本例的程序为一可由DOS调用的过程。过程由过程 定义伪指令PROC EDNP实现。由DOS调用的程序在执行完毕后要返回DOS操作系 统。有两种返回DOS方式: 在程序开始部分使用如下语句:6.7.PUSHMOV PUSHDSAX,0 AX将DS的内容和0压入堆栈,程序结束时返回DOS系统(应该先设置堆栈)。 在程序结束前使用调用号为4CH的DOS功能调用指令:MOVINTAH

9、,4CH21H;或MOVAX, 4C00H;软件中断,DOS功能调用有关DOS功能调用也是本章讨论的主要内容之一。中国科学技术大学电子工程与信息科学系内容4-0 概述4-1 汇编语言程序格式4-2 MSAM中的表达式4-3 伪指令语句4-4 DOS系统功能调用和BIOS中断调用4-5 程序设计方法4-6 宏汇编和条件汇编中国科学技术大学电子工程与信息科学系汇编语言程序含三种指令语句:指令性语句、伪指令语句和宏指令语句。(1)指令性语句:可执行语句,对应CPU指令系统规定的一条指令。汇编时产生一一对应的机器目标代码。(2)伪指令语句:又称为指示性语句。汇编时给汇编程序提供与硬件有关的汇编信息,并

10、指示汇编程序进行汇编操作,本身不产生目标代码。(3)宏指令语句:是一种特殊的伪指令,实际上是用一条伪指令代替多条指令,以简化书写。有关宏指令将在4.6节介绍。中国科学技术大学电子工程与信息科学系(1)指令性语句一般格式:标号: 指令助记符操作数1,操作数2;注释标号为本条指令符号地址,表示该指令的目标代码在内存中的存放地址。标号可以省略,但是标 号后面必须带冒号“:”。指令助记符关键字,不能省略操作数有些指令没有,有些指令有1个或多个。多个操作数之间用逗号“,”隔开。操作数可以是常数、 寄存器、存储器、变量、标号或表达式等。注释可省略,前面用“;”标注,汇编不处理。中国科学技术大学电子工程与信

11、息科学系(2)伪指令语句一般格式:名字 伪指令指示符 操作数,操作数;注释名字可为变量名、过程名、段名、常量名、宏名等。名字可省略,名字后面不能带冒号“:”。 伪指令指示符汇编程序(如MASM、TASM等) 规定的符号。常用的有变量定义语句、符号定义语句、等等。伪指令将在4-3介绍。操作数根据伪指令要求,有些没有,有些有1个或多个,多个操作数之间用“,”隔开。操作数可以是常 数、变量、字符串、表达式等。注释与指令性语句相同。中国科学技术大学电子工程与信息科学系关于指令和伪指令语句中的操作数操作数可以是常数、寄存器、存储器、变量、标号或表 达式等。其中常数、变量和标号是三种基本数据项,表 达式在

12、下一节介绍。1)常数:无属性的确定的数据,可用多种进制表示,其中可打印的ASCII码必须用单引号 括起来。2)变量:常指存放在内存中的数值,在程序运行过程中可被修改。变量有三个属性:(1) 段值(SEGMENT)(2) 段偏移地址(OFFSET)(3) 类型(TYPE),即长度属性。有字节型变量(BYTE)、字变量(WORD)及双字变量(DWORD)等。中国科学技术大学电子工程与信息科学系3)标号:指令语句的地址符号,可作为JMP指令和调用指令CALL的目标操作数,以确定程序转向的目标地址。标号有三个属性:(1) 段值(SEGMENT):标号所在段的段基址。(2) 段内偏移地址(OFFSET)

13、:偏移地址(3) 类型:指转移指令的可转移距离,即距离属性。其中:近标号(NEAR),指针长度2字节,只能段内调用或转移。NEAR可以省略不写。远标号(FAR),指针长度4字节,可作为其它代码段的目标地址,实现段间调用或转移。中国科学技术大学电子工程与信息科学系内容4-0 概述4-1 汇编语言程序格式4-2 MSAM中的表达式4-3 伪指令语句4-4 DOS系统功能调用和BIOS中断调用4-5 程序设计方法4-6 宏汇编和条件汇编中国科学技术大学电子工程与信息科学系表达式:由常数、变量或标号和运算符连接而成的式子运算对象运算符表达式汇编算结果为语句中操作数运算对象:常数、变量、标结果操作数:常

14、数或地址( 量或标号)ABC变量PROG标号data1data2code1code2中国科学技术大学电子工程与信息科学系宏汇编MASM中使用了六类运算符(教材P128表4-1)1.算术运算符2.逻辑运算符3.关系运算符也称为分析运算符4.数值返回运算符5.修改属性运算符也称为合成运算符6.其它运算符中国科学技术大学电子工程与信息科学系1. 算术运算符、×、/、MOD、SHL、SHR例:MOVAX,6×8;汇编后生成 MOVAX, 48数值表达式中可使用所有算术运算符用+、两种算术运算符标号或变量±常量形式,运算结果仍地址表地址表式常为标号或变量,其3个属性中的类型

15、及段基址属性不变,仅修改了偏移量属性。例:PLACE2×3 ;若PLACE与某存贮单元地址相关, 则PLACE+2×3仍与某存贮单元相关。算术运算符不影响标志位例:MOV AL,80H90H;结果AL10H,CF0中国科学技术大学电子工程与信息科学系2. 逻辑运算符 AND、OR、XOR、NOT实现操作数按位逻辑操作,只能对常数操作,得到结果也是常数。例: MOVAX,80H OR 70H ;汇编后 MOVAX,0F0H注:逻辑运算符与逻辑指令助记符形同意不同。作为指令助记符时,是在程序运行时被执行,操作对象可以是寄存器或存储器操作数。作为运算符时,是在程序汇编时由汇编程序

16、计算的,计算结果充当指令的某一个操作数或构成操作数的部分。(P129例4-4)中国科学技术大学电子工程与信息科学系3. 关系运算符 EQ、NE、LT、GT、LE、GE在两个无符号操作数之间进行大小关系比较。两个操作数必须同是数值或同是一个段内的两个存储器地址。关系不成立(为假)则结果为“0”(假: 0);若关系成立(为真)则结果为全“1” (真:0FFH或者0FFFFH);结果值在汇编时获得。P130例4-5中国科学技术大学电子工程与信息科学系4. 数值返回运算符(分析运算符)OFFSET、SEG、 TYPE、LENGTH、SIZE用于获取偏移量、段基址或类型、长度等属性; 说明:OFFSET

17、格式:OFFSET变量或标号OFFSET的返回值就是变量或标号的偏移地址。例:MOVAX,OFFSET DATA1汇编程序将变量DATA1的偏移地址送到AX中(相当于指令LEAAX,DATA1)SEG格式:SEG变量或标号其功能是取变量或标号的段基址(P130例4.7)中国科学技术大学电子工程与信息科学系TYPE格式:TYPE变量或标号其功能是取标号或变量的类型。TYPE后面若是标号,返回值为标号的距离属性NEAR(1)或FAR(2);TYPE后面若是变量,返回值是变量的类型属性1(字节) 、2(字) 、4(双字)或8(四字)。LENGTH格式:LENGTH变量当变量中使用DUP时,LENGT

18、H返回该变量所包含的基本单元数;对于其它变量返回值为1。SIZE格式:SIZE 变量(P131例4.9)用于取分配给变量的字节个数。 显然有:SIZE LENGTH × TYPE(P131例4.10)中国科学技术大学电子工程与信息科学系5. 修改属性运算符 段寄存器名:、PTR、THIS、HIGH、LOW、SHORT用于修变量和标号(即所谓存储器类型操作数)的属性(段属性、偏移地址属性和类型属性等)。说明:段寄存器名“:”即段超越PTR格式:新类型PTR原操作数其功能是将PTR左边的类型/距离属性赋予右边的变量数类型匹配。PTR修或标其目的是为了保证改属性是临时性的仅在当前指令(语句

19、)有效。中国科学技术大学电子工程与信息科学系THIS格式:变量/标号 EQU THIS新类型其功能是将EQU THIS右边的类型/距离属性赋予左边的变量或标号,该变量或标号的段地址和偏移地址与 下一个存储单元相同。(P132例4.13、例4.14)SHORT格式:SHORT标号其功能用于说明转移类指令的转移目的地址属性,限制转移范围在-128+127之间。HIGH、LOW格式:HIGH/LOW变量或标号又称为字节分离运算符,对一个数或地址表达式,HIGH从中分离出高位字节,LOW分离出低位字节。(P133例4.16)中国科学技术大学电子工程与信息科学系6. 其它运算符、·、<

20、>、MASK、WIDTH()、说明:()改变运算优先级,()中的运算符具有最高的优先级。建议尽可能多地利用()。1)地址表达式;如:MOVCLBX;2)表示多重变量(数组)的下标值,(P134例4-18)。>在结构中专用,将在4.3中介绍·、<MASK、WIDTH记录中专用。中国科学技术大学电子工程与信息科学系汇编运算符总结:算术运算符 逻辑运算符 关系运算符 数值返回运算符 +、-、*、/、MOD、SHL、SHRAND、OR、XOR、NOTEQ、NE、LT、LE、 GT、GE OFFSET、SEG、 TYPE、LENGTH、SIZE段寄存器名:、PTR、THIS、

21、SHORT、 HIGH、LOW( )、 、·、< >、MASK、WIDTH修改属性运算符 其它运算符 中国科学技术大学电子工程与信息科学系7.运算符和操作符的优先权等级 P134表4-3优 先 级运 算 符 和 操 作 符高低1()、 、< >、LENGTH,SIZE,WIDTH,MASK2PTR,OFFSET,SEG,TYPE,THIS,段寄存名: (加段前缀)3HIGH,LOW (操作数高、低字节)4,(单目)5*,/,MOD,SHL,SHR6,(双目)7EQ,NE,LT,LE,GT,GE8NOT9AND10OR,XOR11SHORT中国科学技术大学电子工

22、程与信息科学系汇编语言程序示例:多个连续字节单元的累加DATAD1 CCSUMDATASEGMENTDB 5 DUP(?) EQU $D1;定义数据段;定义连续的字节单元;对单元计数,CC等于常量5;定义字变量SUM,保留结果;数据段定义结束定义存储单元的数据的伪指令DW0ENDSSTACK SEGMENTPARASTACK STACK;100字节的栈空间;堆栈段定义结束;定义代码段;定义堆栈段DB100 DUP (?)定义堆栈STACK ENDSCODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODE;对各段进行说明BGN: MOV AX,DATAMOV DS,A

23、XLEA SI,D1; DS初始化为DATA;预置源数据的指针中国科学技术大学电子工程与信息科学系MOV CX,CCLODS BYTE PTR SI MOV AH,0CLCADC SUM,AX LODS BYTE PTR SI LOOP AGMOV AH,4CHINT 21H;预置次数;取一个数并修改指针;清AX的高字节;清CF位;累加;再取数并修改指针;控制循环;完成,利用DOS中断AG:;调用返回DOSCODE ENDSEND;代码段结束;整个程序结束BGN中国科学技术大学电子工程与信息科学系内容4-0 概述4-1 汇编语言程序格式4-2 MSAM中的表达式4-3 伪指令语句4-4 DOS

24、系统功能调用和BIOS中断调用4-5 程序设计方法4-6 宏汇编和条件汇编中国科学技术大学电子工程与信息科学系伪指令语句类型数据定义语句表达式赋值语句段定义语句段分配语句过程定义语句程序开始和结束语句1.2.3.4.5.6.基本常用语句复杂数组定义语句群定义语句结构定义语句记录定义语句I.II.III.中国科学技术大学电子工程与信息科学系一、数据定义语句定义存储器单元的伪指令。为程序分配指定数目的存储单元,并根据情况进行初始化。这类伪指令类似高级语言中的变量定义,因此指令中定义的标识符就是所谓的变量名。格式1:变量名格式2:变量名助记符: DBDDDT助记符助记符操作数,操作数,nDUP (操

25、作数,)DWDQ定义字节定义双字定义十字节定义字定义四字中国科学技术大学电子工程与信息科学系变量名 用符号表示,可作为其后的第一个基本存储单元的符号地址,也可以省略。操作数 常数,字符串,变量,标号,表达式nDUP() n为整数,表示括号中操作数重复次数。注意: 定义多字节字符串必须用DB,DW只允许包含两个字符。 使用DUP可在数据段中预先定义足够的不确定值变量,为保存运算结果预留存储空间。 DW和DD可将变量或标号的逻辑地址存入存储器(教材P136例4-23)。中国科学技术大学电子工程与信息科学系例1:STT M1M2DB DWDBHow are you?10 DUP (?)4 DUP (

26、1,3 DUP(0AH);DUP嵌套ADR1 MOV MOV MOV汇编后DD STTAX,WORD PTR ADR1+2 DS,AXSI,WORD PTR ADR1;STT段址和偏移量ÆADR1;高位地址是STT段址;低位地址是STT偏移量M1为20个字节的连续地址变量,M1为第一个字节的首地址。M2为:1,0AH, 0AH, 0AH, 1,0AH, 0AH, 0AH, 1,0AH, 0AH, 0AH, 1,0AH, 0AH, 0AHDSSEG STSI=OFFSETSTT中国科学技术大学电子工程与信息科学系DBYTE例2:设数据段的起始地址为02000HARRAYDWORDDAT

27、A DBYTE DWORD DDWORD DQWORD DBSDWS DWOFF ARRAY ARRAY2 ARRAY3DATASEGMENTDB DW DD DQ DB DW DW DB DWDB10,10H100,100H12345678HDDWORDARRAY2100个字DQWORD1234567890ABCDEFH ABABOFFSET DWORDARRAY3重复20次2DUP(0,1,2)DBS100DUP(?)DWS20 DUP(0,1,4 DUP(2),5)DWOFFENDS000102000102:0001020202020500010202020A10640000017856

28、3412EFCDAB9078563412414242410200中国科学技术大学电子工程与信息科学系DATASEGMENT;设DS=1234HX1 X2 X3 X4 X5 X6 X7 CNT Y1 ENDSDB12H,0ABH 12AB 12ABHAB X1 X212345678HDB DW DW DD DW DD EQU DB;这里不能用DW;尽量少用;X1的段基址:偏移量;X2的偏移量共重复6次$-X6;常量6,不占存储单元CNT DUP (?,1,2 DUP (0FFH)DATA例3:X500H00H34H12HX602H00HX778H56H34H12HX112H0ABHX231H32

29、H41H42HX30ABH12HX442H41HY1?01H0FFH0FFH?01H0FFH0FFH?01H0FFH0FFH?01H0FFH0FFH中国科学技术大学电子工程与信息科学系二、表达式赋值语句表达式赋值语句有以下两种,均不占内存。1)赋值伪指令格式:符号 EQU表达式;给右边的表达式定义一个符号名,一经定义在同一程序中不能再重新定义。指令PURGE 符号可以解除对符号的赋值。2)等号伪指令格式:符号 表达式与EQU功能相同,区别在于左边符号允许重新定义。(教材P137P138,例4-25、4-26)中国科学技术大学电子工程与信息科学系三、段定义和段分配语句1)段定义语句格式:段名 S

30、EGMENT.组合 分类名定位类型ENDS段名A)定位类型表示对段起始边界的要求,即对段首地址定位。此参数缺省,则定位于节边界。 PAGE-定位于页边界(n*256) PARA定位于节边界(n*16)(*00000000B)(*0000B)(*0B) WORD-定位于字边界 BYTE-定位于存储器任何字节中国科学技术大学电子工程与信息科学系B)组合类型:告诉连接程序本段与(其它模块的)其它段的关系。(1)(2)NONE本段与其它段在逻辑上不发生关系。PUBLIC连接程序把几个模块的同名段相邻地连接成一个逻辑段,次序由连接命令指定,地址由低到高同时满足定位要求。(3)COMMON该段在有相同的起

31、始地址,接时与其它模块的同名段内存中以覆盖方式存放,度。COMMON段使共享。连接长度为各分段的最得不同模块之间的数据中国科学技术大学电子工程与信息科学系(4)AT以表达式的值为该段基址(代码段不允许使用)。STACK指定堆栈段,在堆栈段不能省略。MEMORY作用与COMMON类似。区别在于第一个带MEMORY参数的逻辑段覆盖在其它同名段的最上面,其它带此参数的同名段按照COMMON方式处理。(5)(6)C)类别或分类名。长度小于40字符并以括起来。汇编程序连接时将把具有相同分类名的逻辑段集中组成一个段组。中国科学技术大学电子工程与信息科学系2)段分配语句格式:ASSUMECS:段名, DS:

32、段名 , SS:段名 , ES:段名功能和使用方法:定义4个逻辑段,指明段与段寄存器的关系。段名必须是SEGMENTENDS定义过的。ASSUMENOTHING取消前面ASSUME指定的段寄存器。四个段不一定全部定义,代码段和数据段必须定义。ASSUME只是指定某段分配给何寄存器,并不能将段 地址装入段寄存器。仅CS在分配时自动装入。中国科学技术大学电子工程与信息科学系本章开始处的汇编语言程序示例例:在屏幕上显示并打印字符串“This Is a sample pro.”DATASEGMENT;数据段 This Is a sample program 0DH,0AH, DA1DB DBDATA

33、STACKENDS SEGMENTPARA STACK STACK 100 DUP(?);堆栈段ST1 ENDSDBSTACK CODE MAINSEGMENT PROC FARASSUME CS:CODE,DS:DATA,SS:STACK;代码段START:MOV MOV。RET ENDP ENDS ENDAX,STACK SS,AX;送堆栈段地址MAIN CODESTART中国科学技术大学电子工程与信息科学系四、过程定义语句格式:过程名 PROC.属性RETN过程名 ENDP说明:过程名三属性:段基地址、偏移地址、距离。RETN返回后从栈顶开始再弹出N个字节丢弃。一个过程可能有多个RET,

34、即过程有多个出口。过程允许嵌套和递归调用(被调用的过程在返回前又 调用过程本身)。调用过程时注意保护,退出时注意恢复。读程序:P141例4.28中国科学技术大学电子工程与信息科学系五、程序开始和结束语句1) NAME伪指令格式:NAME程序名功能和使用方法:为源程序汇编输出的目标模块赋名。NAME为伪指令助记符,置于程序开始处, 在输出源程序列表文件时,将在每页开头打出程序名。若省略汇编则将源文件名作为目标模块的名字。中国科学技术大学电子工程与信息科学系2)指定地址伪指令ORG背景:在汇编程序中,有一个软件计数器(LC)地址计 数器。在每个段定义开始处,它被复位为0。当汇编程序逐行扫描语句时,

35、用LC保存当前指令的地址。ORG伪指令的功能:强行指定地址计数器LC的当前值, 在段内改变它以后的代码或数据存放的偏移地址。格式1:ORG格式2:ORG表达式$+表达式;表达式值 LC;LC当前值$表达;式值 LCORG语句之后段内所有的代码或数据均以表达式(常量)的值为起始偏移量连续存放,除非遇到另一个ORG语句。中国科学技术大学电子工程与信息科学系3)END语句格式:END标号名功能和使用方法:指示源程序结束。END放在程序最后一行。每个模块只有一个END,汇编程到END停止编译,标号名是程序启动地址。中国科学技术大学电子工程与信息科学系六、结构定义语句(*)对于具有类似数据库表结构的复杂

36、数组,汇编程 序提供了结构定义伪指令以及记录定义伪指令。结构定义和使用三个步骤:1)结构定义;2)副本预置;3)结构的使用(引用)。与数据库的类比关系:结构数据库中的某个表结构结构副本表中的一条记录变量某条记录中的一个字段中国科学技术大学电子工程与信息科学系1) 结构定义格式:STRUC结构名(用DB、DW、DD等定义的结构中的数据变量)ENDS结构名功能:把不同类型的数据放在同一个数据结构中(类似于定义数据库表的各个字段) 结构中的变量类型简单变量:只有一个元素,被引用时可以修改。多重变量:包括多个元素,结构被引用(副本预置) 时不能修改,保持结构定义时初值不变。中国科学技术大学电子工程与信

37、息科学系字符串变量:变量为字符串。被引用时可以用同样长度的字符串对其进行修改(置换)。多重结构:变量本身又是另外一个结构。P145例4-33:定义一个数TAB的结构TABSTRUCT1 T2 T3 T4T5DB DW DWDWABCD?SEG L12 DUP(0;字符串;简单变量;简单变量;多重变量;多重变量DW 1122H,3344HTABENDS中国科学技术大学电子工程与信息科学系2) 结构副本预置结构定义后,汇编时不产生目标代码,也不分配存储空 间。只有在预置结构副本之后,汇编才给每个副本分配 空间,结构中的变量才与存储单元发生关联。格式中允许修改的变量(简单变量和字符串变量)在不 同的

38、结构副本中可以被修改成不同的值。预置结构副本语句格式有两种:格式1:结构名 <元素值,元素值,>副本名;注释格式2:结构名 N DUP(<元素值,元素值,>);注释副本名< >是结构副本预置专用运算符,表示将结构中可以修改的变量改为< >中的数值。< >中无数据表示不修改。中国科学技术大学电子工程与信息科学系例4-34:结构副本元素值的表示:< ><20H><, 352AH><OK, , , 0DH>;副本对结构定义的所有变量不修改。;第一个变量改为20H,后续不变。;第二个变量改为35

39、2AH,其余不变。;修改第一和第四个变量,其余不变。说明:只有简单变量和字符串变量才能被修改。例4-35:对例4-33定义的TAB预置4个结构副本ONE; TAB是AB< >4.33定义的结构名(类似于数据库中的表结; 构,ONE该结构的一个副本名(类似于表中的一条记; 录),ONE保持TAB中所有的变量不变。中国科学技术大学电子工程与信息科学系TWOTAB< STOP >;TWO是另外一个副本名。该副本将第一个变量(字;符串)修改为STOP,其余保持不变。THERETAB< , 0FH, SEG L2>;THERE是第三个副本名。该副本将第二个变量修改;0

40、FH,第三个变量修改为(表达式)SEG L2,其余;保持不变。FOURTAB5 DUP(< EFGH, 55H >);该语句连续预置了5个相同的结构副本。每个副本;第一个变量都是EFGH,第二个变量为55H,其余;不变。问题:多个结构副本中的不同变量如何表示?中国科学技术大学电子工程与信息科学系多个结构副本中的不同变量的表示方法:1) 结构副本名·变量名。例如TWO · T1表示在TWO副本中的T1变量。2) 在类似FOUR的结构副本,FOUR ·Txn用于区别多个相同结构副本中的变量。其中:Tx是变量名;n为下标 值,表示当前结构副本首地址 与 第一

41、个相同的结构副本首地址(第一个字节)之间的字节距离。(P147)预置后的结构副本中的变量的三属性: 段属性:副本中各变量与预置结构副本语句同在一段; 偏移量:副本起始字节偏移量本变量相对偏移量; 类型:由结构定义时确定。中国科学技术大学电子工程与信息科学系TWO TAB <STOP >12010HTWO·T1假设:DS1000H,结构副本ONE的偏移量为22000H。T·W TWO·T3W4个预置的结构副本在存储器4中的地址分配如图。T·TWO·T5ONE TAB < >THERE TAB <,0FH,SEG L2

42、 >12000HONE·12020HTHERE·T1ONE·T2ONE·T3 ONE·T40THERE·T2THERE·T3 THERE·T41ONE·T51THERE·T533BADC00FSEG L20000122344BADC?SEG L10000122344TSPOOSEG L1O0011223344中国科学技术大学电子工程与信息科学系FOUR TAB 5 DUP(< EFGH, 55H >)12030HFOUR·T10FOUR·T20 FOUR&#

43、183;T30 FOUR·T40FOUR·T5012040HFOUR·T110HFOUR·T210H12070HFOUR·T140HFOUR·T240H FOUR·T340H FOUR·T440HFOUR·T540HFÈHG0055SEG L1000011223344FÈHG0055.FÈHG0055SEG L1000011223344中国科学技术大学电子工程与信息科学系结构的使用在汇编语言源程序中,可以通过结构副本名、运算符“·”和下标 对结构副本中的变量进行寻址

44、和操作。例4-36:MOV例4-37:MOVTWO·T2,AXBX,FOUR·T50汇编程序在对源程物理地址,生成CP行编译时计算出变量的识别的目标代码。中国科学技术大学电子工程与信息科学系七、外部伪指令及对准指令1) 外部伪指令外部伪指令用于实现程序和数据在多个模块之间的共享。 格式:PUBLIC 名字 ,名字, ;说明:名字可以是标号、变量名、常数、过程名或由EQU(或)伪指令定义的符号名。功能:由PUBLIC说明的名字是全局的,可以在其它模块中使用(共享)。中国科学技术大学电子工程与信息科学系格式:EXTRN 名字:类型 ,名字:类型,功能:表明本模块中使用的名字在别

45、的模块中定义过,调用 别的模块中使用PUBLIC定义过的名字。EXTRN和PUBLIC配对使用,并且类型一致(P148例4-39)。说明:名字与PUBLIC的要求相同;类型若名字为变量,则类型为BYTE、WORD 等;若名字为标号、过程,则类型为NEAR、FAR; 若名字为常数,则类型为ABS。唉,此例中又没有必要地出现了还没有介绍的LABLE语句。中国科学技术大学电子工程与信息科学系2)对准伪指令格式: EVEN ;功能:将下一条语句的地址调整在偶地址上。P150例4-40DATASEGMENTX1EVEN X2 ENDSDB0DHDW100DUP(?)DATA加EVEN后X2从偶数开始存放,以提高存储器访问速度。$汇编程序表示当前地址计数器的值。前面多次出现,现在终于正式介绍啦!中国科学技术大学电子工程与信息科学系3) LABLE伪指令格式:名称 LABEL类型属性功能:给下一语句中已定义的变量或标号另取一名字,并可重定义类型和属性。使同一变量或标号在不同地方被调用时可采用不同的名字,具有不同的属性。说明:名称下行语句中变量或标号的别名类型与变量连用,可修

温馨提示

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

评论

0/150

提交评论