第2部分汇编语言基础知识.ppt
《第2部分汇编语言基础知识.ppt》由会员分享,可在线阅读,更多相关《第2部分汇编语言基础知识.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第2部分 汇编语言基础知识 Assembly Language Programming1 汇编语言的编码要求Assembly Language Programming基本特征程序注释程序注释保留字保留字标识符标识符语句语句伪操作伪操作汇编程序的基本框架数据类型数据类型简单的程序举例注释注释利用 ;开始可自成一行,也可在指令之后的同一行里例如ADD AX,BX ADD AX,BX ;计算总量计算总量保留字在特殊情况下使用,具有固定用途而保留的某些在特殊情况下使用,具有固定用途而保留的某些名字,称为保留字。主要类型:名字,称为保留字。主要类型:指令指令如如MOV,ADDMOV,ADD等计算机可执行
2、的操作等计算机可执行的操作伪操作伪操作如如END,SEGMENTEND,SEGMENT,为为编译程序提供信息的语句编译程序提供信息的语句操作符操作符如如FAR,SIZEFAR,SIZE,在表达式中使用在表达式中使用预定义符号预定义符号如如data,modeldata,model等,在编译期间向程序返回信息等,在编译期间向程序返回信息标识符1用户定义的符号名称,包括两类:数据项的名称数据项的名称:表示数据项的地址:表示数据项的地址如如COUNTERCOUNTER DB 0 DB 0标号标号:表示指令、过程或者段的:表示指令、过程或者段的地址地址 MAINMAIN PROC FAR PROC FA
3、RB30B30:ADD BL,25:ADD BL,25标识符2定义规则定义规则第一个字符必须是字母或者不为第一个字符必须是字母或者不为.的特的特殊字符殊字符长度限定在长度限定在1 13131之间之间不能和保留字相冲突不能和保留字相冲突不区分大小写不区分大小写例如例如 合法:合法:TATAL,QTY25,$P80TATAL,QTY25,$P80 非法:非法:5 5P,.TYP,.TY字母:AZ和az数字:09特殊:?_ .$语句语句包括两类:指令指令具有对应的机器码具有对应的机器码例如:例如:ADD,MOVADD,MOV伪指令伪指令只在程序汇编过程起作用,产生机只在程序汇编过程起作用,产生机器不
4、可执行的代码器不可执行的代码例如:例如:定义数据项定义数据项DB,DWDB,DW指令指令机器指令操作operation是必有的,规定该指令的动作操作数operand是可选的,并且数量不定例如:标识符标识符操作操作操作数操作数伪指令伪指令:COUNTCOUNTDBDB1 1指令:指令:MOV MOV AX,0AX,0标示名称 操作 操作数1n ;注释伪操作介绍几个常用的伪操作PAGEPAGE和和TITLETITLESEGMENTSEGMENTPROCPROCENDEND和和ENDPENDPASSUMEASSUME标示名称 伪操作 操作数1n ;注释PAGE和TITLE程序的开头,PAGE定义程序
5、打印时一页的最大行数和每行最大字符数。默认50,80格式:PAGE 60,132TITLE为程序产生标题,打印程序时位于第2行格式:TITLE Assembly program sortSEGMENT格式:格式:segment_name SEGMENT align combine classsegment_name SEGMENT align combine class segment_name ENDSsegment_name ENDS解释解释 定位定位alignalign:指明段开始的边界。指明段开始的边界。通常段为小边界,参数为通常段为小边界,参数为PARAPARA。组合组合combin
6、ecombine:指明程序连接时,该段是否和其它的段指明程序连接时,该段是否和其它的段组合在一起(以后解释),参数为组合在一起(以后解释),参数为STACK,COMMON,STACK,COMMON,PUBLICPUBLIC堆栈段通常定义堆栈段通常定义 segment_name SEGMENT PARA STACKsegment_name SEGMENT PARA STACK 类别类别classclass:指明段的类别指明段的类别代码段代码段 codecode,数据段数据段 datadata,堆栈段堆栈段 stackstackPROC定义过程,格式:定义过程,格式:proc_name PROC
7、FARproc_name PROC FAR proc_name ENDPproc_name ENDP过程名的操作数为过程名的操作数为FARFAR,意味着相应程序的入口意味着相应程序的入口点为此过程,在程序中只有一个操作数为点为此过程,在程序中只有一个操作数为FARFAR的的过程。过程。ENDPENDP指明过程的结束,过程的结束在代码段内,指明过程的结束,过程的结束在代码段内,即即ENDSENDS之前完成。之前完成。代码段内可以包含任意数量的过程,其它的过程代码段内可以包含任意数量的过程,其它的过程通常使用通常使用NEARNEAR的操作数。的操作数。ENDENDS段结束ENDP过程结束END完整
8、的程序结束格式格式:END END 过程操作数过程操作数FARFAR的的PROCPROCASSUME指明程序各个段的用途典型的格式典型的格式ASSUME DS:ASSUME DS:datasegdataseg,CS:,CS:codesegcodeseg,SS:,SS:stacksegstackseg,上述的次序任意上述的次序任意假如需要扩展段假如需要扩展段ESES,也可以加上即可也可以加上即可ES:ES:datasegdataseg程序的框架结构page 60,132TITLEA04ASM1(EXE)Move and add operationsSTACKSEGMENT PARA STACK
9、Stack.STACKENDS;-DATASEG SEGMENT PARA DataDATASEG ENDS;-CODESEGSEGMENT PARA CodeMAINPROC FARASSUME SS:STACK,DS:DATASEG,CS:CODESEGMOV AX,DATASEG;Set address of data MOV DS,AX;segment in DS.MOV AX,4C00H;End processingINT 21HMAINENDP;End of procedureCODESEGENDS;End of segmentEND MAIN;End of program解释段的
10、定义顺序可任意入口过程MAIN的名称可以为其它,例如START等程序结束返回MOV AH,4CH MOV AH,4CH ;请求结束处理请求结束处理MOV AL,MOV AL,retcode retcode ;设置返回码设置返回码INT 21HINT 21H;调用中断处理调用中断处理通常正常返回0,故可写作MOV AX,4C00HMOV AX,4C00HINT 21HINT 21H编程技巧提示由于汇编源程序的格式相对不变,故可以把上述的框架保留下来,添加功能代码即可数据类型 1名称:对应标识符伪操作Dn:定义数据的类型长度字节字节DBDB(1 1字节)字节)字字DWDW(2 2字节)字节)双字双
11、字DDDD(4 4字节)字节)表达式:定义数据的数值的常数或者表达式名称 Dn 表达式 数据定义的格式数据的定义1表达式的形式对于尚未初始化的数据,使用对于尚未初始化的数据,使用?表示表示常数常数举例最简单的情形最简单的情形DATAX DB?DATAX DB?DATAY DATAY DB 25 DB 25数据的定义2数据序列的定义数组数据因素依次用数据因素依次用 ,隔开隔开DATAZ DB 21,22,23,24DATAZ DB 21,22,23,24对DATAZ的数据因素访问,根据数据所处的位置进行DATAZ+0 DATAZ+0 表示表示2121,DATAZ+1 DATAZ+1 表示表示22
12、22,依次,依次类推类推MOV AL,DATAZ+3MOV AL,DATAZ+3数据的定义3重复数据序列的定义举例DW 10 DUP(?)DW 10 DUP(?)DB 5 DUP(12)DB 5 DUP(12)DB 3 DUP(5 DUP(4)DB 3 DUP(5 DUP(4)DB 4 DUP(3 DUP(0,1),2 DUP($)DB 4 DUP(3 DUP(0,1),2 DUP($)名称 Dn 重复个数 DUP(表达式)请大家思考:上述的数据是什么?数据的定义4字符和字符串的定义字符或者字符串在字符或者字符串在单引号单引号 或者或者双引号双引号“”“”内定义内定义数据类型常用的是数据类型常
13、用的是DBDB举例举例DB Computer cityDB Computer city若串中含有 “”,以下处理DB Crazy DB Crazy samsam”s CD”s CDDB “Crazy DB “Crazy samsams CD”s CD”完整的源程序举例page 60,132TITLEA04ASM1(EXE)Move and add operationsSTACKSEGMENT PARA STACK StackDW 32 DUP(0)STACKENDS;-DATASEGSEGMENT PARA DataFLDDDW 215FLDEDW 125FLDFDW?DATASEGENDS;
14、-CODESEGSEGMENT PARA CodeMAINPROC FARASSUME SS:STACK,DS:DATASEG,CS:CODESEGMOV AX,DATASEG;Set address of data MOV DS,AX;segment in DS MOV AX,FLDD;Move 0215 to AXADD AX,FLDE;Add 0125 to AXMOV FLDF,AX;Store sum in FLDFMOV AX,4C00H;End processingINT 21HMAINENDP;End of procedureCODESEGENDS;End of segment
15、END MAIN;End of program编写注意编写建议:同一小功能段,编写注释同一小功能段,编写注释程序识别一般不区分大小写程序识别一般不区分大小写可读性强,通常所有汇编指令用大写,而注释可读性强,通常所有汇编指令用大写,而注释全部用小写全部用小写使用简化的编程框架.MODEL 自动产生ASSUME语句.MODEL 本教程通常两种:Tiny:Tiny:为为.comcom生成代码生成代码Small:Small:为为.exeexe生成代码生成代码并且两者代码偏移量限定在并且两者代码偏移量限定在6464KBKB内内简化模型举例page 60,132TITLEA04ASM2(EXE)Move
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部分 汇编语言 基础知识
限制150内