微机原理与接口技术-第三章II汇编语言程序设计课件.ppt
《微机原理与接口技术-第三章II汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术-第三章II汇编语言程序设计课件.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理与接口技术微机原理与接口技术微机原理与接口技术微机原理与接口技术汇编语言程序设计汇编语言程序设计1汇编语言程序设计汇编语言程序设计n汇编语言源程序格式及其开发过程汇编语言源程序格式及其开发过程n指令格式及寻址方式指令格式及寻址方式n8086汇编语言的基本语法汇编语言的基本语法n顺序、分支、循环结构程序设计顺序、分支、循环结构程序设计n子程序设计子程序设计n宏汇编简介宏汇编简介2汇编语言基本概念汇编语言基本概念n基本概念基本概念汇编语言汇编语言:是一种面向机器的程序设计语言,它是机:是一种面向机器的程序设计语言,它是机器语言的符号化描述。器语言的符号化描述。特点:代码短、空间省、效率高特
2、点:代码短、空间省、效率高汇编语言源程序汇编语言源程序:用汇编语言编写的程序:用汇编语言编写的程序目标程序目标程序:汇编语言经翻译程序翻译成的代码程序:汇编语言经翻译程序翻译成的代码程序(即机器语言的程序)。(即机器语言的程序)。汇编程序汇编程序:把源程序转变为相应目标程序的:把源程序转变为相应目标程序的翻译程序翻译程序3汇编语言基本概念汇编语言基本概念宏汇编宏汇编:不仅包含一般汇编语言的功能,而且采用了高级语言使用:不仅包含一般汇编语言的功能,而且采用了高级语言使用的数据结构,是一种接近高级语言的汇编语言。的数据结构,是一种接近高级语言的汇编语言。汇编语言程序的开发过程汇编语言程序的开发过程
3、编写源程序:编写源程序:EDIT(DOS),),Text,Pad(Windows)将源程序保存为将源程序保存为 XXXX.asm 文件文件使用使用MASM生成目标程序生成目标程序 XXXX.OBJ使用使用LINK生成可执行程序生成可执行程序 XXXX.EXE源程序源程序XXXX.asm目标程序目标程序XXXX.obj可执行程序可执行程序XXXX.exe设计编辑设计编辑用用MASM汇编汇编用用LINK连接连接执行执行4汇编语言基本概念汇编语言基本概念n基本汇编语言程序实例基本汇编语言程序实例(1)DATA SEGMENT(2)String DB program ASM,$(3)DATA ENDS
4、(4)CODE SEGMENT(5)ASSUME CS:CODE,DS:DATA,SS:STACK(6)START:MOV AX,DATA(7)MOV DS,AX(8)MOV DX,OFFSET String(9)MOV AH,9(10)INT 21H(11)MOV AX,4C00H (12)INT 21H(13)CODE ENDS(14)STACK SEGMENT STACK(15)DB 256 DUP(?)(16)STACK ENDS(17)END STARTAH=9功能:显示字符串DS:DX=串地址字符串以“$”结尾AH=4C功能:带返回码终止AL=返回码6汇编语言中的语句汇编语言中的语
5、句n指令性语句指令性语句源程序经汇编后生成机器码源程序经汇编后生成机器码ADD AL,SIn指示性语句指示性语句汇编过程中不产生机器码,在汇编过程中起解释说明作用汇编过程中不产生机器码,在汇编过程中起解释说明作用ASSUME CS:CODE,DS:DATAn宏语句宏语句由宏汇编定义的宏引用语句由宏汇编定义的宏引用语句MACRO_NAME7汇编语言中的语句汇编语言中的语句n指令性语句指令性语句指令性语句格式指令性语句格式标号:标号:前缀前缀 指令助记符指令助记符 操作数操作数,操作数,操作数;注释;注释标号:代表标号:代表“:”后面语句的存储地址,供转移指令(后面语句的存储地址,供转移指令(JM
6、P)、)、过程调用指令(过程调用指令(CALL)、循环指令()、循环指令(LOOP)等使用。)等使用。由字母、数字组成串(由字母、数字组成串(第一个字符非数字第一个字符非数字)前缀:是与串操作运算(前缀:是与串操作运算(MOVS、CMPS、SCAS、LODS、STOS)以及总线封锁指令()以及总线封锁指令(LOCK)配合使用的部分。它们是)配合使用的部分。它们是REP、REPZ、REPE、REPNZ、REPNE等。等。LOOP1:REP MOVS DEST,SOURCE操作数的数目可以为操作数的数目可以为0,1或或2,用,用“,”隔开隔开8n算术运算指令算术运算指令(20条条)加法加法ADD,
7、ADC,AAA,DAA加加“1”INC减法减法SUB,SBB,AAS,DAS减减“1”DEC比较比较CMP求补求补NEG乘法乘法MUL,IMUL,AAM除法除法DIV,IDIV,AAD符号扩展符号扩展CBW,CWD汇编语言中的语句汇编语言中的语句10求反求反NOT逻辑与逻辑与AND逻辑或逻辑或OR异或异或XOR测试测试TEST左左/右移位右移位SHL,SHR,SAL,SAR左左/右循环移位右循环移位ROL,ROR,RCL,RCRn逻辑运算指令(逻辑运算指令(13条)条)汇编语言中的语句汇编语言中的语句11子程序调用子程序调用CALL子程序返回子程序返回RET无条件转移无条件转移JMP条件转移条
8、件转移JZ,JNZ,JC,JNC,JO,JNO,JS,JNS,JP,JNP,JA,JAE,JB,JBE,JG,JGE,JL,JLE循环循环LOOP条件循环条件循环LOOPNE,LOOPE寄存器寄存器CX=0转移转移JCXZ中断中断INT,INTO中断返回中断返回IRET控制转移指令(控制转移指令(28条)条)汇编语言中的语句汇编语言中的语句13指示性语句指示性语句功能:对程序的起止信息、分段情况、变量说明、内存结构等进功能:对程序的起止信息、分段情况、变量说明、内存结构等进行说明。行说明。格式:格式:名字名字 伪操作指令伪操作指令 参数,参数,参数,参数;注释;注释PC宏汇编的伪指令宏汇编的伪
9、指令段定义伪指令:段定义伪指令:SEGMENT,ENDS,ASSUME,ORG等等符号定义伪指令:符号定义伪指令:EQU,=数据定义伪指令:数据定义伪指令:DB,DW,DD,DQ,DT过程定义伪指令:过程定义伪指令:PROC,ENDP宏处理伪指令:宏处理伪指令:MACRO,REPT,IRPC条件汇编伪指令:条件汇编伪指令:IF,ENDIF,IFDIF,IFDEF汇编语言中的语句汇编语言中的语句15每个语句由每个语句由14个部分组成,其格式是:个部分组成,其格式是:标识符标识符 指令助记符指令助记符 操作数操作数 ;注释;注释 标识符:标识符:给指令或某一存储单元地址所起的名字。给指令或某一存储
10、单元地址所起的名字。可由下列字符组成:可由下列字符组成:字母:字母:A z;数字:数字:0 9;特殊字符:特殊字符:?、一、一、$。数字不能作标识符的第一个字符,而圆点仅能用作第一个字符;数字不能作标识符的第一个字符,而圆点仅能用作第一个字符;标识符最长为标识符最长为31个字符;个字符;当标识符后跟冒号时,表示是标号。它代表该行指令的起始地址;当标识符后跟冒号时,表示是标号。它代表该行指令的起始地址;当标识符后不带冒号时,表示变量;当标识符后不带冒号时,表示变量;伪指令前的标识符不加冒号。伪指令前的标识符不加冒号。指令助记符:指令助记符:表示不同操作的指令,表示不同操作的指令,可以是可以是80
11、86的指令助记符,也可以是伪指令。的指令助记符,也可以是伪指令。操作数:操作数:指令执行的对象。指令执行的对象。依指令的要求,可能有一个、两个或者没有。依指令的要求,可能有一个、两个或者没有。注释:注释:该项可有可无,是为源程序所加的注解,用于提高程序的可读性。该项可有可无,是为源程序所加的注解,用于提高程序的可读性。汇编语言语句格式及组成汇编语言语句格式及组成16数据形式数据形式格格 式式X取值范围取值范围例子例子注释注释二进制二进制X X X X X X X X B0,101110101B八进制八进制X X X X OX X X X Q0 70 7735O421Q十进制十进制X X X X
12、X X X X D0 90 937562358D缺省形式缺省形式十六进制十六进制X X X X H0 F0FB23H最前面的一个字符最前面的一个字符必须是必须是09ASCIIX X“X X”ASCII字符字符128个个OK“Pass”十进制实数十进制实数X X.X X E X X0 923.456E-7各种形式常量的格式各种形式常量的格式汇编语言语句格式及组成汇编语言语句格式及组成18n标号标号标号标号是为一组机器指令所起的名字,用于程序转移指令、调用指令是为一组机器指令所起的名字,用于程序转移指令、调用指令和循环指令的操作数(转向地址),一般在和循环指令的操作数(转向地址),一般在CS段内定
13、义和使用。段内定义和使用。标号的属性:段属性、偏移属性和类型标号的属性:段属性、偏移属性和类型 标号所处的代码段的段基址,称为该标号的标号所处的代码段的段基址,称为该标号的段属性段属性 标号所处的位置与段首地址之间的相对地址,称为该标号的偏移属性标号所处的位置与段首地址之间的相对地址,称为该标号的偏移属性形式一:标号形式一:标号形式二:形式二:OFFSET 标号标号LC1:MOV AL,20H JMP LC1MOV BX,OFFSET LB1汇编语言语句格式及组成汇编语言语句格式及组成19汇编语言语句格式及组成汇编语言语句格式及组成n标号标号:标号有标号有FAR(远标号)和(远标号)和NEAR
14、(近标号)两种类型(近标号)两种类型近标号:该标号的定义在本段;在机器指令助记符之前,加一标号近标号:该标号的定义在本段;在机器指令助记符之前,加一标号名字,后面紧跟一个冒号名字,后面紧跟一个冒号“:”LC1:MOV AL,20H JMP LC1远标号:该标号的定义在其它段;过程定义时,为过程起的名字也远标号:该标号的定义在其它段;过程定义时,为过程起的名字也是标号,可作为转子指令的操作数,这类标号的类型在定义子过程是标号,可作为转子指令的操作数,这类标号的类型在定义子过程时确定时确定 PROP PROC FAR PROP ENDP20汇编语言语句格式及组成汇编语言语句格式及组成n标号在使用时
15、注意事项标号在使用时注意事项循环指令、条件转移指令循环指令、条件转移指令只能引用只能引用NEAR型,型,并且定义并且定义标号语句和使用标号语句的相对距离只能在标号语句和使用标号语句的相对距离只能在 128 +127 字节范围内;字节范围内;无条件转移指令、调用(转子)指令无条件转移指令、调用(转子)指令可引用可引用 NEAR 和和 FAR 两种类型的标号两种类型的标号如果同一段内,无条件转移指令语句到定义该标号语句如果同一段内,无条件转移指令语句到定义该标号语句的距离在的距离在 128 +127 字节范围内,则可在使用的标号字节范围内,则可在使用的标号前指定为短标号,记为前指定为短标号,记为
16、SHORT 标号标号21n变量变量变量的定义及格式变量的定义及格式变量变量是内存中一个数据区的名字,可以作为指令的存是内存中一个数据区的名字,可以作为指令的存储器操作数来引用储器操作数来引用变量定义的格式:变量定义的格式:变量名变量名 变量类型定义符变量类型定义符 表达式表达式,变量名变量名:由用户定义(符合标识符定义的规范):由用户定义(符合标识符定义的规范)变量类型变量类型:DB:1个字节个字节 DW:2个字节,即个字节,即1个字个字DD:4个字节,即个字节,即2个字个字DQ:8个字节,即个字节,即4个字个字DT:10个字节,即个字节,即5个字个字汇编语言语句格式及组成汇编语言语句格式及组
17、成22例:例:ARRAY DW 1,2,3 ADD SI,TYPE ARRAY 汇编结果为汇编结果为 ADD SI,2分析运算符分析运算符TYPE,LENGTH,SIZE,SEG,OFFSET1.TYPE 格式:格式:TYPE 变量或标号变量或标号 说明:说明:变量:则汇编程序将回送该变量类型包含的字节数变量:则汇编程序将回送该变量类型包含的字节数标号:则汇编程序将回送代表该标号类型的数值。标号:则汇编程序将回送代表该标号类型的数值。NEAR(-1)、)、FAR(-2)汇编语言语句格式及组成汇编语言语句格式及组成24例:例:FEES DW 100 DUP(0)MOV CX,LENGTH FEE
18、S汇编结果为:汇编结果为:MOV CX,100例:例:ARRAY DW 1,2 MOV CX,LENGTH ARRAY汇编结果为:汇编结果为:MOV CX,12.LENGTH 格式:格式:LENGTH 变量变量 说明:说明:回送分配给该变量的单元数,表达式中有回送分配给该变量的单元数,表达式中有DUP时有效;时有效;无无DUP时,返回值为时,返回值为1.汇编语言语句格式及组成汇编语言语句格式及组成例:例:ARRAY DW 1,2,3 MOV CX,SIZE ARRAY汇编结果为:汇编结果为:MOV CX,23.SIZE格式:格式:SIZE 变量变量说明:说明:回送分配给该变量的字节数,此值是回
19、送分配给该变量的字节数,此值是LENGTH 值和值和 TYPE 值的乘积值的乘积25例:例:MOV BX,OFFSET OPR汇编程序将汇编程序将OPR的偏移地址回送给的偏移地址回送给BX,将该偏移地址装入,将该偏移地址装入BX寄存器中寄存器中4.OFFSET5.格式:格式:OFFSET 变量或标号变量或标号6.说明:说明:回送该变量或标号的偏移地址回送该变量或标号的偏移地址汇编语言语句格式及组成汇编语言语句格式及组成例:例:MOV BX,SEG OPR则汇编程序将则汇编程序将OPR所在的段基址送入所在的段基址送入BX寄存器寄存器5.SEG 格式:格式:SEG 变量或标号变量或标号 说明:回送
20、该变量或标号的段地址说明:回送该变量或标号的段地址26汇编语言语句格式及组成汇编语言语句格式及组成THIS指定属性操作符指定属性操作符格式:格式:THIS 类型类型(BYTE,WORD,DWORD,FAR,NEAR)功能:功能:用于指定存储器操作数或地址的类型属性。用于指定存储器操作数或地址的类型属性。说明:说明:该操作符对应的语句放在数据变量定义伪指令或标号定义之前;该操作符对应的语句放在数据变量定义伪指令或标号定义之前;规定一个新变量规定一个新变量(标号标号)的属性;的属性;由由THIS定义的新变量定义的新变量(标号标号)的段地址和偏移地址与紧跟其后定义的的段地址和偏移地址与紧跟其后定义的
21、变量变量(标号标号)的段地址和偏移地址相同,即指向同一个存储单元,但的段地址和偏移地址相同,即指向同一个存储单元,但数据类型可以不同数据类型可以不同一般通过一般通过EQU伪指令为符号命名赋予一个由伪指令为符号命名赋予一个由THIS指定的类型指定的类型例:例:FIRST_BYTEEQUTHISBYTEWORD_TABLEDW3275H,08ABH例:例:TAB EQU THISFAR MOV AX,1234H;定义标号定义标号TAB,属性为,属性为FAR,指向,指向MOV AX,1234H28n指示性语句(说明性语句)指示性语句(说明性语句)n存储分配存储分配(数据定义数据定义)语句语句数值表达
22、式数值表达式如如 3*20?保留存储空间但不存入数据保留存储空间但不存入数据例:例:ABC DB 0,?,?,0 DEF DW?,52 存储空间分配如图所示存储空间分配如图所示ASCII字符串字符串例:例:MESSAGE DB HELLO 存储空间分配如图所示存储空间分配如图所示00-00-3400ABCDEF48454C4C4FMESSAGE伪指令伪指令29定义数据伪指令定义数据伪指令DATA1DB20HDATA2DW0240H,1000HDATA3DB(-1*3),(15/5)DATA4DD12345HDATA5DB0123DATA6DWAB,C,DDATA7DB?DATA8DD?DATA
23、9DB5DUP(00)DATA10DW3DUP(?)汇编语言语句格式及组成汇编语言语句格式及组成31伪指令伪指令EQU符号定义伪指令符号定义伪指令格式:格式:符号符号EQU表达式表达式或或新符号新符号EQU旧符号旧符号nEQU伪指令给符号定义一个值。在程序中,凡是出现该符号的地方,汇编时均用其值代伪指令给符号定义一个值。在程序中,凡是出现该符号的地方,汇编时均用其值代替,如:替,如:COUNTEQU100;COUNT代替常数代替常数100CONSTEQUCOUNTSUMEQU30*25;SUM代替数值表达式代替数值表达式CEQUCX;C代替寄存器代替寄存器CXMEQUMOV;M代替指令助记符代
24、替指令助记符MOV 注意注意!n一个符号一经一个符号一经EQU伪指令赋值后,在整个程序中,不允许再对同一符号重新赋值。伪指令赋值后,在整个程序中,不允许再对同一符号重新赋值。n如果要定义由如果要定义由EQU定义过的变量,则需使用定义过的变量,则需使用PURGE解除对该变量的定义。格式为:解除对该变量的定义。格式为:PURGE 符号符号32汇编语言程序设计汇编语言程序设计段定义伪指令段定义伪指令段定义伪指令的用途是在汇编语言程序中定义逻辑段段定义伪指令的用途是在汇编语言程序中定义逻辑段;指定段的名称和范围,并指明段的定位类型、组合类型及类别指定段的名称和范围,并指明段的定位类型、组合类型及类别;
25、段定义伪指令为段定义伪指令为SEGMENT和和ENDS。格式格式:段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 (段内语句系列)(段内语句系列)段名段名 ENDS33伪指令伪指令DATA1 SEGMENT DATA1 ENDSSTACK1 SEGMENT STACK STACK1 ENDSCODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1,SS:STACK1 MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CODE1 ENDS段定义伪指令实例段定义伪指令实例34汇编语言程序设计汇编语言程序设计伪指令伪
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 第三 II 汇编语言 程序设计 课件
限制150内