第五章汇编语言程序设计



《第五章汇编语言程序设计》由会员分享,可在线阅读,更多相关《第五章汇编语言程序设计(69页珍藏版)》请在装配图网上搜索。
1、第五章 汇编语言程序设计第五章是重点章节第五章的内容5.1概述5.2汇编语言语句5.3汇编语言数据5.4伪指令语句5.5宏指令语句5.6顺序程序设计5.7分枝程序设计5.8循环程序设计5.9自程序设计5.10实用程序设计示例5.11汇编语言程序的开发5.1概述例5-1A+BS=CA-B5.2汇编语言语句-(本节内容)伪指令和指令的通用格式:n1.名字字段(Name Field)131名字字段的三个注意事项 开头n2.操作符字段(Operator Field)保留字n3.操作数字段(Operand Field)n4.注释字段(Comment Field)5.3汇编语言数据-(本节内容)5.3.1
2、符号定义语句符号定义语句5.3.2数据定义语句数据定义语句5.3.3数据数据5.3.4运算符运算符5.3 汇编语言数据 5.3.1符号定义语句11.等值伪指令符号 EQU 表达式/符号(1)常数表达式(2)地址表达式(3)变量名、标号、或指令助记符的化名2.等号伪指令符号=表达式/符号(1)将符号重新定义(2)除指令外将变量名或标号起化名5.3 汇编语言数据 5.3.1符号定义语句21.等值伪指令符号 EQU 表达式/符号2.等号伪指令符号=表达式/符号上述两者之间的区别:1.等号伪指令可以重新定义符号2.等号伪指令不可以重新定义汇编指令,EQU可以。5.3 汇编语言数据-5.3.2数据定义语
3、句-使用格式DB变量名 DW 表达式1,表达式2DD5.3 汇编语言数据-5.3.2数据定义语句段属性变量的三个属性:偏移量属性类型属性1.数值表达式表达式的类型2.?表达式3.字符串表达式4.带DUP的表达式5.3.2数据定义语句-表达式使用11.数值表达式例:ageDB50age1DB12H,34H,56Hdata1DW1234H,2345Hdata2DD4567H,6789H5.3.2数据定义语句-表达式使用22.?表达式例:ageDB?age1DB?,?,?data1DW?,?data2DD?,?5.3.2数据定义语句-表达式使用33.字符串表达式(DB256,DW/DD12个)例:n
4、ame1DBabcdefname2DBzhang,wang,liname3DWto,jename4DDma,le5.3.2数据定义语句-表达式使用44.带DUP表达式例:DB变量名DW表达式1DUP(表达式2)DDDUP可以嵌套5.3汇编语言数据-5.3.3数据11.数值常数数值常数 二、八、十、十六进制二、八、十、十六进制2.字符常数字符常数(1)立即数 常数的应用常数的应用(2)位移量(3)伪指令的赋值一、常数一、常数5.3汇编语言数据-5.3.3数据2二、寄存器操作数三、存贮器操作数1.变量(1)变量名地址(2)变量的地址 变量名 DW/DD 另个变量名此时存的是地址5.3汇编语言数据-
5、5.3.3数据32.标号(1)段属性标号的三个属性 (2)偏移量属性 near(3)类型属性 far类型属性可以用label 来设置,如果不设置的话,有默认属性5.3汇编语言数据-5.3.3数据4Label的使用a.与指令语句连用例:sub1_FARLabelfar sub1:MOVAX,789AHb.与数据定义语句连用例:DA_W2LabelWORD DA_W1DB10H DUP(12H,34H)5.3汇编语言数据-5.3.4运算符1.算术运算符5.3汇编语言数据-5.3.4运算符2.逻辑运算符5.3汇编语言数据-5.3.4运算符3.关系运算符5.3汇编语言数据-5.3.4运算符4.数值返回
6、运算符(1)SEG和OFFSET运算符(2)TYPE运算符(3)LENGTH运算符和SIZE运算符5.3汇编语言数据-5.3.4运算符5.属性运算符PTR6.运算符优先级5.4伪指令语句(内容)5.4.1段定义语句5.4.2过程定义语句5.4.3定位语句和位置计数器5.4.4偶地址控制语句5.4.5程序标题语句5.4.1段定义语句-一、段定义伪指令一、段定义伪指令(SEGMENT/END)1.段名(必选)2.定位类型(可选)3.组合类型(可选)4.类别名(可选)5.4.1段定义语句-2.定位类型1.PAGE2.PARA3.WORD4.BYTE5.4.1段定义语句-3.组合类型1.NONE(默认
7、)2.PUBLIC3.COMMON4.STACK5.AT表达式6.MEMORY5.4.1段定义语句-4.类别名必须用单引号括起来,在连接处理时,LINK把类别名相同的段放在连续的存储区,他们仍是各自独立的段5.4.1段定义语句二、段寻址伪指令ASSUME 段寄存器名:段名,段寄存器名:段名.ASSUME 段寄存器名:nothingASSUME nothing5.4.1段定义语句三、段寄存器的加载1.DS和ES的加载2.SS的加载3.CS的加载(1)END加载起始地址(2)JMP、CALL、RET指令(1)自动加载)自动加载(2)执行程序)执行程序5.4.2过程定义语句使用格式:过程名PROCN
8、EAR/FARRET.过程名ENDP5.4.3定位语句和位置计数器使用格式:$ORG表达式5.4.4偶地址控制语句使用格式:EVEN5.4.5程序标题语句P193Title 文本列表文件的每一页的第一行都显示这个标题5.5宏指令语句(内容)1.宏定义2.宏调用3.宏展开5.6顺序程序设计-例5-2(1)10*(X+Y)-3*(Z-1)F=X+Y+Z5.6顺序程序设计-例5-2(2)TITLE EXAMPLE PROGRAMDATASEGMENTVARXDW123HVARYDW456HVARZDW789HF1DW?F2DW?DATAENDS5.6顺序程序设计-例5-2(3)STACK1SEGME
9、NTDW20HDUP(0)STACK1ENDS5.6顺序程序设计-例5-2(4)CODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1BEGIN:MOVAX,DATA MOVDS,AX5.6顺序程序设计-例5-2(5)MOVAX,VARXADDAX,VARYMOVBX,10MULBXMOVBX,VARZDECBXMOVCX,BXSALBX,1ADDBX,CXSUBAX,BX5.6顺序程序设计-例5-2(6)MOVBX,VARXADDBX,VARYADDBX,VARZXORDX,DXDIVBXMOVF1,AXMOVF2,DXMOVAH,4CHINT21HCODEE
10、NDSENDBEGIN软中断软中断INT 21H5.6顺序程序设计-两种退出用户程序的办法两种退出用户程序的办法CODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1PROC1PROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXRETCODEENDSENDPROC15.6顺序程序设计-例5-3(1)TITLETABLELOOK_UPDATASEGMENTTABLE DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46HHEX DB4ASCI
11、DB?DATAENDS5.6顺序程序设计-例5-3(2)STACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDS5.6顺序程序设计-例5-3(3)CODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AXMOVBX,OFFSET TABLEADDBL,HEXMOVAL,BXMOVASCI,AL5.6顺序程序设计-例5-3(4)MOVAH,4CHINT21HCODEENDSENDBEGINXLAT指令:指令:XLAT 表首址表首址 或或 XLAT 默认默认bx,al两寄存器两寄存器5.6顺序程序设计-例5-3(5
12、)BEGIN:MOVAX,DATAMOVDS,AXLEABX,TABLEMOVAL,HEXXLATTABLEMOVASCI,ALMOVAH,4CHINT21H5.7 分支程序设计5.7.1转移指令(1)5.7.1转移指令一、无条件转移指令 JMP 目标1.直接寻址方式2.间接寻址方式5.7 分支程序设计5.7.1转移指令(2)1.直接寻址方式(段内转移)5.7 分支程序设计5.7.1转移指令(3)1.直接寻址方式(段间转移)5.7 分支程序设计5.7.1转移指令(4)2.间接寻址方式a.段内转移(间接)例:JMP CXJMP WORDPTRBXb.段间转移(间接)JMP DWORD PTRBX
13、5.7 分支程序设计5.7.1转移指令(4)5.7.1转移指令二、条件转移指令1.简单条件转移指令2.无符号数条件转移指令3.带符号数条件转移指令5.7 分支程序设计5.7.1转移指令(5)1.简单条件转移指令5.7 分支程序设计5.7.1转移指令(6)2.无符号数条件转移指令5.7 分支程序设计5.7.1转移指令(7)3.带符号数条件转移指令5.7 分支程序设计5.7.2分支程序设计(分支程序设计(1)5.7.2分支程序设计分支程序设计一、直接用条件转移指令实现程序分支一、直接用条件转移指令实现程序分支二、用跳转表实现多路分支二、用跳转表实现多路分支5.7 分支程序设计5.7.2分支程序设计(分支程序设计(1)一、直接用条件转移指令实现程序分支一、直接用条件转移指令实现程序分支一、直接用条件转移指令实现程序分支一、直接用条件转移指令实现程序分支5.7 分支程序设计5.7.2分支程序设计(分支程序设计(1)5.7 分支程序设计5.7.2分支程序设计(分支程序设计(1)二、用跳转表实现多路分支二、用跳转表实现多路分支
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。