微机原理 汇编语言的学习幻灯片.ppt
《微机原理 汇编语言的学习幻灯片.ppt》由会员分享,可在线阅读,更多相关《微机原理 汇编语言的学习幻灯片.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理 汇编语言的学习1第1页,共95页,编辑于2022年,星期六第三章第三章 汇编语言程序设计汇编语言程序设计2第2页,共95页,编辑于2022年,星期六3.1 3.1 汇编语言基本元素汇编语言基本元素3第3页,共95页,编辑于2022年,星期六由由汇汇编编语语言言编编写写的的源源程程序序是是由由许许多多语语句句(也也可可称称为为汇汇编编指指令令)组组成成的的。每每个个语语句句由由14个个部部分分组组成成,其其格格式是:式是:标识符标识符指令助记符指令助记符操作数操作数;注解;注解 其中用方括号括起来的部分,可以有也可以没有。其中用方括号括起来的部分,可以有也可以没有。每部分之间用空格每部
2、分之间用空格(至少一个至少一个)分开,一行最多可有分开,一行最多可有132个字符。个字符。3.1.1 3.1.1 汇编语言的语句格式汇编语言的语句格式4第4页,共95页,编辑于2022年,星期六(1)标识符:标识符:给指令或某一存储单元地址所起的名字。给指令或某一存储单元地址所起的名字。标识符由下列字符组成标识符由下列字符组成:(以字母或圆点开头):(以字母或圆点开头)字母字母:AZ,az;数字数字:09;特殊字符特殊字符:?._$数字不能作标识符的第一个字符,而数字不能作标识符的第一个字符,而.仅能作标仅能作标识符的第一个字符,标识符最长为识符的第一个字符,标识符最长为31个字符。个字符。标
3、识符后跟冒号时标识符后跟冒号时表示标号表示标号,代表该行指令的起始地代表该行指令的起始地址址,标号可以被转移、调用指令直接引用。标号可以被转移、调用指令直接引用。标识符后不带冒号时标识符后不带冒号时表示变量表示变量。伪指令前的标识符不加冒号。伪指令前的标识符不加冒号。5第5页,共95页,编辑于2022年,星期六(2)指令助记符指令助记符 表示不同操作的指令表示不同操作的指令,可以是,可以是8086/8088的指令助记符,的指令助记符,也可以是伪指令。也可以是伪指令。(3)操作数操作数 是指令执行的对象。是指令执行的对象。依指令的要求,可能有一个、两个、依指令的要求,可能有一个、两个、没有或者多
4、个。没有或者多个。例如:例如:RET;无操作数;无操作数COUNT:INCCX;一个操作数;一个操作数MOVCX,DI;两个操作数;两个操作数ADDAX,BP十十4;第二个操作数为表达式;第二个操作数为表达式(4)注释注释 该项可有可无,是为源程序所加的注解,用于提高程该项可有可无,是为源程序所加的注解,用于提高程序的可读性。序的可读性。6第6页,共95页,编辑于2022年,星期六汇编语言运算符:汇编语言运算符:是汇编程序在汇编时计算的是汇编程序在汇编时计算的,与运与运算指令不同,指令是在程序运行时计算的。算指令不同,指令是在程序运行时计算的。1、算术运算符、逻辑运算符、关系运算符、算术运算符
5、、逻辑运算符、关系运算符如:、如:、/、AND、OR、LT等等MOVAX,DI+BXADDAX,FIRST+1MOVAX,(choiceLT20)AND5)OR(choiceGE20)AND6)3.1.2 3.1.2 汇编语言运算符汇编语言运算符7第7页,共95页,编辑于2022年,星期六注意:注意:算术运算符总可以用于数字操作,其结果也是数字的。算术运算符总可以用于数字操作,其结果也是数字的。当应用于存储器操作数时,只有当应用于存储器操作数时,只有+,-运算符有意义;运算符有意义;逻辑运算符的操作数也必须是数字,存储器操作数不逻辑运算符的操作数也必须是数字,存储器操作数不能进行逻辑运算;能进
6、行逻辑运算;关系运算符连接的两个操作数,必须都是数字的或关系运算符连接的两个操作数,必须都是数字的或是在同一段内的存储器地址。是在同一段内的存储器地址。8第8页,共95页,编辑于2022年,星期六2、取值运算符取值运算符1)$运算符运算符$:当前地址偏移量的值:当前地址偏移量的值BLOCKDBHELLO!NUMEQU$-BLOCKHELLO!BLOCK$;NUM为为69第9页,共95页,编辑于2022年,星期六2)SEG和和OFFSETSEG:求标号或变量的段地址求标号或变量的段地址OFFSET:求标号或变量的偏移地址求标号或变量的偏移地址例如,定义:例如,定义:SLOTDW25则:则:MOV
7、AX,SLOT;从从SLOT地址中取一个字送入地址中取一个字送入AXMOVAX,SEGSLOT;将将SLOT的段地址送入的段地址送入AXMOVAX,OFFSETSLOT;将将SLOT的段内偏移地址送的段内偏移地址送AX10第10页,共95页,编辑于2022年,星期六3)TYPE返回标号或存储器操作数的类型值返回标号或存储器操作数的类型值对对存储器操作数存储器操作数:表示占用的字节数:表示占用的字节数对标号:表示过程或指令地址的调用类型对标号:表示过程或指令地址的调用类型表表3-1存储器操作数的类型属性及返回值存储器操作数的类型属性及返回值字节字节字字双字双字NEARFAR1241211第11页
8、,共95页,编辑于2022年,星期六4)LENGTH和和SIZE(对用对用DUP定义数据的情况下)定义数据的情况下)LENGTH:返回一个与存储器操作数相联系的基本数据个数,返回一个与存储器操作数相联系的基本数据个数,SIZE:返回一个为存储器操作数分配的字节数返回一个为存储器操作数分配的字节数关系:关系:SIZE=LENGTHTYPE例如:若例如:若MULT-WORDDW50DUP(0)则则LENGTHMULT-WORD=50SIZEMULT-WORD=100TYPEMULT-WORD=212第12页,共95页,编辑于2022年,星期六3、属性运算符、属性运算符用来给指令中的操作数指定一个临
9、时的属性,而用来给指令中的操作数指定一个临时的属性,而暂时暂时忽略操作数定义时的属性。忽略操作数定义时的属性。1)PTR定义操作数为新的类型定义操作数为新的类型一般格式:类型一般格式:类型PTR操作数操作数功能:建立一个存储器操作数,它与其后的存储器操作功能:建立一个存储器操作数,它与其后的存储器操作数有相同的段地址和偏移地址,但有不同的类型。数有相同的段地址和偏移地址,但有不同的类型。F2DW3456HMOVAL,BYTEPTRF2MOVBX,3MOVBYTEPTRBX,3;AL:56H;错,类型不明确错,类型不明确;字节传输字节传输13第13页,共95页,编辑于2022年,星期六3.1.3
10、 3.1.3 表达式表达式 是由运算符和操作数组成的序列,在汇编是由运算符和操作数组成的序列,在汇编时产生一个确定的值。这个值可以仅表示一个时产生一个确定的值。这个值可以仅表示一个常量,也可以表示一个存储单元的偏移地址,常量,也可以表示一个存储单元的偏移地址,相应的表达式称为常量表达式和地址相应的表达式称为常量表达式和地址表达式。表达式。14第14页,共95页,编辑于2022年,星期六1、常数常数二进制二进制(B),八进制,八进制(Q),十六进制,十六进制(H),十进制,十进制(D)(默认默认),十进制浮点数,十六进制实数,字符和字符串十进制浮点数,十六进制实数,字符和字符串100011001
11、00B244Q64HBDThisisaclassroom.15第15页,共95页,编辑于2022年,星期六2、常量操作数、常量操作数 常量操作数是一个数值操作数,一般是常量常量操作数是一个数值操作数,一般是常量或者是表示常量的标识符。或者是表示常量的标识符。如如:COUNTEQU10NAME=J 可以为数字常量操作数或字符串常量操作数。前可以为数字常量操作数或字符串常量操作数。前者可采用二进制、八进制、十进制或十六进制等进位者可采用二进制、八进制、十进制或十六进制等进位计数形式;而后者所对应的常量值为相应字符的计数形式;而后者所对应的常量值为相应字符的ASCII码。码。16第16页,共95页,
12、编辑于2022年,星期六3、存储器操作数、存储器操作数 存储器操作数是一个地址操作数,代表一个存储存储器操作数是一个地址操作数,代表一个存储单元的地址,通常以标识符的形式出现。单元的地址,通常以标识符的形式出现。变量:变量:代表的是某个数据在数据段、附加段或堆栈代表的是某个数据在数据段、附加段或堆栈段中的地址。变量所对应的存储单元内容在程序的段中的地址。变量所对应的存储单元内容在程序的运行过程中是可以改变的。运行过程中是可以改变的。标号:标号:代表的是某条指令代码在代码段中的地址。代表的是某条指令代码在代码段中的地址。标号通常作为转移指令或调用指令的目标操作数,标号通常作为转移指令或调用指令的
13、目标操作数,在程序运行过程中不能改变。在程序运行过程中不能改变。17第17页,共95页,编辑于2022年,星期六存储器操作数有三个属性存储器操作数有三个属性1)段属性段属性(SEG):所对应存储单元的段地址所对应存储单元的段地址2)偏移量属性偏移量属性(OFFSET):所对于存储单元在所在段内:所对于存储单元在所在段内的偏移地址的偏移地址(距段起点的字节数距段起点的字节数)3)类型属性类型属性(TYPE)变量的类型变量的类型 是占用存储单元的字节数,分为:是占用存储单元的字节数,分为:DB(1个字节个字节)DW(2个字节个字节)DD(4个字节个字节)标号标号的类型的类型 则反映了相应存储单元地
14、址在作为转移则反映了相应存储单元地址在作为转移或调用指令的目标操作数时的寻址方式,可有两种或调用指令的目标操作数时的寻址方式,可有两种情况,即情况,即NEAR和和FAR。18第18页,共95页,编辑于2022年,星期六DATASEGMENTXDB5,4YDW40HZDD2030HDATAENDS05H04H40H00H30H20H00H00HDS:0000HXYZX,Y,Z分别都有三个属性:分别都有三个属性:段地址,偏移地址和类型值,段地址,偏移地址和类型值,这三个属性都有固定的值。这三个属性都有固定的值。19第19页,共95页,编辑于2022年,星期六4、常量表达式、常量表达式 由由常常量量
15、操操作作数数及及运运算算符符构构成成,在在汇汇编编时时产产生生一一个个常量。常量。如如PORT、VAL十十1、OFFSETSUM、SEGSUM、TYPECYCLE等。等。20第20页,共95页,编辑于2022年,星期六5、地址表达式、地址表达式 由存储器操作数与运算符构成,但由存储器操作数由存储器操作数与运算符构成,但由存储器操作数构成地址表达式时,必须有明确的物理意义。构成地址表达式时,必须有明确的物理意义。例如例如 SUM2、CYCLE5 表达式表达式SUMSUM2 2、CYCLECYCLE5 5的值仍然是一个存储器的值仍然是一个存储器操作数,该存储器操作数的段地址与类型属性分别操作数,该
16、存储器操作数的段地址与类型属性分别与存储器操作数与存储器操作数SUMSUM及及CYCLECYCLE相同,但偏移地址分别比相同,但偏移地址分别比SUMSUM及及CYCLECYCLE大大2 2或小或小5 5。表达式是在汇编时计算的,而变。表达式是在汇编时计算的,而变量单元的内容在程序的运行过程中可以改变。量单元的内容在程序的运行过程中可以改变。21第21页,共95页,编辑于2022年,星期六3.1.4 3.1.4 汇编语言程序汇编步骤汇编语言程序汇编步骤22第22页,共95页,编辑于2022年,星期六.ASM.OBJ.EXE汇编汇编连接连接宏汇编程序:宏汇编程序:MASM.EXE连接程序:连接程序
17、:LINK.EXE编编辑辑程程序序源源程程序序连连接接程程序序汇汇编编程程序序目目标标程程序序执执行行程程序序步骤:步骤:1)编写源程序;编写源程序;2)汇编;汇编;3)连接;连接;4)调试。调试。23第23页,共95页,编辑于2022年,星期六用户编写程序,程序在计算机中运行,计算用户编写程序,程序在计算机中运行,计算机的控制由操作系统交给用户程序,运行用户程机的控制由操作系统交给用户程序,运行用户程序,当用户程序运行结束后,应再将控制权交回序,当用户程序运行结束后,应再将控制权交回操作系统,所以,在程序中应该有返回操作系统,所以,在程序中应该有返回DOS的操的操作。在计算机中,返回作。在计
18、算机中,返回DOS的操作由操作系统的操作由操作系统中的一个子程序来实现,用户使用时调用这个中的一个子程序来实现,用户使用时调用这个子程序即可。子程序即可。24第24页,共95页,编辑于2022年,星期六每当一个用户的可执行文件每当一个用户的可执行文件.EXE装入内存后,存储器的分配情装入内存后,存储器的分配情况如图:况如图:系统占用程序段前缀用户数据区用户堆栈区用户代码段系统和ROM占用00000HDS,ES100个字节个字节SS用户程序空间用户程序空间FFFFFHCS25第25页,共95页,编辑于2022年,星期六系统占用INT 20H 程序段前缀用户数据区用户堆栈区用户代码段系统和ROM占
19、用无论用户程序有几段,也无论这些段的排无论用户程序有几段,也无论这些段的排列顺序如何,用户程序的代码前一定有列顺序如何,用户程序的代码前一定有100个字节的个字节的程序段前缀程序段前缀(ProgramSegmentPrefix,简称简称PSP),PSP给出了用给出了用户的可执行文件户的可执行文件(.EXE)的若干控制信息。的若干控制信息。其中其中PSP的开始处的开始处(第第1,2字节字节)有一条中有一条中断指令断指令INT20H的代码,通过它可以的代码,通过它可以结束结束用户程序,返回操作系统用户程序,返回操作系统。在用户程序。在用户程序执行完以后,通过执行该条指令就可以执行完以后,通过执行该
20、条指令就可以返回返回DOS。26第26页,共95页,编辑于2022年,星期六如何使用户程序执行完后返回来执行这条指令?如何使用户程序执行完后返回来执行这条指令?系统占用INT 20H 程序段前缀用户数据区用户堆栈区用户代码段RET系统和ROM占用DS,ESSSCS首先将用户程序定义为一个首先将用户程序定义为一个远过程远过程,当可执,当可执行文件装入内存后,行文件装入内存后,DS,ES两个段寄存器被两个段寄存器被CPU自动设置为指向自动设置为指向PSP的首址,所以一般的首址,所以一般程序的开始指令为:程序的开始指令为:PUSHDSMOVAX,0PUSHAX即将即将DS的内容和的内容和0000H压
21、入堆栈,程序结压入堆栈,程序结束时的最后一条语句为束时的最后一条语句为RET,就把压入堆,就把压入堆栈的栈的PSP段的段地址和偏移地址段的段地址和偏移地址0000H弹弹出并送入出并送入CS和和IP,转而执行返回,转而执行返回DOS的的指令指令INT20H。00H00HPSPLPSPH堆栈情况27第27页,共95页,编辑于2022年,星期六返回操作系统的另一个办法是通过系统调用返回操作系统的另一个办法是通过系统调用(调用号是(调用号是4CH)。这时,。这时,在用户程序结束时,在用户程序结束时,用下面两条指令:用下面两条指令:MOVAH,4CHINT21H即可实现返回即可实现返回DOS。28第28
22、页,共95页,编辑于2022年,星期六3.2 3.2 伪指令伪指令29第29页,共95页,编辑于2022年,星期六伪指令:伪指令不是伪指令:伪指令不是CPU运行的指令,而是程序运行的指令,而是程序员给员给汇编程序汇编程序下达的命令。是在汇编源程序期间下达的命令。是在汇编源程序期间由由汇编程序执行的命令汇编程序执行的命令。伪指令用来对汇编程序进行控制,对程序伪指令用来对汇编程序进行控制,对程序中的数据进行存储空间分配、实现条件汇编、中的数据进行存储空间分配、实现条件汇编、列表等处理,其格式和汇编指令一样,但列表等处理,其格式和汇编指令一样,但不产不产生目标代码生目标代码,即不直接命令即不直接命令
23、CPU去执行什么操去执行什么操作。作。30第30页,共95页,编辑于2022年,星期六3.2.1数据定义伪指令数据定义伪指令DB:定义字节,其后的每个操作数占有一个存储单元,:定义字节,其后的每个操作数占有一个存储单元,连续存放;连续存放;BUFFERDB2,3STRINGDBNOON03H02HBUFFERDW:定义字,其后的每个操作数占有两个字节;:定义字,其后的每个操作数占有两个字节;BUFDW2,3,505H00H00H03H00H02HBUFSTRINGDD:定义双字,其后每个操作数占定义双字,其后每个操作数占4个字节;个字节;还有还有DQ(4个字长)、个字长)、DT(10个个字节长
24、)字节长)31第31页,共95页,编辑于2022年,星期六若仅保留单元,不初始化,用若仅保留单元,不初始化,用?代替初值;代替初值;若数据重复,用若数据重复,用nDUP()代替,代替,n为重复次数。为重复次数。ARRAYDB100DUP(?)保留保留100个字节,首地址为个字节,首地址为ARRAY,不初始化,即,不初始化,即100个字节内均为随机值个字节内均为随机值DATA1DB100DUP(AB)初始化初始化200个字节,内有个字节,内有100个个41H,42H(即(即41H42H41H42H41H42H)32第32页,共95页,编辑于2022年,星期六例:有如下数据定义伪指令:例:有如下数
25、据定义伪指令:VALDB1,4DUP(5,2DUP(FFH,0)则在则在VAL存储区前存储区前10个字节单元的数据是:个字节单元的数据是:1,5,FFH,0,FFH,0,5,FFH,0,FFH若定义若定义DW1,2,5DUP(YES,2DUP(3),则在存储区的则在存储区的数据是什么?数据是什么?33第33页,共95页,编辑于2022年,星期六3.2.2符号定义伪指令符号定义伪指令标识符标识符EQU表达式表达式标识符标识符=表达式表达式给标识符定义一个值或其他符号名或一条可执行语句,汇给标识符定义一个值或其他符号名或一条可执行语句,汇编时,凡是出现该标识符的地方就用定义的数据替代。编时,凡是出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 汇编语言的学习幻灯片 微机 原理 汇编语言 学习 幻灯片
限制150内