第五章汇编语言程序设计概要.ppt_第1页
第五章汇编语言程序设计概要.ppt_第2页
第五章汇编语言程序设计概要.ppt_第3页
第五章汇编语言程序设计概要.ppt_第4页
第五章汇编语言程序设计概要.ppt_第5页
免费预览已结束,剩余61页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章汇编语言程序设计,掌 握:汇编语言程序中符号、数据、段结构和过程等的定义方法。 掌 握:汇编语言程序中段寄存器的各种加载方法。 掌 握:无条件转移指令、条件转移指令、循环控制指令、子程序 的调用指令和返回指令的格式与使用。 掌 握:顺序、分支、循环和子程序结构的程序设计方法与技术。理 解:汇编语言程序中三种语句的格式、特点和作用。 理 解:汇编语言程序中使用的各种运算符,对常用的运算符应会 正确使用。 理 解:在数值运算、串操作运算和代码转换中程序设计实例。 了 解:宏定义的定义和使用。,学习目标:,第五章的内容,5.1概述 5.2汇编语言语句 5.3汇编语言数据 5.4伪指令语句 5.

2、5宏指令语句 5.6顺序程序设计,5.7分枝程序设计 5.8循环程序设计 5.9自程序设计 5.10实用程序设计示例 5.11汇编语言程序的开发,5.1概述,例5-1 A+B S=C A-B,5.2汇编语言语句-(本节内容),伪指令和指令的通用格式均由四个字段组成: 名字 操作符 操作数 ;4.注释,5.2汇编语言语句-(本节内容),各字段说明: 1.名字字段(Name Field)131 名字字段的三个注意事项开头 2.操作符字段(Operator Field)保留字 3.操作数字段(Operand Field) 4.注释字段(Comment Field),5.3汇编语言数据-(本节内容),

3、5.3.1符号定义语句 5.3.2数据定义语句 5.3.3数据 5.3.4运算符,5.3 汇编语言数据 5.3.1符号定义语句1,1.等值伪指令符号 EQU 表达式/符号 (1)常数表达式 (2)地址表达式 (3)变量名、标号、或指令助记符的化名 2.等号伪指令符号=表达式/符号 (1)将符号重新定义 (2)除指令外将变量名或标号起化名,5.3.1符号定义语句,3. 符号定义伪指令 基本形式: 符号名EQU表达式 符号名 = 常数表达式 功能:给表达式指定一个等价的符号名。 说明: (1)= 后的表达式只能是常数,对于字符或字符串,汇编时按整数处理。例如: COUNT=20 MOV CX, C

4、OUNT; 等价于MOV CX, 20 (2)EQU后的表达式可以是数值、字符串、寄存器名、指令助记符等。 (3)EQU不能重复定义,而 = 可重复定义,其作用域从定义点到重新定义之前。,5.3 汇编语言数据 5.3.1符号定义语句2,1.等值伪指令符号 EQU 表达式/符号 2.等号伪指令符号=表达式/符号 上述两者之间的区别: 1.等号伪指令可以重新定义符号 2.等号伪指令不可以重新定义汇编指令,EQU可以。,5.3 汇编语言数据5.3.2数据定义语句,变量定义伪指令 变量定义伪指令用来为数据分配内存空间,并设置相应内存单元的初始值。 形式: 变量名变量定义符 操作数,操作数 其中,变量名

5、是一个符号地址,表示其后操作数的首地址, 变量名为可选项,给出变量名只是为了按名存取其对应的内存单元。,5.3 汇编语言数据5.3.2数据定义语句,变量定义符主要包括下列几种: DB(Define Byte):定义字节,后面的每个操作数占1个字节。 DW(Define Word):定义字,后面的每个操作数占1个字。 DD(Define Dword):定义双字,后面的每个操作数占2个字。,5.3 汇编语言数据5.3.2数据定义语句,操作数可以是常数、用EQU或=定义的符号常量、表达式、?和DUP子句等。 其中,?表示只保留内存空间,未定义初始值。DUP子句的格式为: 重复次数 DUP (操作数,

6、操作数),5.3 汇编语言数据-5.3.2数据定义语句,段属性 变量的三个属性:偏移量属性 类型属性 1.数值表达式 表达式的类型:2.?表达式 3.字符串表达式 4.带DUP的表达式,5.3.2数据定义语句-表达式使用1,1.数值表达式 例: ageDB50 age1DB12H,34H,56H data1DW1234H,2345H data2DD4567H,6789H,5.3.2数据定义语句-表达式使用2,2.?表达式 例: ageDB? age1DB?,?,? data1DW?,? data2DD?,?,5.3.2数据定义语句-表达式使用3,3.字符串表达式(DB256,DW/DD12个)

7、 例: name1DBabcdef name2DBzhang,wang,li name3DWto,je name4DDma,le,5.3.2数据定义语句-表达式使用4,4.带DUP表达式 例: DB 变量名DW表达式1DUP(表达式2) DD DUP可以嵌套,5.3汇编语言数据- 5.3.3数据1,1.数值常数二、八、十、十六进制 2.字符常数 (1)立即数 常数的应用(2)位移量 (3)伪指令的赋值,一、常数,5.3汇编语言数据- 5.3.3数据2,二、寄存器操作数: 通用寄存器和段寄存器的内容 三、存贮器操作数: 存贮单元中的内容 1.变量 (1)变量名地址 (2)变量的地址 变量名 DW

8、/DD 另个变量名 此时存的是地址,5.3汇编语言数据- 5.3.3数据3,2.标号(1)段属性 标号的三个属性 (2)偏移量属性 near (3)类型属性 far 类型属性可以用label 来设置,如果不设置的话,有默认属性,5.3汇编语言数据- 5.3.3数据4,Label的使用 a.与指令语句连用 例:sub1_FARLabelfar sub1:MOVAX,789AH b.与数据定义语句连用 例:DA_W2LabelWORD DA_W1DB10H DUP(12H,34H),5.3汇编语言数据- 5.3.4运算符,1.算术运算符,5.3汇编语言数据- 5.3.4运算符,2.逻辑运算符,5.

9、3汇编语言数据- 5.3.4运算符,3.关系运算符,5.3汇编语言数据- 5.3.4运算符,4.数值返回运算符 (1)SEG和OFFSET运算符 (2)TYPE运算符 (3)LENGTH运算符和SIZE运算符,5.3汇编语言数据- 5.3.4运算符,5.属性运算符PTR 6.运算符优先级,5.4.1段定义语句一、段定义伪指令,段定义由SEGMENT与ENDS伪指令实现,基本形式如下: 段名SEGMENT STACK USE16 段名 ENDS 其中,STACK仅用于堆栈段。USE16指出使用16位段。 在实模式下,只能使用16位段,而32位段只能用于保护模式程序。 在实模式下,如果要使用32位

10、指令,还必须在段定义时给出USE16。 段名作为操作数出现在指令中时,MASM将其视为立即数,表示段地址。,5.4.1段定义语句1.段名 (必须有)2.定位类型,1.PAGE 2.PARA 3.WORD 4.BYTE,5.4.1段定义语句 3.组合类型,1.NONE(默认) 2.PUBLIC 3.COMMON 4.STACK 5.AT表达式 6.MEMORY,5.4.1段定义语句 4.类别名,必须用单引号括起来,在连接处理时,LINK把类别名相同的段放在连续的存储区,他们仍是各自独立的段,5.4.1段定义语句二、段寻址伪指令,格式: ASSUME 段寄存器名:段名,段寄存器名:段名. ASSU

11、ME 段寄存器名:nothing,ASSUME nothing,5.4.1段定义语句三、段寄存器的加载,1.DS和ES的加载:借助通用寄存器传送段基值给DS和ES 2.SS的加载 3.CS的加载 (1)END加载起始地址 (2)JMP、CALL、RET指令,(1)自动加载 (2)执行程序,5.4.2过程定义语句,使用格式(构造子程序) 过程名PROCNEAR/FAR RET . 过程名ENDP,5.4.3定位语句和位置计数器,使用格式(记载汇编时的当前偏移量) ORG表达式,5.4.4偶地址控制语句,使用格式: EVEN 把位置计数器调整为偶数,5.4.5程序标题语句P193,使用格式 Tit

12、le 文本 列表文件的每一页的第一行都显示这个标题,5.5宏指令语句(内容),1.宏定义 2.宏调用 3.宏展开,5.6顺序程序设计-例5-2(1),10*(X+Y)-3*(Z-1) F= X+Y+Z,5.6顺序程序设计-例5-2(2),TITLE EXAMPLE PROGRAM DATASEGMENT VARXDW123H VARYDW456H VARZDW789H F1DW? F2DW? DATAENDS,5.6顺序程序设计-例5-2(3),STACK1SEGMENT DW20HDUP(0) STACK1ENDS,5.6顺序程序设计-例5-2(4),CODESEGMENT ASSUME C

13、S:CODE,DS:DATA,SS:STACK1 BEGIN:MOVAX,DATA MOVDS,AX,5.6顺序程序设计-例5-2(5),MOVAX,VARX ADDAX,VARY MOVBX,10 MULBX MOVBX,VARZ DECBX MOVCX,BX SALBX,1 ADDBX,CX SUBAX,BX,5.6顺序程序设计-例5-2(6),MOVBX,VARX ADDBX,VARY ADDBX,VARZ XORDX,DX DIVBX MOVF1,AX MOVF2,DX MOVAH,4CH INT21H CODEENDS ENDBEGIN,软中断INT 21H,5.6顺序程序设计-两种

14、退出用户程序的办法,CODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 PROC1PROCFAR PUSHDS XORAX,AX PUSHAX MOVAX,DATA MOVDS,AX RET CODEENDS ENDPROC1,5.6顺序程序设计-例5-3(1),TITLETABLELOOK_UP DATASEGMENT TABLE DB30H,31H,32H,33H,34H,35H,36H,37H DB38H,39H,41H,42H,43H,44H,45H,46H HEX DB4 ASCI DB? DATAENDS,5.6顺序程序设计-例5-3(2),S

15、TACK1SEGMENTPARASTACK DW20HDUP(0) STACK1ENDS,5.6顺序程序设计-例5-3(3),CODESEGMENT ASSUMECS:CODE,DS:DATA BEGIN:MOVAX,DATA MOVDS,AX MOVBX,OFFSET TABLE ADDBL,HEX MOVAL,BX MOVASCI,AL,5.6顺序程序设计-例5-3(4),MOVAH,4CH INT21H CODEENDS ENDBEGIN XLAT指令: XLAT 表首址 或XLAT 默认bx,al两寄存器,5.6顺序程序设计-例5-3(5),BEGIN:MOVAX,DATA MOVDS

16、,AX LEABX,TABLE MOVAL,HEX XLATTABLE MOVASCI,AL MOVAH,4CH INT21H,5.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 WORDPTRBX b.段间转移(间接) JMP DWORD PTRBX,5.7分支程序设计5.7.1转移指令(4),5.7.1转移指令 二、条件转移指令 1.简单条件转移指令 2.无符号数条件转移指令 3.带符号数条件转移指令,5.7分支程序设计5.7.1转移指令(5),1.简单条件转移指令,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论