您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 南京邮电大学 微型计算机原理与接口技术 4_1章
1汇编语言程序设计Ch.4宏汇编语言4.1汇编语言程序的开发过程4.3宏汇编语言的基本语法2第4章宏汇编语言3例:B041B40ECD10B8004CCD21moval,‘A’;显示“A”movah,14int10hmovax,4c00h;返回操作系统int21h4ex1codesegmentparapublic'code‘assumecs:codego:moval,‘A‘;显示“A”movah,14int10hmovax,4c00h;返回操作系统int21hcodeends;代码段结束endgo;模块结束,并给出启动地址end;结束54.1汇编语言程序的开发过程编辑TASM翻译(汇编程序)XX.ASMXX.OBJXX.EXE运行正确?XX.COM链接TLINKNO查找错误(动态调试)TD结束YES64.3基本语法4.3.1源程序结构汇编语言源程序是分段的,一般由若干个段形成一个程序。格式如下:编辑TASM翻译(汇编程序)XX.ASMXX.OBJXX.EXE运行正确?XX.COM链接TLINKNO查找错误(动态调试)TD结束YES7NAME1SEGMENT语句语句┇NAME1ENDSNAME2SEGMENT语句语句┇NAME2ENDS┇NAMEnSEGMENT语句语句┇NAMEnENDSEND84.3.2语句行的构成语句行是由标记及分隔符按照一定的规则组织起来的。1.标记标记是宏汇编语言中有意义的最小单位。标记有下面几种。(1)宏汇编字符集①字母:A,B…Z;a,b…z;②数字:0,1…9;③特殊字符:ASCII码中的其余可打印字符;9④非打印字符:空格,TAB,回车,换行等。注意:紧跟回车,换行的“&”代表一连续行,作空格处理。(2)常量出现在源程序中的固定值称作常量。①数字常量例:1001B,45Q,0FBA9H…②字符串常量例:‘A’,‘Student’…(3)标识符由程序设计者自由创立的有特殊意义的字符串称作标识符。标识符的第一个符号不能是数字。10长度≤31。例:go,go-1;例:abcd…z-1234与abcd…z-12345相同。(4)保留字保留字是汇编程序所用到的字符串,包含助记符,运算符等。112.符号符号本身就是标识符或保留字,符号的属性为汇编程序提供了必要的信息。(1)寄存器符号32位、16位、8位和1位(2)变量值是可以改变的量。变量存放在数据段。它在程序中以存储单元地址符号的形式出现。所有变量有3种属性:段值,偏移量,类型。12例:VAR1DB16,32,88它所对应的段是数据段,VAR1=16,VAR1+1=32,…(3)标号标号定义在代码段。它是指令或常量存放单元的符号地址。标号有三种属性:段值,偏移量,类型。类型有两种:NEAR,FAR例:LLL:MOVAX,89HTABDB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8HDB80H,90H,88H,83H,0c6H,0a1H,86H,8eH133.运算符4.表达式前面所讲的符号,标记及运算符可以有机地组成表达式。表达式可以分为数值表达式和地址表达式。145.语句汇编语言中的语句只有两种:指令性语句和指示性语句NOPREPESCASDGO:MOVAL,’A’;AL=41H方括号“[]”表示任选项;“〈〉”表示必选项。指令性语句是以指令为主构成的语句。其书写格式如下::[标号:][前缀]〈指令助记符〉[操作数][;注释]15指示性语句书写格式如下:[标识符]〈伪指令〉[操作数][;注释]指示性语句是以伪指令为主构成的语句,因而又称作伪语句。标识符可以是过程名、变量名、符号常量、段名;伪指令是CPU不认识的,它仅为汇编程序或链接程序提供信息。[标号:][前缀]〈指令助记符〉[操作数][;注释]164.3.3指示性语句与部分伪指令1.符号定义语句(1)等值语句句法:符号名EQU表达式例:XXEQU39YYEQU5809HZZEQUAAA;指令COUNTEREQUCX;寄存器等值语句在解除前不可重新定义。17(2)解除语句句法:PURGE符号1[,符号2,…,符号n]该语句用于清除不再使用的已定义符号。例:XXEQU12PURGEXXXXEQUDX(3)等号语句句法:符号名=表达式该语句与等值语句类似,但可对已使用的符号重新定义。例:XX=12XX=XX+1182.数据定义语句程序通常由指令和数据组成。程序运行前,DOS既要为必须使用的数据工作区(变量、栈区等)申请贮存空间,又要为源程序中的变量赋予初值。数据定义语句就是指示汇编程序处理变量的伪语句。句法1:[变量名]DB初值1|?[,初值1|?,…]句法2:[变量名]DW初值1|?[,初值1|?,…]句法3:[变量名]DD初值1|?[,初值1|?,…]句法4:[变量名]DF初值1|?[,初值1|?,…]句法5:[变量名]DQ初值1|?[,初值1|?,…]句法6:[变量名]DT初值1|?[,初值1|?,…]注意:在实模式中,一个段的空间是64KB。193.程序分段与存储分配语句(1)段定义语句句法:段名SEGMENT[定位方式][联合方式][模块名][段长]┇语句┇段名ENDS20①定位方式定位方式通知链接程序:逻辑段的信息在存储器中如何存储。有4种描述:BYTE:可以从任意地址存放;WORD:从偶地址开始存放;PARA(或缺省):从能被16整除的地址开始存放;PAGE:从能被256整除的地址开始存放。21②链接参数链接参数有6种描述:a.PUBLIC通知链接程序,把不同模块中,具有PUBLIC属性的同名段,在满足定位参数的要求下,按指定的链接顺序链接成一个逻辑段。b.COMMON通知链接程序把不同模块中都具有COMMON属性的同名段,根据指定的链接顺序,按照“覆盖”方式,组合成一个逻辑段,共享的存储器区域长度是各模块中的最长的同名段的长度。22c.STACK具有STACK属性的段是堆栈段,链接程序将把同名段组合成一个大的堆栈。d.AT如:DATASEGMENTAT40HORG17HKEYFLAGDB33HDATAENDS表明逻辑段段基址为40H,KEYFLAG的偏移地址为17H。注意:因为程序在主存中的位置是由操作系统分配的,用户程序不能指定代码逻辑段的段基址。23③‘分类名’分类名的名字由程序员命名,通常数据段分类名为‘DATA’,代码段分类名为‘CODE’,通知链接程序,把‘分类名’相同的同名逻辑段放在邻近的存储区。④段长度:USE16表示该段体积最大64K,单元偏移地址为16位,采用16位寻址;USE32表示该段体积最大4G,移地址为32位,采用32位寻址。在实模式下运行,应选用USE16。只有在模块化程序中,才有必要考虑链接参数的选择。单一模块程序中,定位参数,链接参数,‘分类名’均选用“缺省”表示即可。240~w-1D0~z-1~z+v-1C0~y-1~y+u-1B0~x-1A计数器段名例:依次出现段名为A、B、C、B、C、D的6个段,它们的长度分别为x、y、z、u、v、w,汇编程序对其处理过程见下图。25(2)段约定语句句法:ASSUME段寄存器:段名[,段寄存器:段名,…]该语句通知汇编程序,寻址时使用哪一个段寄存器。①一般放在代码段且为第一条语句;②仅约定寻址时使用哪一个段寄存器,而其初值由程序设置;③在DOS环境中,CS的初值由DOS自动设置。(3)定位语句句法:ORG表达式264.过程定义语句句法:过程名PROC类型:过程名ENDP5.结束语句句法:END[标号]6.方式选择伪指令SeeP77。27.486DATASEGMENTUSE16MESGDB‘A‘,0DH,0AH,'$'DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXDS初值;以上设置┇MOVAH,4CHINT21H;返回DOSCODEENDSENDBEG;汇编结束语句
本文标题:南京邮电大学 微型计算机原理与接口技术 4_1章
链接地址:https://www.777doc.com/doc-3294533 .html