

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工丈&计算机科学与技术系 扌施汇编语言第 4 章汇编语言程序格式汇编程序功能伪操作汇编语言程序格式汇编语言程序的上机过程工丈&计算机科学与技术系 球施汇编语言4.1汇编程序功能汇编语言程序的建立及执行过程:Edit 等MASMLINK在计算机上运行汇编语言程序的步骤是:用编辑程序(任何一种文本编辑程序)建立ASM文件;用MASM程序把ASM文件转换成OBJ文件;用LINK程序把OBJ文件转换成EXE文件;工丈&计算机科学与技术系 扌施汇编语言用DOS命令直接键入文件名就可执行该程序;汇编程序功能汇编程序的主要功能:检査源程序,给出出错信息。产生目标文件(obj)和列表文
2、件(.1st) o展开宏指令。工女&计算机科学与技术系 扌施汇编语言4.2伪操作伪操作( (伪指令伪指令) )伪操作是汇编程序对源程序进行汇编时处理的 操作,(不像机器指令那样是程序运行期间由计算机来执 行的)完成处理器选择.存储模式定义.数据定义. 存储器分配.指示程序开始结束等功能。处理器选择伪操作段定义伪操作程序开始和结束伪操作数据定义及存储器分配伪操作表达式赋值伪操作地址计数器与对准伪操作基数控制伪操作计算机科学与技术系池汇编语言4.2.1处理器选择伪操作处理器选择伪操作: :这类伪操作一般放在程序的最前面,如不给出,则汇编程 序默认值为.8086o.8086选择8086指令系
3、统.286选择80286指令系统286P选择保护模式下的80286指令系统.386选择80386指令系统386P选择保护模式下的80386指令系统.486选择80486指令系统.486P选择保护模式下的80486指令系统.586选择Pentium指令系统.586P选择保护模式下的Pentium指令系统工女&计算机科学与技术系比汇编语言422段定义伪操作段定义伪操作: :1.完整的段定义伪指令段定义伪操作的格式:段名 SEGMENT 定位类型 1 组合类型使用类型/类别,1;语句序列段名 ENDS1)段名段名是为该段起的名字, 用来指出汇编程序为 该段分配的存储区起始位置。工女曇计算机科
4、学与技术系亦負施汇编语言2)定位方式(1) PARA:表示本段必须从能被16蔓除的地址处开始存放, 即段起始地址最低四位必须是0。(2 ) WORD:表示本段要从一个偶数地址处开始存放,即段 起始地址的最低一位必须是0。(3 ) BYTE:表示本段起始地址可以从任一地址处开始存放.(4 ) PAGE:表示本段要从能被256整除的地址处开始存放, 即起始地址的最低八位必须是0。默认为PARA3)组合方式组合方式有六种类型可供选择。(1) PRIVATE该段为私有段,在连接时将不与其他同名段合并(2) PUBLIC该段在连接时可以把不同模块的同名段相连接而形 成一个段。每一段从小段的边界开始,所以
5、各段之间有小于16个字 节的间隙。(3) COMMON该段在连接时可以把不同模块中的同名段重叠而形 成一个段,由于各同名段有相同的起始地址,所以会产生覆盖。(4) STACK把不同模块的同名段组合而成一个堆栈段。各段之 间没有间隙。(5) MEMORY同PUBLIC(6) AT表达式 使段地址是表达式所计算出来的16位值,CS除外。默认为PRIVATE工女曇计算机科学与技术系亦負施汇编语言矣徽理工丈&计算机科学与技术系球負施汇编语言【例】有两个模块,各模块段定义如下模块2:模块 1:i11DATA1SEGMEKT PARA PUBLIC TATAUDATA1SEGMENTPARA PU
6、BLIC4DATArM2DB 104H DUP (11H)MlDB 45HDUP (0)DATA1ENDSDATA1ENDSDATA2SEGMEFTT PARA COMMONDATA2,DATA2SEGMENT PARA COMMONDATA2,N2DB 105H DUP (0)N1DB 102HDUP (0)DATA2ENDSDATA2ENDSENDDATA3SEGMEKTT1DB 50 DUP (20H)DATA3ENDSEND该段的定位组合方式示意图如图所示。DATA1 段 0000H : OOOOH0Mli0000H : 0044II0空 11 个宇节OOOOH : 0050H11HM
7、2丄i OOOOH : 0153H11H空 12 个宇节DATA2 段 y0016H: OOOOH0N1 和 N2j 0016H : 0104H0空 11 个手节DATA3段0027H : OOOOH20HT1!矣徽理工丈&计算机科学与技术系球負施汇编语言矣徽理工丈&计算机科学与技术系球負施汇编语言-0027H : 004FH20HA#计算机科学与技术系 瘤施汇编语言4)使用类型USE16使用16位寻址方式段长W64KUSE32使用32位寻址方式段长W4G5)类别在引号中给出连接时组成的段组的类型名。在连 接后形成的装入模块中,可使相同类别的段位置靠 在一起。假定伪指令ASSU
8、ME格式;ASSUME段寄存器;段名,段寄存器,段名 功能:建立段寄存器与段之间的对应关系。该伪指令一般 出现在代码段中。DATA1ADATA1CODESEGMENTDB 1, 2, 3ENDSSEGMENTASSUME DS:DATA1, CS:CODE其中段寄存器名必须是CS,DS,ES和SS(对于386及后继机 型还有FS和GS)中的一个。段名必须是由SEGMENT定义的段 中的段名。A#计算机科学与技术系 瘤施汇编语言工丈摩计算机科学与技术系瘤施汇编语言段定义伪操作:完整的段定义格式举例data segment ;定义数据段 data endsextra segment;定义附加段 e
9、xtra ends; ._code segment ;定义代码段assume cs:code, ds:data,es:extrastart:mov ax, datamov ds, ax ;段地址-段寄存器 code endsend start妄徽理工丈摩计算机科学与技术系多施汇编语言工丈摩计算机科学与技术系瘤施汇编语言end startcodesegmcodesegmmain endpcode endsmov ax,4c00h i nt21h:mai n endp:code endsend start计算机科学与技术系扌It丸汇编语言例:一个完整的段定义格式STACKSTACKSEGMENT
10、STACK JE N D S. ;-定义堆栈段s五QE;分配堆栈段的大小DATASEGMENT;定义数据段 ;定义数据DATAENDSCODESEGMENT *CODE;.;定文代码段.ASSUME CS:CODE,DS:DATA, SS:S1ACKSTART:MOV AX, DATAMOV DS, AX;程序开始;程序代码MOV AX, 4C00HINT21H;程序终止,返回 DOSCODEENDS代码段结束2-存储模型与简化段定义伪指令前面介绍了完整的段定义格式,用完整段定义格式虽然可以控制段 的各种属性,但程序员很少使用。现在的汇编程序提供了一种简化的 段定义方式,它使定义段更简单.方便
11、。具体形式如下:MODEL SMALL;定义存储模式.STACK;定义堆栈段.DATA;定义数据段 ;定义数据.CODE;定义代码段.STARTUP;程序起始点,并建立 DS 和 SS 内容 ;程序代码.EXITO;程序结束点,返回 DOS ;子程序END;汇编结束计算机科学与汇编语言xA#计算机科学与技术系 axA#计算机科学与技术系瘤負施汇编语言dsegl segment word public datadsegl endsdseg2 segment word public data dseg2 ends datagroup groupdsegl, dseg2 cseg segment p
12、ara public code assume cs:cseg,ds:datagroup start:mov axfdatagroup mov ds, axmov ax, 4c00h i nt 21hcseg endsend startA#计算机科学与技术系 瘤負施汇编语言data segment wordconstl dw 100 datal endsdata2 varl-data2segment worddw ?endsdatagroup group datal ,data2code segment assume cs:code, ds:datagroupmov ax9datagroup m
13、ov ds, axmov ax, constl mov varl, axmovax,4c00hint21h endsend startcode计算机科学与技术系瘤負施汇编语言TITLEtextNAME STARTUP;定义.EXIT retu;return_value常用0作返回值计算机科学与技术系 瘤施在汇编程序 MASM 中,提供了二组简化的代码伪指令:.STARTUP在代码段的开始, 用于自动初始化寄存器 DS、SS 和SP;:*.EXIT用于结束程序的运行。model small data计算机科学与技术系瘤負施汇编语言423程序开始和结束伪操作;指定列表文件每页打印的标题可以;指出模
14、块的名字j没有表示源程序结束,label指示程序;开始执行的起始标号计算机科学与技术系 瘤施汇编语言变量名助记符 操作数,操作数,;注释1.变量名必须是一个合法的标识符,它可以写,也可以不写;2.助记符用于确定内存单元的数据类型,如:DB(字节)、DW(字)、DD(双字)、DF(6字节).DQ(四字).DT (10字节)。1.操作数是定义内存单元时的初值表达式,一个定义语句可以 有多个初值表达式,各表达式之间必须用逗号 分开; 如果某个存储单元没有初值表达式,则必须用一个问号,?, 来表示;2.在定义语句的后面可以书写注释内容,也可以不写。计算机科学与技术系瘤施例:1424数据1!工丈&
15、;计算机科学与技术系 球施汇编语言例2图例3图DATABYTE TDATA-BYTEDATA_WORD -注:OAH04H10H64H00H00H01HFBHFFH工丈&计算机科学与技术系 球施汇编语言例2图例3图例ARRAY DB HELLOARRAY -48HDW1 t78HDB AB45H56H4CH34HDW,AB4CH12H4FHDW2 T43H例:341H12H42HCDHDW1 DD 12345678H42HABHDW2 DD Oabcdl243H41H【例】DATA1DATA2DATA30A041064000001FBFF3C000000FDFF0000A#计算机科学与
16、技术系瘤施汇编语言DATA1DATA2DATA310d410h工丈&计算机科学与技术系瘤施汇编语言重复说明符DUP从前面的内容里,我们知道了定义少量内存变量的定义形 式,但如果在程序中要说明50个、100个、200个甚至更多的、 同类型的内存变量时,若采用前面所学的方法,对它们一一 加以说明显然是不可行的。为此,汇编语言提供了变量的重 复说明符DUP,其说明的一般形式如下:repeat_count DUP(表达式,表达式,表达式)解释:repeat_count是重复次数,(表达式,表达式,,值,也可以是含义另一个DUP的式子。如果在表达式的括号 中有多个表达式,那么,它们之间要用逗号分
17、开。例:BUF1 DB 2 DUP (0, 1, 2, ?)表达“表达式”可以是存储单元的初工丈&计算机科学与技术系球施汇编语言工丈&计算机科学与技术系瘤施汇编语言BUF2 DB100100个字节计算机科学与技术系 $負施汇编语言强制属性操作符PTR在程序中,我们有时需要对同一个存储单元以不同的属 性来访问,或对一些不确定的存储属性需要显式指定等, 这时,我们就需要强制属性操作符PTR.该操作符的作用有 点象C语言中的类型强制方法.对于指令:MOV BX, 1H,其目标操作数BX是寄存 器间接寻址方式,它指向一个存储单元.在作传送操作时, 是把“1H”扩展成8位作字节传送,还是
18、扩展成16位作字传 送呢?这就使该指令具有二义性,因为BX指向的存储单 元可以字节或字的首地址.含有该指令的程序在汇编时, 可能会产生警告或出错信息.例如:buffer -1.B从上面的例子可看出:用DUP说明内存变量相当于在高级语言中定义数组。画出存储单元的分配图,计算分配字节数计算机科学与技术系汇编语言 100字节工丈&计算机科学与技术系 凉施汇编语言为了使指令中存储单元操作数具有明确的属性,我们可以使 用强制属性操作符 PTR。其一般格式为:数据类型 PTR 地址表达式其中:数据类型是前面所学的各种数据类型,常用的数据类 型有:BYTE、WORD、DWORD、NEAR 和 FAR
19、 等.为了明确指令中存储单元的属性,可把指令“MOV BX, 1H”可 改写成:MOV byte ptr BX, 1H或MOV word ptr BX, 1H工女$计算机科学与技术系凉It施汇编语言在指令中用操作符 PTR 强制后,不管其后的地址表达式原数据类型是什么, 在本指令中就以 PTR 前面的类型为准。该强制属性只在本指令有效,是一种临 时性的属性,它不会改变原内存单元的定义属性例如:W1DW 1234H, 5678HB1DB 2DB 5D1DD 23456789HMOV AX, word ptr bl;把肌开始的二个字节拼接成一个字,执行后,(AX)=O5O2HMOV BH, byt
20、e ptr wl:把字的低字节传送给BH,执行后,(BH) =34HMOV CH, byte ptr wl+1;把字Wl的高字节传送给CH,执行后,(CH)=12HMOV word ptr dl, 12H;把双字DI的低字修改成0012H,执行后,(DI) =23450012H上面指令中的强制属性是临时属性,它不能改变这些变量在定义时的永久 属性。工丈$计算机科学与技术系 扌施汇编语言LLABELNEAR0PER1 DB ?, ?0PER2 DW ?, ?MOV OPER1, 0;字节扌旨令MOV OPER2 , 0;字指令OPERlOPER2DBDW1, 21234H, 5678HMOVAX
21、,OPER1+1XMOVAL,0PER2X类型不匹配MOVAX,WORD PTROPER1+1MOVAL,BYTE PTROPER2(AX)=3 402 H(AL)=3 4H计算机科学与技术系 瘤施汇编语言 LABEL伪操作:同一个变量可以具有不同的类型属性,除了可以用PTR来定义外,还可以用LABEL伪操作来定义符号名LABEL类型BYTE_ARRAY TWORD_ARRAY -其中:常用的类型有BYTE、WORD、DWORD. NEAR和FAR等BYTE_ARRAYLABELBYTEWORD_ARRAYDW50 DUP (?)tosLABELWORDtos T0064HA#计算机科学与技术
22、系 汇编语言4.2.5表达式赋值伪操作:等价语句的一般使用格式如下:符号名EQU表达式作用是左边的符号名代表右边的表达式。注意:等价语句不会给符号名分配存储空间,符 号名不能与其它符号同名,也不能被重新定义例ALPHA EQU 9BETA EQU ALPHA+18BBEQU BP+8汇编语言提供了用等号来定义符号常数的方法,即可用 符号名代表一个常数。其一般格式如下:符号名=数值表达式数值表达式在汇编时应该可以计算出数值,它不能含有向前引 用的符号名称。用等号语句定义的符号可以被重复定义。例如:ABC = 10 + 200 * 5; ABC 的值为 1010ABC1 = 5 * ABC + 21: ABC1 的值为 5071COUNT = 1; COUNT 的值为 1COUNT = 2*C0UNT + 1 ; COUNT 的值为 3EMP = 7计算机科学与技术系球負池汇编语言A#计算机科学与技术系瘤It比汇编语言EMP = EMP+1A#计算机科学与技术系瘤It比汇编语言426地址计数器与对准伪操作:1地址计数器$:保存当前正在汇编的指令的地址$用在伪操作的参数字段:表示地址计数器的当前值ARRAY DW 1,2,$+4,3,4,$+4矣徽理工丈曇计算机科学与技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件产品升级售后服务措施
- 小学英语教师心理健康教育计划范文
- 水利工程建设中的施工重点及难点措施
- 国画作品赏析与分享活动计划
- 装修工程成品保护措施与施工管理
- 高级护工考试试题及答案
- 大学测绘考试试题及答案
- 在线诊断考试试题及答案
- 高一模拟考试试题及答案
- 房建考试试题及答案
- 有色金属冶金概论总论
- 砂石料单价编制
- 海藻学知到章节答案智慧树2023年烟台大学
- 六年级下册道德与法治期中测试卷含答案【考试直接用】
- EIM Book 1 Unit 11 Promise,promise单元知识要点
- 全陕西师范大学《716文学综合》考研真题详解下载全
- 引航梯的位置和标识及保养记录
- 外科学急性化脓性腹膜炎
- 苯酚的分子组成和结构课件
- 《罗织经》全文及翻译
- GB∕T 26077-2021 金属材料 疲劳试验 轴向应变控制方法
评论
0/150
提交评论